• 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        LazyKeyword = 156,
265        UndefinedKeyword = 157,
266        UniqueKeyword = 158,
267        UnknownKeyword = 159,
268        FromKeyword = 160,
269        GlobalKeyword = 161,
270        BigIntKeyword = 162,
271        OverrideKeyword = 163,
272        OfKeyword = 164,
273        QualifiedName = 165,
274        ComputedPropertyName = 166,
275        TypeParameter = 167,
276        Parameter = 168,
277        Decorator = 169,
278        PropertySignature = 170,
279        PropertyDeclaration = 171,
280        MethodSignature = 172,
281        MethodDeclaration = 173,
282        ClassStaticBlockDeclaration = 174,
283        Constructor = 175,
284        GetAccessor = 176,
285        SetAccessor = 177,
286        CallSignature = 178,
287        ConstructSignature = 179,
288        IndexSignature = 180,
289        TypePredicate = 181,
290        TypeReference = 182,
291        FunctionType = 183,
292        ConstructorType = 184,
293        TypeQuery = 185,
294        TypeLiteral = 186,
295        ArrayType = 187,
296        TupleType = 188,
297        OptionalType = 189,
298        RestType = 190,
299        UnionType = 191,
300        IntersectionType = 192,
301        ConditionalType = 193,
302        InferType = 194,
303        ParenthesizedType = 195,
304        ThisType = 196,
305        TypeOperator = 197,
306        IndexedAccessType = 198,
307        MappedType = 199,
308        LiteralType = 200,
309        NamedTupleMember = 201,
310        TemplateLiteralType = 202,
311        TemplateLiteralTypeSpan = 203,
312        ImportType = 204,
313        ObjectBindingPattern = 205,
314        ArrayBindingPattern = 206,
315        BindingElement = 207,
316        ArrayLiteralExpression = 208,
317        ObjectLiteralExpression = 209,
318        PropertyAccessExpression = 210,
319        ElementAccessExpression = 211,
320        CallExpression = 212,
321        NewExpression = 213,
322        TaggedTemplateExpression = 214,
323        TypeAssertionExpression = 215,
324        ParenthesizedExpression = 216,
325        FunctionExpression = 217,
326        ArrowFunction = 218,
327        EtsComponentExpression = 219,
328        DeleteExpression = 220,
329        TypeOfExpression = 221,
330        VoidExpression = 222,
331        AwaitExpression = 223,
332        PrefixUnaryExpression = 224,
333        PostfixUnaryExpression = 225,
334        BinaryExpression = 226,
335        ConditionalExpression = 227,
336        TemplateExpression = 228,
337        YieldExpression = 229,
338        SpreadElement = 230,
339        ClassExpression = 231,
340        OmittedExpression = 232,
341        ExpressionWithTypeArguments = 233,
342        AsExpression = 234,
343        NonNullExpression = 235,
344        MetaProperty = 236,
345        SyntheticExpression = 237,
346        SatisfiesExpression = 238,
347        TemplateSpan = 239,
348        SemicolonClassElement = 240,
349        Block = 241,
350        EmptyStatement = 242,
351        VariableStatement = 243,
352        ExpressionStatement = 244,
353        IfStatement = 245,
354        DoStatement = 246,
355        WhileStatement = 247,
356        ForStatement = 248,
357        ForInStatement = 249,
358        ForOfStatement = 250,
359        ContinueStatement = 251,
360        BreakStatement = 252,
361        ReturnStatement = 253,
362        WithStatement = 254,
363        SwitchStatement = 255,
364        LabeledStatement = 256,
365        ThrowStatement = 257,
366        TryStatement = 258,
367        DebuggerStatement = 259,
368        VariableDeclaration = 260,
369        VariableDeclarationList = 261,
370        FunctionDeclaration = 262,
371        ClassDeclaration = 263,
372        StructDeclaration = 264,
373        InterfaceDeclaration = 265,
374        TypeAliasDeclaration = 266,
375        EnumDeclaration = 267,
376        ModuleDeclaration = 268,
377        ModuleBlock = 269,
378        CaseBlock = 270,
379        NamespaceExportDeclaration = 271,
380        ImportEqualsDeclaration = 272,
381        ImportDeclaration = 273,
382        ImportClause = 274,
383        NamespaceImport = 275,
384        NamedImports = 276,
385        ImportSpecifier = 277,
386        ExportAssignment = 278,
387        ExportDeclaration = 279,
388        NamedExports = 280,
389        NamespaceExport = 281,
390        ExportSpecifier = 282,
391        MissingDeclaration = 283,
392        ExternalModuleReference = 284,
393        JsxElement = 285,
394        JsxSelfClosingElement = 286,
395        JsxOpeningElement = 287,
396        JsxClosingElement = 288,
397        JsxFragment = 289,
398        JsxOpeningFragment = 290,
399        JsxClosingFragment = 291,
400        JsxAttribute = 292,
401        JsxAttributes = 293,
402        JsxSpreadAttribute = 294,
403        JsxExpression = 295,
404        CaseClause = 296,
405        DefaultClause = 297,
406        HeritageClause = 298,
407        CatchClause = 299,
408        AssertClause = 300,
409        AssertEntry = 301,
410        ImportTypeAssertionContainer = 302,
411        PropertyAssignment = 303,
412        ShorthandPropertyAssignment = 304,
413        SpreadAssignment = 305,
414        EnumMember = 306,
415        UnparsedPrologue = 307,
416        UnparsedPrepend = 308,
417        UnparsedText = 309,
418        UnparsedInternalText = 310,
419        UnparsedSyntheticReference = 311,
420        SourceFile = 312,
421        Bundle = 313,
422        UnparsedSource = 314,
423        InputFiles = 315,
424        JSDocTypeExpression = 316,
425        JSDocNameReference = 317,
426        JSDocMemberName = 318,
427        JSDocAllType = 319,
428        JSDocUnknownType = 320,
429        JSDocNullableType = 321,
430        JSDocNonNullableType = 322,
431        JSDocOptionalType = 323,
432        JSDocFunctionType = 324,
433        JSDocVariadicType = 325,
434        JSDocNamepathType = 326,
435        JSDoc = 327,
436        /** @deprecated Use SyntaxKind.JSDoc */
437        JSDocComment = 327,
438        JSDocText = 328,
439        JSDocTypeLiteral = 329,
440        JSDocSignature = 330,
441        JSDocLink = 331,
442        JSDocLinkCode = 332,
443        JSDocLinkPlain = 333,
444        JSDocTag = 334,
445        JSDocAugmentsTag = 335,
446        JSDocImplementsTag = 336,
447        JSDocAuthorTag = 337,
448        JSDocDeprecatedTag = 338,
449        JSDocClassTag = 339,
450        JSDocPublicTag = 340,
451        JSDocPrivateTag = 341,
452        JSDocProtectedTag = 342,
453        JSDocReadonlyTag = 343,
454        JSDocOverrideTag = 344,
455        JSDocCallbackTag = 345,
456        JSDocEnumTag = 346,
457        JSDocParameterTag = 347,
458        JSDocReturnTag = 348,
459        JSDocThisTag = 349,
460        JSDocTypeTag = 350,
461        JSDocTemplateTag = 351,
462        JSDocTypedefTag = 352,
463        JSDocSeeTag = 353,
464        JSDocPropertyTag = 354,
465        SyntaxList = 355,
466        NotEmittedStatement = 356,
467        PartiallyEmittedExpression = 357,
468        CommaListExpression = 358,
469        MergeDeclarationMarker = 359,
470        EndOfDeclarationMarker = 360,
471        SyntheticReferenceExpression = 361,
472        Count = 362,
473        FirstAssignment = 63,
474        LastAssignment = 78,
475        FirstCompoundAssignment = 64,
476        LastCompoundAssignment = 78,
477        FirstReservedWord = 81,
478        LastReservedWord = 117,
479        FirstKeyword = 81,
480        LastKeyword = 164,
481        FirstFutureReservedWord = 118,
482        LastFutureReservedWord = 126,
483        FirstTypeNode = 181,
484        LastTypeNode = 204,
485        FirstPunctuation = 18,
486        LastPunctuation = 78,
487        FirstToken = 0,
488        LastToken = 164,
489        FirstTriviaToken = 2,
490        LastTriviaToken = 7,
491        FirstLiteralToken = 8,
492        LastLiteralToken = 14,
493        FirstTemplateToken = 14,
494        LastTemplateToken = 17,
495        FirstBinaryOperator = 29,
496        LastBinaryOperator = 78,
497        FirstStatement = 243,
498        LastStatement = 259,
499        FirstNode = 165,
500        FirstJSDocNode = 316,
501        LastJSDocNode = 354,
502        FirstJSDocTagNode = 334,
503        LastJSDocTagNode = 354,
504    }
505    export type TriviaSyntaxKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ShebangTrivia | SyntaxKind.ConflictMarkerTrivia;
506    export type LiteralSyntaxKind = SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral;
507    export type PseudoLiteralSyntaxKind = SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail;
508    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;
509    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.LazyKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.YieldKeyword;
510    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;
511    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;
512    export type TokenSyntaxKind = SyntaxKind.Unknown | SyntaxKind.EndOfFileToken | TriviaSyntaxKind | LiteralSyntaxKind | PseudoLiteralSyntaxKind | PunctuationSyntaxKind | SyntaxKind.Identifier | KeywordSyntaxKind;
513    export type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFileToken | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken;
514    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;
515    export enum NodeFlags {
516        None = 0,
517        Let = 1,
518        Const = 2,
519        NestedNamespace = 4,
520        Synthesized = 8,
521        Namespace = 16,
522        OptionalChain = 32,
523        ExportContext = 64,
524        ContainsThis = 128,
525        HasImplicitReturn = 256,
526        HasExplicitReturn = 512,
527        GlobalAugmentation = 1024,
528        HasAsyncFunctions = 2048,
529        DisallowInContext = 4096,
530        YieldContext = 8192,
531        DecoratorContext = 16384,
532        AwaitContext = 32768,
533        DisallowConditionalTypesContext = 65536,
534        ThisNodeHasError = 131072,
535        JavaScriptFile = 262144,
536        ThisNodeOrAnySubNodesHasError = 524288,
537        HasAggregatedChildData = 1048576,
538        JSDoc = 8388608,
539        JsonFile = 67108864,
540        EtsContext = 1073741824,
541        BlockScoped = 3,
542        ReachabilityCheckFlags = 768,
543        ReachabilityAndEmitFlags = 2816,
544        ContextFlags = 1124462592,
545        TypeExcludesFlags = 40960,
546    }
547    export enum EtsFlags {
548        None = 0,
549        StructContext = 2,
550        EtsExtendComponentsContext = 4,
551        EtsStylesComponentsContext = 8,
552        EtsBuildContext = 16,
553        EtsBuilderContext = 32,
554        EtsStateStylesContext = 64,
555        EtsComponentsContext = 128,
556        EtsNewExpressionContext = 256,
557        UICallbackContext = 512,
558        SyntaxComponentContext = 1024
559    }
560    export enum ModifierFlags {
561        None = 0,
562        Export = 1,
563        Ambient = 2,
564        Public = 4,
565        Private = 8,
566        Protected = 16,
567        Static = 32,
568        Readonly = 64,
569        Accessor = 128,
570        Abstract = 256,
571        Async = 512,
572        Default = 1024,
573        Const = 2048,
574        HasComputedJSDocModifiers = 4096,
575        Deprecated = 8192,
576        Override = 16384,
577        In = 32768,
578        Out = 65536,
579        Decorator = 131072,
580        HasComputedFlags = 536870912,
581        AccessibilityModifier = 28,
582        ParameterPropertyModifier = 16476,
583        NonPublicAccessibilityModifier = 24,
584        TypeScriptModifier = 117086,
585        ExportDefault = 1025,
586        All = 258047,
587        Modifier = 126975
588    }
589    export enum JsxFlags {
590        None = 0,
591        /** An element from a named property of the JSX.IntrinsicElements interface */
592        IntrinsicNamedElement = 1,
593        /** An element inferred from the string index signature of the JSX.IntrinsicElements interface */
594        IntrinsicIndexedElement = 2,
595        IntrinsicElement = 3
596    }
597    export interface Node extends ReadonlyTextRange {
598        readonly kind: SyntaxKind;
599        readonly flags: NodeFlags;
600        readonly parent: Node;
601        symbol: Symbol;
602        locals?: SymbolTable;
603        skipCheck?: boolean;
604    }
605    export interface JSDocContainer {
606    }
607    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;
608    export type HasType = SignatureDeclaration | VariableDeclaration | ParameterDeclaration | PropertySignature | PropertyDeclaration | TypePredicateNode | ParenthesizedTypeNode | TypeOperatorNode | MappedTypeNode | AssertionExpression | TypeAliasDeclaration | JSDocTypeExpression | JSDocNonNullableType | JSDocNullableType | JSDocOptionalType | JSDocVariadicType;
609    export type HasTypeArguments = CallExpression | NewExpression | TaggedTemplateExpression | JsxOpeningElement | JsxSelfClosingElement;
610    export type HasInitializer = HasExpressionInitializer | ForStatement | ForInStatement | ForOfStatement | JsxAttribute;
611    export type HasExpressionInitializer = VariableDeclaration | ParameterDeclaration | BindingElement | PropertyDeclaration | PropertyAssignment | EnumMember;
612    export type HasDecorators = ParameterDeclaration | PropertyDeclaration | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | ClassExpression | ClassDeclaration | StructDeclaration | FunctionDeclaration;
613    export type HasIllegalDecorators = PropertyAssignment | ShorthandPropertyAssignment | FunctionDeclaration | ConstructorDeclaration | IndexSignatureDeclaration | ClassStaticBlockDeclaration | MissingDeclaration | VariableStatement | InterfaceDeclaration | TypeAliasDeclaration | EnumDeclaration | ModuleDeclaration | ImportEqualsDeclaration | ImportDeclaration | NamespaceExportDeclaration | ExportDeclaration | ExportAssignment;
614    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;
615    export interface NodeArray<T extends Node> extends ReadonlyArray<T>, ReadonlyTextRange {
616        readonly hasTrailingComma: boolean;
617    }
618    export interface Token<TKind extends SyntaxKind> extends Node {
619        readonly kind: TKind;
620    }
621    export type EndOfFileToken = Token<SyntaxKind.EndOfFileToken> & JSDocContainer;
622    export interface PunctuationToken<TKind extends PunctuationSyntaxKind> extends Token<TKind> {
623    }
624    export type DotToken = PunctuationToken<SyntaxKind.DotToken>;
625    export type DotDotDotToken = PunctuationToken<SyntaxKind.DotDotDotToken>;
626    export type QuestionToken = PunctuationToken<SyntaxKind.QuestionToken>;
627    export type ExclamationToken = PunctuationToken<SyntaxKind.ExclamationToken>;
628    export type ColonToken = PunctuationToken<SyntaxKind.ColonToken>;
629    export type EqualsToken = PunctuationToken<SyntaxKind.EqualsToken>;
630    export type AsteriskToken = PunctuationToken<SyntaxKind.AsteriskToken>;
631    export type EqualsGreaterThanToken = PunctuationToken<SyntaxKind.EqualsGreaterThanToken>;
632    export type PlusToken = PunctuationToken<SyntaxKind.PlusToken>;
633    export type MinusToken = PunctuationToken<SyntaxKind.MinusToken>;
634    export type QuestionDotToken = PunctuationToken<SyntaxKind.QuestionDotToken>;
635    export interface KeywordToken<TKind extends KeywordSyntaxKind> extends Token<TKind> {
636    }
637    export type AssertsKeyword = KeywordToken<SyntaxKind.AssertsKeyword>;
638    export type AssertKeyword = KeywordToken<SyntaxKind.AssertKeyword>;
639    export type AwaitKeyword = KeywordToken<SyntaxKind.AwaitKeyword>;
640    /** @deprecated Use `AwaitKeyword` instead. */
641    export type AwaitKeywordToken = AwaitKeyword;
642    /** @deprecated Use `AssertsKeyword` instead. */
643    export type AssertsToken = AssertsKeyword;
644    export interface ModifierToken<TKind extends ModifierSyntaxKind> extends KeywordToken<TKind> {
645    }
646    export type AbstractKeyword = ModifierToken<SyntaxKind.AbstractKeyword>;
647    export type AccessorKeyword = ModifierToken<SyntaxKind.AccessorKeyword>;
648    export type AsyncKeyword = ModifierToken<SyntaxKind.AsyncKeyword>;
649    export type ConstKeyword = ModifierToken<SyntaxKind.ConstKeyword>;
650    export type DeclareKeyword = ModifierToken<SyntaxKind.DeclareKeyword>;
651    export type DefaultKeyword = ModifierToken<SyntaxKind.DefaultKeyword>;
652    export type ExportKeyword = ModifierToken<SyntaxKind.ExportKeyword>;
653    export type InKeyword = ModifierToken<SyntaxKind.InKeyword>;
654    export type PrivateKeyword = ModifierToken<SyntaxKind.PrivateKeyword>;
655    export type ProtectedKeyword = ModifierToken<SyntaxKind.ProtectedKeyword>;
656    export type PublicKeyword = ModifierToken<SyntaxKind.PublicKeyword>;
657    export type ReadonlyKeyword = ModifierToken<SyntaxKind.ReadonlyKeyword>;
658    export type OutKeyword = ModifierToken<SyntaxKind.OutKeyword>;
659    export type OverrideKeyword = ModifierToken<SyntaxKind.OverrideKeyword>;
660    export type StaticKeyword = ModifierToken<SyntaxKind.StaticKeyword>;
661    /** @deprecated Use `ReadonlyKeyword` instead. */
662    export type ReadonlyToken = ReadonlyKeyword;
663    export type Modifier = AbstractKeyword | AccessorKeyword | AsyncKeyword | ConstKeyword | DeclareKeyword | DefaultKeyword | ExportKeyword | InKeyword | PrivateKeyword | ProtectedKeyword | PublicKeyword | OutKeyword | OverrideKeyword | ReadonlyKeyword | StaticKeyword;
664    export type ModifierLike = Modifier | Decorator;
665    export type AccessibilityModifier = PublicKeyword | PrivateKeyword | ProtectedKeyword;
666    export type ParameterPropertyModifier = AccessibilityModifier | ReadonlyKeyword;
667    export type ClassMemberModifier = AccessibilityModifier | ReadonlyKeyword | StaticKeyword | AccessorKeyword;
668    export type ModifiersArray = NodeArray<Modifier>;
669    export enum GeneratedIdentifierFlags {
670        None = 0,
671        ReservedInNestedScopes = 8,
672        Optimistic = 16,
673        FileLevel = 32,
674        AllowNameSubstitution = 64
675    }
676    export interface Identifier extends PrimaryExpression, Declaration {
677        readonly kind: SyntaxKind.Identifier;
678        /**
679         * Prefer to use `id.unescapedText`. (Note: This is available only in services, not internally to the TypeScript compiler.)
680         * Text of identifier, but if the identifier begins with two underscores, this will begin with three.
681         */
682        readonly escapedText: __String;
683        readonly originalKeywordKind?: SyntaxKind;
684        isInJSDocNamespace?: boolean;
685    }
686    export interface TransientIdentifier extends Identifier {
687        resolvedSymbol: Symbol;
688    }
689    export interface QualifiedName extends Node {
690        readonly kind: SyntaxKind.QualifiedName;
691        readonly left: EntityName;
692        readonly right: Identifier;
693    }
694    export type EntityName = Identifier | QualifiedName;
695    export type PropertyName = Identifier | StringLiteral | NumericLiteral | ComputedPropertyName | PrivateIdentifier;
696    export type MemberName = Identifier | PrivateIdentifier;
697    export type DeclarationName = Identifier | PrivateIdentifier | StringLiteralLike | NumericLiteral | ComputedPropertyName | ElementAccessExpression | BindingPattern | EntityNameExpression;
698    export interface Declaration extends Node {
699        _declarationBrand: any;
700    }
701    export interface NamedDeclaration extends Declaration {
702        readonly name?: DeclarationName;
703    }
704    export interface DeclarationStatement extends NamedDeclaration, Statement {
705        readonly name?: Identifier | StringLiteral | NumericLiteral;
706    }
707    export interface ComputedPropertyName extends Node {
708        readonly kind: SyntaxKind.ComputedPropertyName;
709        readonly parent: Declaration;
710        readonly expression: Expression;
711    }
712    export interface PrivateIdentifier extends PrimaryExpression {
713        readonly kind: SyntaxKind.PrivateIdentifier;
714        readonly escapedText: __String;
715    }
716    export interface Decorator extends Node {
717        readonly kind: SyntaxKind.Decorator;
718        readonly parent: NamedDeclaration;
719        readonly expression: LeftHandSideExpression;
720    }
721    export interface TypeParameterDeclaration extends NamedDeclaration {
722        readonly kind: SyntaxKind.TypeParameter;
723        readonly parent: DeclarationWithTypeParameterChildren | InferTypeNode;
724        readonly modifiers?: NodeArray<Modifier>;
725        readonly name: Identifier;
726        /** Note: Consider calling `getEffectiveConstraintOfTypeParameter` */
727        readonly constraint?: TypeNode;
728        readonly default?: TypeNode;
729        expression?: Expression;
730    }
731    export interface SignatureDeclarationBase extends NamedDeclaration, JSDocContainer {
732        readonly kind: SignatureDeclaration["kind"];
733        readonly name?: PropertyName;
734        readonly typeParameters?: NodeArray<TypeParameterDeclaration> | undefined;
735        readonly parameters: NodeArray<ParameterDeclaration>;
736        readonly type?: TypeNode | undefined;
737    }
738    export type SignatureDeclaration = CallSignatureDeclaration | ConstructSignatureDeclaration | MethodSignature | IndexSignatureDeclaration | FunctionTypeNode | ConstructorTypeNode | JSDocFunctionType | FunctionDeclaration | MethodDeclaration | ConstructorDeclaration | AccessorDeclaration | FunctionExpression | ArrowFunction;
739    export interface CallSignatureDeclaration extends SignatureDeclarationBase, TypeElement {
740        readonly kind: SyntaxKind.CallSignature;
741    }
742    export interface ConstructSignatureDeclaration extends SignatureDeclarationBase, TypeElement {
743        readonly kind: SyntaxKind.ConstructSignature;
744    }
745    export type BindingName = Identifier | BindingPattern;
746    export interface VariableDeclaration extends NamedDeclaration, JSDocContainer {
747        readonly kind: SyntaxKind.VariableDeclaration;
748        readonly parent: VariableDeclarationList | CatchClause;
749        readonly name: BindingName;
750        readonly exclamationToken?: ExclamationToken;
751        readonly type?: TypeNode;
752        readonly initializer?: Expression;
753    }
754    export interface VariableDeclarationList extends Node {
755        readonly kind: SyntaxKind.VariableDeclarationList;
756        readonly parent: VariableStatement | ForStatement | ForOfStatement | ForInStatement;
757        readonly declarations: NodeArray<VariableDeclaration>;
758    }
759    export interface ParameterDeclaration extends NamedDeclaration, JSDocContainer {
760        readonly kind: SyntaxKind.Parameter;
761        readonly parent: SignatureDeclaration;
762        readonly modifiers?: NodeArray<ModifierLike>;
763        readonly dotDotDotToken?: DotDotDotToken;
764        readonly name: BindingName;
765        readonly questionToken?: QuestionToken;
766        readonly type?: TypeNode;
767        readonly initializer?: Expression;
768    }
769    export interface BindingElement extends NamedDeclaration {
770        readonly kind: SyntaxKind.BindingElement;
771        readonly parent: BindingPattern;
772        readonly propertyName?: PropertyName;
773        readonly dotDotDotToken?: DotDotDotToken;
774        readonly name: BindingName;
775        readonly initializer?: Expression;
776    }
777    export interface PropertySignature extends TypeElement, JSDocContainer {
778        readonly kind: SyntaxKind.PropertySignature;
779        readonly modifiers?: NodeArray<Modifier>;
780        readonly name: PropertyName;
781        readonly questionToken?: QuestionToken;
782        readonly type?: TypeNode;
783    }
784    export interface PropertyDeclaration extends ClassElement, JSDocContainer {
785        readonly kind: SyntaxKind.PropertyDeclaration;
786        readonly parent: ClassLikeDeclaration;
787        readonly modifiers?: NodeArray<ModifierLike>;
788        readonly name: PropertyName;
789        readonly questionToken?: QuestionToken;
790        readonly exclamationToken?: ExclamationToken;
791        readonly type?: TypeNode;
792        readonly initializer?: Expression;
793    }
794    export interface AutoAccessorPropertyDeclaration extends PropertyDeclaration {
795        _autoAccessorBrand: any;
796    }
797    export interface ObjectLiteralElement extends NamedDeclaration {
798        _objectLiteralBrand: any;
799        readonly name?: PropertyName;
800    }
801    /** Unlike ObjectLiteralElement, excludes JSXAttribute and JSXSpreadAttribute. */
802    export type ObjectLiteralElementLike = PropertyAssignment | ShorthandPropertyAssignment | SpreadAssignment | MethodDeclaration | AccessorDeclaration;
803    export interface PropertyAssignment extends ObjectLiteralElement, JSDocContainer {
804        readonly kind: SyntaxKind.PropertyAssignment;
805        readonly parent: ObjectLiteralExpression;
806        readonly name: PropertyName;
807        readonly initializer: Expression;
808    }
809    export interface ShorthandPropertyAssignment extends ObjectLiteralElement, JSDocContainer {
810        readonly kind: SyntaxKind.ShorthandPropertyAssignment;
811        readonly parent: ObjectLiteralExpression;
812        readonly name: Identifier;
813        readonly equalsToken?: EqualsToken;
814        readonly objectAssignmentInitializer?: Expression;
815    }
816    export interface SpreadAssignment extends ObjectLiteralElement, JSDocContainer {
817        readonly kind: SyntaxKind.SpreadAssignment;
818        readonly parent: ObjectLiteralExpression;
819        readonly expression: Expression;
820    }
821    export type VariableLikeDeclaration = VariableDeclaration | ParameterDeclaration | BindingElement | PropertyDeclaration | PropertyAssignment | PropertySignature | JsxAttribute | ShorthandPropertyAssignment | EnumMember | JSDocPropertyTag | JSDocParameterTag;
822    export interface PropertyLikeDeclaration extends NamedDeclaration {
823        readonly name: PropertyName;
824    }
825    export interface ObjectBindingPattern extends Node {
826        readonly kind: SyntaxKind.ObjectBindingPattern;
827        readonly parent: VariableDeclaration | ParameterDeclaration | BindingElement;
828        readonly elements: NodeArray<BindingElement>;
829    }
830    export interface ArrayBindingPattern extends Node {
831        readonly kind: SyntaxKind.ArrayBindingPattern;
832        readonly parent: VariableDeclaration | ParameterDeclaration | BindingElement;
833        readonly elements: NodeArray<ArrayBindingElement>;
834    }
835    export type BindingPattern = ObjectBindingPattern | ArrayBindingPattern;
836    export type ArrayBindingElement = BindingElement | OmittedExpression;
837    /**
838     * Several node kinds share function-like features such as a signature,
839     * a name, and a body. These nodes should extend FunctionLikeDeclarationBase.
840     * Examples:
841     * - FunctionDeclaration
842     * - MethodDeclaration
843     * - AccessorDeclaration
844     */
845    export interface FunctionLikeDeclarationBase extends SignatureDeclarationBase {
846        _functionLikeDeclarationBrand: any;
847        readonly asteriskToken?: AsteriskToken | undefined;
848        readonly questionToken?: QuestionToken | undefined;
849        readonly exclamationToken?: ExclamationToken | undefined;
850        readonly body?: Block | Expression | undefined;
851    }
852    export type FunctionLikeDeclaration = FunctionDeclaration | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | ConstructorDeclaration | FunctionExpression | ArrowFunction;
853    /** @deprecated Use SignatureDeclaration */
854    export type FunctionLike = SignatureDeclaration;
855    export interface FunctionDeclaration extends FunctionLikeDeclarationBase, DeclarationStatement {
856        readonly kind: SyntaxKind.FunctionDeclaration;
857        readonly modifiers?: NodeArray<Modifier>;
858        readonly name?: Identifier;
859        readonly body?: FunctionBody;
860    }
861    export interface MethodSignature extends SignatureDeclarationBase, TypeElement {
862        readonly kind: SyntaxKind.MethodSignature;
863        readonly parent: ObjectTypeDeclaration;
864        readonly modifiers?: NodeArray<Modifier>;
865        readonly name: PropertyName;
866    }
867    export interface MethodDeclaration extends FunctionLikeDeclarationBase, ClassElement, ObjectLiteralElement, JSDocContainer {
868        readonly kind: SyntaxKind.MethodDeclaration;
869        readonly parent: ClassLikeDeclaration | ObjectLiteralExpression;
870        readonly modifiers?: NodeArray<ModifierLike> | undefined;
871        readonly name: PropertyName;
872        readonly body?: FunctionBody | undefined;
873    }
874    export interface ConstructorDeclaration extends FunctionLikeDeclarationBase, ClassElement, JSDocContainer {
875        readonly kind: SyntaxKind.Constructor;
876        readonly parent: ClassLikeDeclaration;
877        readonly modifiers?: NodeArray<Modifier> | undefined;
878        readonly body?: FunctionBody | undefined;
879    }
880    /** For when we encounter a semicolon in a class declaration. ES6 allows these as class elements. */
881    export interface SemicolonClassElement extends ClassElement {
882        readonly kind: SyntaxKind.SemicolonClassElement;
883        readonly parent: ClassLikeDeclaration;
884    }
885    export interface GetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
886        readonly kind: SyntaxKind.GetAccessor;
887        readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
888        readonly modifiers?: NodeArray<ModifierLike>;
889        readonly name: PropertyName;
890        readonly body?: FunctionBody;
891    }
892    export interface SetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
893        readonly kind: SyntaxKind.SetAccessor;
894        readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
895        readonly modifiers?: NodeArray<ModifierLike>;
896        readonly name: PropertyName;
897        readonly body?: FunctionBody;
898    }
899    export type AccessorDeclaration = GetAccessorDeclaration | SetAccessorDeclaration;
900    export interface IndexSignatureDeclaration extends SignatureDeclarationBase, ClassElement, TypeElement {
901        readonly kind: SyntaxKind.IndexSignature;
902        readonly parent: ObjectTypeDeclaration;
903        readonly modifiers?: NodeArray<Modifier>;
904        readonly type: TypeNode;
905    }
906    export interface ClassStaticBlockDeclaration extends ClassElement, JSDocContainer {
907        readonly kind: SyntaxKind.ClassStaticBlockDeclaration;
908        readonly parent: ClassDeclaration | ClassExpression;
909        readonly body: Block;
910    }
911    export interface TypeNode extends Node {
912        _typeNodeBrand: any;
913    }
914    export interface KeywordTypeNode<TKind extends KeywordTypeSyntaxKind = KeywordTypeSyntaxKind> extends KeywordToken<TKind>, TypeNode {
915        readonly kind: TKind;
916    }
917    export interface ImportTypeAssertionContainer extends Node {
918        readonly kind: SyntaxKind.ImportTypeAssertionContainer;
919        readonly parent: ImportTypeNode;
920        readonly assertClause: AssertClause;
921        readonly multiLine?: boolean;
922    }
923    export interface ImportTypeNode extends NodeWithTypeArguments {
924        readonly kind: SyntaxKind.ImportType;
925        readonly isTypeOf: boolean;
926        readonly argument: TypeNode;
927        readonly assertions?: ImportTypeAssertionContainer;
928        readonly qualifier?: EntityName;
929    }
930    export interface ThisTypeNode extends TypeNode {
931        readonly kind: SyntaxKind.ThisType;
932    }
933    export type FunctionOrConstructorTypeNode = FunctionTypeNode | ConstructorTypeNode;
934    export interface FunctionOrConstructorTypeNodeBase extends TypeNode, SignatureDeclarationBase {
935        readonly kind: SyntaxKind.FunctionType | SyntaxKind.ConstructorType;
936        readonly type: TypeNode;
937    }
938    export interface FunctionTypeNode extends FunctionOrConstructorTypeNodeBase {
939        readonly kind: SyntaxKind.FunctionType;
940    }
941    export interface ConstructorTypeNode extends FunctionOrConstructorTypeNodeBase {
942        readonly kind: SyntaxKind.ConstructorType;
943        readonly modifiers?: NodeArray<Modifier>;
944    }
945    export interface NodeWithTypeArguments extends TypeNode {
946        readonly typeArguments?: NodeArray<TypeNode>;
947    }
948    export type TypeReferenceType = TypeReferenceNode | ExpressionWithTypeArguments;
949    export interface TypeReferenceNode extends NodeWithTypeArguments {
950        readonly kind: SyntaxKind.TypeReference;
951        readonly typeName: EntityName;
952    }
953    export interface TypePredicateNode extends TypeNode {
954        readonly kind: SyntaxKind.TypePredicate;
955        readonly parent: SignatureDeclaration | JSDocTypeExpression;
956        readonly assertsModifier?: AssertsKeyword;
957        readonly parameterName: Identifier | ThisTypeNode;
958        readonly type?: TypeNode;
959    }
960    export interface TypeQueryNode extends NodeWithTypeArguments {
961        readonly kind: SyntaxKind.TypeQuery;
962        readonly exprName: EntityName;
963    }
964    export interface TypeLiteralNode extends TypeNode, Declaration {
965        readonly kind: SyntaxKind.TypeLiteral;
966        readonly members: NodeArray<TypeElement>;
967    }
968    export interface ArrayTypeNode extends TypeNode {
969        readonly kind: SyntaxKind.ArrayType;
970        readonly elementType: TypeNode;
971    }
972    export interface TupleTypeNode extends TypeNode {
973        readonly kind: SyntaxKind.TupleType;
974        readonly elements: NodeArray<TypeNode | NamedTupleMember>;
975    }
976    export interface NamedTupleMember extends TypeNode, JSDocContainer, Declaration {
977        readonly kind: SyntaxKind.NamedTupleMember;
978        readonly dotDotDotToken?: Token<SyntaxKind.DotDotDotToken>;
979        readonly name: Identifier;
980        readonly questionToken?: Token<SyntaxKind.QuestionToken>;
981        readonly type: TypeNode;
982    }
983    export interface OptionalTypeNode extends TypeNode {
984        readonly kind: SyntaxKind.OptionalType;
985        readonly type: TypeNode;
986    }
987    export interface RestTypeNode extends TypeNode {
988        readonly kind: SyntaxKind.RestType;
989        readonly type: TypeNode;
990    }
991    export type UnionOrIntersectionTypeNode = UnionTypeNode | IntersectionTypeNode;
992    export interface UnionTypeNode extends TypeNode {
993        readonly kind: SyntaxKind.UnionType;
994        readonly types: NodeArray<TypeNode>;
995    }
996    export interface IntersectionTypeNode extends TypeNode {
997        readonly kind: SyntaxKind.IntersectionType;
998        readonly types: NodeArray<TypeNode>;
999    }
1000    export interface ConditionalTypeNode extends TypeNode {
1001        readonly kind: SyntaxKind.ConditionalType;
1002        readonly checkType: TypeNode;
1003        readonly extendsType: TypeNode;
1004        readonly trueType: TypeNode;
1005        readonly falseType: TypeNode;
1006    }
1007    export interface InferTypeNode extends TypeNode {
1008        readonly kind: SyntaxKind.InferType;
1009        readonly typeParameter: TypeParameterDeclaration;
1010    }
1011    export interface ParenthesizedTypeNode extends TypeNode {
1012        readonly kind: SyntaxKind.ParenthesizedType;
1013        readonly type: TypeNode;
1014    }
1015    export interface TypeOperatorNode extends TypeNode {
1016        readonly kind: SyntaxKind.TypeOperator;
1017        readonly operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword;
1018        readonly type: TypeNode;
1019    }
1020    export interface IndexedAccessTypeNode extends TypeNode {
1021        readonly kind: SyntaxKind.IndexedAccessType;
1022        readonly objectType: TypeNode;
1023        readonly indexType: TypeNode;
1024    }
1025    export interface MappedTypeNode extends TypeNode, Declaration {
1026        readonly kind: SyntaxKind.MappedType;
1027        readonly readonlyToken?: ReadonlyKeyword | PlusToken | MinusToken;
1028        readonly typeParameter: TypeParameterDeclaration;
1029        readonly nameType?: TypeNode;
1030        readonly questionToken?: QuestionToken | PlusToken | MinusToken;
1031        readonly type?: TypeNode;
1032        /** Used only to produce grammar errors */
1033        readonly members?: NodeArray<TypeElement>;
1034    }
1035    export interface LiteralTypeNode extends TypeNode {
1036        readonly kind: SyntaxKind.LiteralType;
1037        readonly literal: NullLiteral | BooleanLiteral | LiteralExpression | PrefixUnaryExpression;
1038    }
1039    export interface StringLiteral extends LiteralExpression, Declaration {
1040        readonly kind: SyntaxKind.StringLiteral;
1041    }
1042    export type StringLiteralLike = StringLiteral | NoSubstitutionTemplateLiteral;
1043    export type PropertyNameLiteral = Identifier | StringLiteralLike | NumericLiteral;
1044    export interface TemplateLiteralTypeNode extends TypeNode {
1045        kind: SyntaxKind.TemplateLiteralType;
1046        readonly head: TemplateHead;
1047        readonly templateSpans: NodeArray<TemplateLiteralTypeSpan>;
1048    }
1049    export interface TemplateLiteralTypeSpan extends TypeNode {
1050        readonly kind: SyntaxKind.TemplateLiteralTypeSpan;
1051        readonly parent: TemplateLiteralTypeNode;
1052        readonly type: TypeNode;
1053        readonly literal: TemplateMiddle | TemplateTail;
1054    }
1055    export interface Expression extends Node {
1056        _expressionBrand: any;
1057    }
1058    export interface OmittedExpression extends Expression {
1059        readonly kind: SyntaxKind.OmittedExpression;
1060    }
1061    export interface PartiallyEmittedExpression extends LeftHandSideExpression {
1062        readonly kind: SyntaxKind.PartiallyEmittedExpression;
1063        readonly expression: Expression;
1064    }
1065    export interface UnaryExpression extends Expression {
1066        _unaryExpressionBrand: any;
1067    }
1068    /** Deprecated, please use UpdateExpression */
1069    export type IncrementExpression = UpdateExpression;
1070    export interface UpdateExpression extends UnaryExpression {
1071        _updateExpressionBrand: any;
1072    }
1073    export type PrefixUnaryOperator = SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.TildeToken | SyntaxKind.ExclamationToken;
1074    export interface PrefixUnaryExpression extends UpdateExpression {
1075        readonly kind: SyntaxKind.PrefixUnaryExpression;
1076        readonly operator: PrefixUnaryOperator;
1077        readonly operand: UnaryExpression;
1078    }
1079    export type PostfixUnaryOperator = SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken;
1080    export interface PostfixUnaryExpression extends UpdateExpression {
1081        readonly kind: SyntaxKind.PostfixUnaryExpression;
1082        readonly operand: LeftHandSideExpression;
1083        readonly operator: PostfixUnaryOperator;
1084    }
1085    export interface LeftHandSideExpression extends UpdateExpression {
1086        _leftHandSideExpressionBrand: any;
1087    }
1088    export interface MemberExpression extends LeftHandSideExpression {
1089        _memberExpressionBrand: any;
1090    }
1091    export interface PrimaryExpression extends MemberExpression {
1092        _primaryExpressionBrand: any;
1093    }
1094    export interface NullLiteral extends PrimaryExpression {
1095        readonly kind: SyntaxKind.NullKeyword;
1096    }
1097    export interface TrueLiteral extends PrimaryExpression {
1098        readonly kind: SyntaxKind.TrueKeyword;
1099    }
1100    export interface FalseLiteral extends PrimaryExpression {
1101        readonly kind: SyntaxKind.FalseKeyword;
1102    }
1103    export type BooleanLiteral = TrueLiteral | FalseLiteral;
1104    export interface ThisExpression extends PrimaryExpression {
1105        readonly kind: SyntaxKind.ThisKeyword;
1106    }
1107    export interface SuperExpression extends PrimaryExpression {
1108        readonly kind: SyntaxKind.SuperKeyword;
1109    }
1110    export interface ImportExpression extends PrimaryExpression {
1111        readonly kind: SyntaxKind.ImportKeyword;
1112    }
1113    export interface DeleteExpression extends UnaryExpression {
1114        readonly kind: SyntaxKind.DeleteExpression;
1115        readonly expression: UnaryExpression;
1116    }
1117    export interface TypeOfExpression extends UnaryExpression {
1118        readonly kind: SyntaxKind.TypeOfExpression;
1119        readonly expression: UnaryExpression;
1120    }
1121    export interface VoidExpression extends UnaryExpression {
1122        readonly kind: SyntaxKind.VoidExpression;
1123        readonly expression: UnaryExpression;
1124    }
1125    export interface AwaitExpression extends UnaryExpression {
1126        readonly kind: SyntaxKind.AwaitExpression;
1127        readonly expression: UnaryExpression;
1128    }
1129    export interface YieldExpression extends Expression {
1130        readonly kind: SyntaxKind.YieldExpression;
1131        readonly asteriskToken?: AsteriskToken;
1132        readonly expression?: Expression;
1133    }
1134    export interface SyntheticExpression extends Expression {
1135        readonly kind: SyntaxKind.SyntheticExpression;
1136        readonly isSpread: boolean;
1137        readonly type: Type;
1138        readonly tupleNameSource?: ParameterDeclaration | NamedTupleMember;
1139    }
1140    export type ExponentiationOperator = SyntaxKind.AsteriskAsteriskToken;
1141    export type MultiplicativeOperator = SyntaxKind.AsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken;
1142    export type MultiplicativeOperatorOrHigher = ExponentiationOperator | MultiplicativeOperator;
1143    export type AdditiveOperator = SyntaxKind.PlusToken | SyntaxKind.MinusToken;
1144    export type AdditiveOperatorOrHigher = MultiplicativeOperatorOrHigher | AdditiveOperator;
1145    export type ShiftOperator = SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken;
1146    export type ShiftOperatorOrHigher = AdditiveOperatorOrHigher | ShiftOperator;
1147    export type RelationalOperator = SyntaxKind.LessThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.InstanceOfKeyword | SyntaxKind.InKeyword;
1148    export type RelationalOperatorOrHigher = ShiftOperatorOrHigher | RelationalOperator;
1149    export type EqualityOperator = SyntaxKind.EqualsEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.ExclamationEqualsToken;
1150    export type EqualityOperatorOrHigher = RelationalOperatorOrHigher | EqualityOperator;
1151    export type BitwiseOperator = SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken;
1152    export type BitwiseOperatorOrHigher = EqualityOperatorOrHigher | BitwiseOperator;
1153    export type LogicalOperator = SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken;
1154    export type LogicalOperatorOrHigher = BitwiseOperatorOrHigher | LogicalOperator;
1155    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;
1156    export type AssignmentOperator = SyntaxKind.EqualsToken | CompoundAssignmentOperator;
1157    export type AssignmentOperatorOrHigher = SyntaxKind.QuestionQuestionToken | LogicalOperatorOrHigher | AssignmentOperator;
1158    export type BinaryOperator = AssignmentOperatorOrHigher | SyntaxKind.CommaToken;
1159    export type LogicalOrCoalescingAssignmentOperator = SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.QuestionQuestionEqualsToken;
1160    export type BinaryOperatorToken = Token<BinaryOperator>;
1161    export interface BinaryExpression extends Expression, Declaration {
1162        readonly kind: SyntaxKind.BinaryExpression;
1163        readonly left: Expression;
1164        readonly operatorToken: BinaryOperatorToken;
1165        readonly right: Expression;
1166    }
1167    export type AssignmentOperatorToken = Token<AssignmentOperator>;
1168    export interface AssignmentExpression<TOperator extends AssignmentOperatorToken> extends BinaryExpression {
1169        readonly left: LeftHandSideExpression;
1170        readonly operatorToken: TOperator;
1171    }
1172    export interface ObjectDestructuringAssignment extends AssignmentExpression<EqualsToken> {
1173        readonly left: ObjectLiteralExpression;
1174    }
1175    export interface ArrayDestructuringAssignment extends AssignmentExpression<EqualsToken> {
1176        readonly left: ArrayLiteralExpression;
1177    }
1178    export type DestructuringAssignment = ObjectDestructuringAssignment | ArrayDestructuringAssignment;
1179    export type BindingOrAssignmentElement = VariableDeclaration | ParameterDeclaration | ObjectBindingOrAssignmentElement | ArrayBindingOrAssignmentElement;
1180    export type ObjectBindingOrAssignmentElement = BindingElement | PropertyAssignment | ShorthandPropertyAssignment | SpreadAssignment;
1181    export type ArrayBindingOrAssignmentElement = BindingElement | OmittedExpression | SpreadElement | ArrayLiteralExpression | ObjectLiteralExpression | AssignmentExpression<EqualsToken> | Identifier | PropertyAccessExpression | ElementAccessExpression;
1182    export type BindingOrAssignmentElementRestIndicator = DotDotDotToken | SpreadElement | SpreadAssignment;
1183    export type BindingOrAssignmentElementTarget = BindingOrAssignmentPattern | Identifier | PropertyAccessExpression | ElementAccessExpression | OmittedExpression;
1184    export type ObjectBindingOrAssignmentPattern = ObjectBindingPattern | ObjectLiteralExpression;
1185    export type ArrayBindingOrAssignmentPattern = ArrayBindingPattern | ArrayLiteralExpression;
1186    export type AssignmentPattern = ObjectLiteralExpression | ArrayLiteralExpression;
1187    export type BindingOrAssignmentPattern = ObjectBindingOrAssignmentPattern | ArrayBindingOrAssignmentPattern;
1188    export interface ConditionalExpression extends Expression {
1189        readonly kind: SyntaxKind.ConditionalExpression;
1190        readonly condition: Expression;
1191        readonly questionToken: QuestionToken;
1192        readonly whenTrue: Expression;
1193        readonly colonToken: ColonToken;
1194        readonly whenFalse: Expression;
1195    }
1196    export type FunctionBody = Block;
1197    export type ConciseBody = FunctionBody | Expression;
1198    export interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclarationBase, JSDocContainer {
1199        readonly kind: SyntaxKind.FunctionExpression;
1200        readonly modifiers?: NodeArray<Modifier>;
1201        readonly name?: Identifier;
1202        readonly body: FunctionBody;
1203    }
1204    export interface EtsComponentExpression extends PrimaryExpression, Declaration {
1205        readonly kind: SyntaxKind.EtsComponentExpression;
1206        readonly expression: LeftHandSideExpression;
1207        readonly typeArguments?: NodeArray<TypeNode>;
1208        readonly arguments: NodeArray<Expression>;
1209        readonly body?: Block;
1210    }
1211    export interface ArrowFunction extends Expression, FunctionLikeDeclarationBase, JSDocContainer {
1212        readonly kind: SyntaxKind.ArrowFunction;
1213        readonly modifiers?: NodeArray<Modifier>;
1214        readonly equalsGreaterThanToken: EqualsGreaterThanToken;
1215        readonly body: ConciseBody;
1216        readonly name: never;
1217    }
1218    export interface LiteralLikeNode extends Node {
1219        text: string;
1220        isUnterminated?: boolean;
1221        hasExtendedUnicodeEscape?: boolean;
1222    }
1223    export interface TemplateLiteralLikeNode extends LiteralLikeNode {
1224        rawText?: string;
1225    }
1226    export interface LiteralExpression extends LiteralLikeNode, PrimaryExpression {
1227        _literalExpressionBrand: any;
1228    }
1229    export interface RegularExpressionLiteral extends LiteralExpression {
1230        readonly kind: SyntaxKind.RegularExpressionLiteral;
1231    }
1232    export interface NoSubstitutionTemplateLiteral extends LiteralExpression, TemplateLiteralLikeNode, Declaration {
1233        readonly kind: SyntaxKind.NoSubstitutionTemplateLiteral;
1234    }
1235    export enum TokenFlags {
1236        None = 0,
1237        Scientific = 16,
1238        Octal = 32,
1239        HexSpecifier = 64,
1240        BinarySpecifier = 128,
1241        OctalSpecifier = 256,
1242    }
1243    export interface NumericLiteral extends LiteralExpression, Declaration {
1244        readonly kind: SyntaxKind.NumericLiteral;
1245    }
1246    export interface BigIntLiteral extends LiteralExpression {
1247        readonly kind: SyntaxKind.BigIntLiteral;
1248    }
1249    export type LiteralToken = NumericLiteral | BigIntLiteral | StringLiteral | JsxText | RegularExpressionLiteral | NoSubstitutionTemplateLiteral;
1250    export interface TemplateHead extends TemplateLiteralLikeNode {
1251        readonly kind: SyntaxKind.TemplateHead;
1252        readonly parent: TemplateExpression | TemplateLiteralTypeNode;
1253    }
1254    export interface TemplateMiddle extends TemplateLiteralLikeNode {
1255        readonly kind: SyntaxKind.TemplateMiddle;
1256        readonly parent: TemplateSpan | TemplateLiteralTypeSpan;
1257    }
1258    export interface TemplateTail extends TemplateLiteralLikeNode {
1259        readonly kind: SyntaxKind.TemplateTail;
1260        readonly parent: TemplateSpan | TemplateLiteralTypeSpan;
1261    }
1262    export type PseudoLiteralToken = TemplateHead | TemplateMiddle | TemplateTail;
1263    export type TemplateLiteralToken = NoSubstitutionTemplateLiteral | PseudoLiteralToken;
1264    export interface TemplateExpression extends PrimaryExpression {
1265        readonly kind: SyntaxKind.TemplateExpression;
1266        readonly head: TemplateHead;
1267        readonly templateSpans: NodeArray<TemplateSpan>;
1268    }
1269    export type TemplateLiteral = TemplateExpression | NoSubstitutionTemplateLiteral;
1270    export interface TemplateSpan extends Node {
1271        readonly kind: SyntaxKind.TemplateSpan;
1272        readonly parent: TemplateExpression;
1273        readonly expression: Expression;
1274        readonly literal: TemplateMiddle | TemplateTail;
1275    }
1276    export interface ParenthesizedExpression extends PrimaryExpression, JSDocContainer {
1277        readonly kind: SyntaxKind.ParenthesizedExpression;
1278        readonly expression: Expression;
1279    }
1280    export interface ArrayLiteralExpression extends PrimaryExpression {
1281        readonly kind: SyntaxKind.ArrayLiteralExpression;
1282        readonly elements: NodeArray<Expression>;
1283    }
1284    export interface SpreadElement extends Expression {
1285        readonly kind: SyntaxKind.SpreadElement;
1286        readonly parent: ArrayLiteralExpression | CallExpression | NewExpression;
1287        readonly expression: Expression;
1288    }
1289    /**
1290     * This interface is a base interface for ObjectLiteralExpression and JSXAttributes to extend from. JSXAttributes is similar to
1291     * ObjectLiteralExpression in that it contains array of properties; however, JSXAttributes' properties can only be
1292     * JSXAttribute or JSXSpreadAttribute. ObjectLiteralExpression, on the other hand, can only have properties of type
1293     * ObjectLiteralElement (e.g. PropertyAssignment, ShorthandPropertyAssignment etc.)
1294     */
1295    export interface ObjectLiteralExpressionBase<T extends ObjectLiteralElement> extends PrimaryExpression, Declaration {
1296        readonly properties: NodeArray<T>;
1297    }
1298    export interface ObjectLiteralExpression extends ObjectLiteralExpressionBase<ObjectLiteralElementLike> {
1299        readonly kind: SyntaxKind.ObjectLiteralExpression;
1300    }
1301    export type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression;
1302    export type EntityNameOrEntityNameExpression = EntityName | EntityNameExpression;
1303    export type AccessExpression = PropertyAccessExpression | ElementAccessExpression;
1304    export interface PropertyAccessExpression extends MemberExpression, NamedDeclaration {
1305        readonly kind: SyntaxKind.PropertyAccessExpression;
1306        readonly expression: LeftHandSideExpression;
1307        readonly questionDotToken?: QuestionDotToken;
1308        readonly name: MemberName;
1309    }
1310    export interface PropertyAccessChain extends PropertyAccessExpression {
1311        _optionalChainBrand: any;
1312        readonly name: MemberName;
1313    }
1314    export interface SuperPropertyAccessExpression extends PropertyAccessExpression {
1315        readonly expression: SuperExpression;
1316    }
1317    /** Brand for a PropertyAccessExpression which, like a QualifiedName, consists of a sequence of identifiers separated by dots. */
1318    export interface PropertyAccessEntityNameExpression extends PropertyAccessExpression {
1319        _propertyAccessExpressionLikeQualifiedNameBrand?: any;
1320        readonly expression: EntityNameExpression;
1321        readonly name: Identifier;
1322    }
1323    export interface ElementAccessExpression extends MemberExpression {
1324        readonly kind: SyntaxKind.ElementAccessExpression;
1325        readonly expression: LeftHandSideExpression;
1326        readonly questionDotToken?: QuestionDotToken;
1327        readonly argumentExpression: Expression;
1328    }
1329    export interface ElementAccessChain extends ElementAccessExpression {
1330        _optionalChainBrand: any;
1331    }
1332    export interface SuperElementAccessExpression extends ElementAccessExpression {
1333        readonly expression: SuperExpression;
1334    }
1335    export type SuperProperty = SuperPropertyAccessExpression | SuperElementAccessExpression;
1336    export interface CallExpression extends LeftHandSideExpression, Declaration {
1337        readonly kind: SyntaxKind.CallExpression;
1338        readonly expression: LeftHandSideExpression;
1339        readonly questionDotToken?: QuestionDotToken;
1340        readonly typeArguments?: NodeArray<TypeNode>;
1341        readonly arguments: NodeArray<Expression>;
1342    }
1343    export interface CallChain extends CallExpression {
1344        _optionalChainBrand: any;
1345    }
1346    export type OptionalChain = PropertyAccessChain | ElementAccessChain | CallChain | NonNullChain;
1347    export interface SuperCall extends CallExpression {
1348        readonly expression: SuperExpression;
1349    }
1350    export interface ImportCall extends CallExpression {
1351        readonly expression: ImportExpression;
1352    }
1353    export interface ExpressionWithTypeArguments extends MemberExpression, NodeWithTypeArguments {
1354        readonly kind: SyntaxKind.ExpressionWithTypeArguments;
1355        readonly expression: LeftHandSideExpression;
1356    }
1357    export interface NewExpression extends PrimaryExpression, Declaration {
1358        readonly kind: SyntaxKind.NewExpression;
1359        readonly expression: LeftHandSideExpression;
1360        readonly typeArguments?: NodeArray<TypeNode>;
1361        readonly arguments?: NodeArray<Expression>;
1362    }
1363    export interface TaggedTemplateExpression extends MemberExpression {
1364        readonly kind: SyntaxKind.TaggedTemplateExpression;
1365        readonly tag: LeftHandSideExpression;
1366        readonly typeArguments?: NodeArray<TypeNode>;
1367        readonly template: TemplateLiteral;
1368    }
1369    export type CallLikeExpression = CallExpression | NewExpression | TaggedTemplateExpression | Decorator | JsxOpeningLikeElement | EtsComponentExpression;
1370    export interface AsExpression extends Expression {
1371        readonly kind: SyntaxKind.AsExpression;
1372        readonly expression: Expression;
1373        readonly type: TypeNode;
1374    }
1375    export interface TypeAssertion extends UnaryExpression {
1376        readonly kind: SyntaxKind.TypeAssertionExpression;
1377        readonly type: TypeNode;
1378        readonly expression: UnaryExpression;
1379    }
1380    export interface SatisfiesExpression extends Expression {
1381        readonly kind: SyntaxKind.SatisfiesExpression;
1382        readonly expression: Expression;
1383        readonly type: TypeNode;
1384    }
1385    export type AssertionExpression = TypeAssertion | AsExpression;
1386    export interface NonNullExpression extends LeftHandSideExpression {
1387        readonly kind: SyntaxKind.NonNullExpression;
1388        readonly expression: Expression;
1389    }
1390    export interface NonNullChain extends NonNullExpression {
1391        _optionalChainBrand: any;
1392    }
1393    export interface MetaProperty extends PrimaryExpression {
1394        readonly kind: SyntaxKind.MetaProperty;
1395        readonly keywordToken: SyntaxKind.NewKeyword | SyntaxKind.ImportKeyword;
1396        readonly name: Identifier;
1397    }
1398    export interface JsxElement extends PrimaryExpression {
1399        readonly kind: SyntaxKind.JsxElement;
1400        readonly openingElement: JsxOpeningElement;
1401        readonly children: NodeArray<JsxChild>;
1402        readonly closingElement: JsxClosingElement;
1403    }
1404    export type JsxOpeningLikeElement = JsxSelfClosingElement | JsxOpeningElement;
1405    export type JsxAttributeLike = JsxAttribute | JsxSpreadAttribute;
1406    export type JsxTagNameExpression = Identifier | ThisExpression | JsxTagNamePropertyAccess;
1407    export interface JsxTagNamePropertyAccess extends PropertyAccessExpression {
1408        readonly expression: JsxTagNameExpression;
1409    }
1410    export interface JsxAttributes extends ObjectLiteralExpressionBase<JsxAttributeLike> {
1411        readonly kind: SyntaxKind.JsxAttributes;
1412        readonly parent: JsxOpeningLikeElement;
1413    }
1414    export interface JsxOpeningElement extends Expression {
1415        readonly kind: SyntaxKind.JsxOpeningElement;
1416        readonly parent: JsxElement;
1417        readonly tagName: JsxTagNameExpression;
1418        readonly typeArguments?: NodeArray<TypeNode>;
1419        readonly attributes: JsxAttributes;
1420    }
1421    export interface JsxSelfClosingElement extends PrimaryExpression {
1422        readonly kind: SyntaxKind.JsxSelfClosingElement;
1423        readonly tagName: JsxTagNameExpression;
1424        readonly typeArguments?: NodeArray<TypeNode>;
1425        readonly attributes: JsxAttributes;
1426    }
1427    export interface JsxFragment extends PrimaryExpression {
1428        readonly kind: SyntaxKind.JsxFragment;
1429        readonly openingFragment: JsxOpeningFragment;
1430        readonly children: NodeArray<JsxChild>;
1431        readonly closingFragment: JsxClosingFragment;
1432    }
1433    export interface JsxOpeningFragment extends Expression {
1434        readonly kind: SyntaxKind.JsxOpeningFragment;
1435        readonly parent: JsxFragment;
1436    }
1437    export interface JsxClosingFragment extends Expression {
1438        readonly kind: SyntaxKind.JsxClosingFragment;
1439        readonly parent: JsxFragment;
1440    }
1441    export interface JsxAttribute extends ObjectLiteralElement {
1442        readonly kind: SyntaxKind.JsxAttribute;
1443        readonly parent: JsxAttributes;
1444        readonly name: Identifier;
1445        readonly initializer?: JsxAttributeValue;
1446    }
1447    export type JsxAttributeValue = StringLiteral | JsxExpression | JsxElement | JsxSelfClosingElement | JsxFragment;
1448    export interface JsxSpreadAttribute extends ObjectLiteralElement {
1449        readonly kind: SyntaxKind.JsxSpreadAttribute;
1450        readonly parent: JsxAttributes;
1451        readonly expression: Expression;
1452    }
1453    export interface JsxClosingElement extends Node {
1454        readonly kind: SyntaxKind.JsxClosingElement;
1455        readonly parent: JsxElement;
1456        readonly tagName: JsxTagNameExpression;
1457    }
1458    export interface JsxExpression extends Expression {
1459        readonly kind: SyntaxKind.JsxExpression;
1460        readonly parent: JsxElement | JsxFragment | JsxAttributeLike;
1461        readonly dotDotDotToken?: Token<SyntaxKind.DotDotDotToken>;
1462        readonly expression?: Expression;
1463    }
1464    export interface JsxText extends LiteralLikeNode {
1465        readonly kind: SyntaxKind.JsxText;
1466        readonly parent: JsxElement | JsxFragment;
1467        readonly containsOnlyTriviaWhiteSpaces: boolean;
1468    }
1469    export type JsxChild = JsxText | JsxExpression | JsxElement | JsxSelfClosingElement | JsxFragment;
1470    export interface Statement extends Node, JSDocContainer {
1471        _statementBrand: any;
1472    }
1473    export interface NotEmittedStatement extends Statement {
1474        readonly kind: SyntaxKind.NotEmittedStatement;
1475    }
1476    /**
1477     * A list of comma-separated expressions. This node is only created by transformations.
1478     */
1479    export interface CommaListExpression extends Expression {
1480        readonly kind: SyntaxKind.CommaListExpression;
1481        readonly elements: NodeArray<Expression>;
1482    }
1483    export interface EmptyStatement extends Statement {
1484        readonly kind: SyntaxKind.EmptyStatement;
1485    }
1486    export interface DebuggerStatement extends Statement {
1487        readonly kind: SyntaxKind.DebuggerStatement;
1488    }
1489    export interface MissingDeclaration extends DeclarationStatement {
1490        readonly kind: SyntaxKind.MissingDeclaration;
1491        readonly name?: Identifier;
1492    }
1493    export type BlockLike = SourceFile | Block | ModuleBlock | CaseOrDefaultClause;
1494    export interface Block extends Statement {
1495        readonly kind: SyntaxKind.Block;
1496        readonly statements: NodeArray<Statement>;
1497    }
1498    export interface VariableStatement extends Statement {
1499        readonly kind: SyntaxKind.VariableStatement;
1500        readonly modifiers?: NodeArray<Modifier>;
1501        readonly declarationList: VariableDeclarationList;
1502    }
1503    export interface ExpressionStatement extends Statement {
1504        readonly kind: SyntaxKind.ExpressionStatement;
1505        readonly expression: Expression;
1506    }
1507    export interface IfStatement extends Statement {
1508        readonly kind: SyntaxKind.IfStatement;
1509        readonly expression: Expression;
1510        readonly thenStatement: Statement;
1511        readonly elseStatement?: Statement;
1512    }
1513    export interface IterationStatement extends Statement {
1514        readonly statement: Statement;
1515    }
1516    export interface DoStatement extends IterationStatement {
1517        readonly kind: SyntaxKind.DoStatement;
1518        readonly expression: Expression;
1519    }
1520    export interface WhileStatement extends IterationStatement {
1521        readonly kind: SyntaxKind.WhileStatement;
1522        readonly expression: Expression;
1523    }
1524    export type ForInitializer = VariableDeclarationList | Expression;
1525    export interface ForStatement extends IterationStatement {
1526        readonly kind: SyntaxKind.ForStatement;
1527        readonly initializer?: ForInitializer;
1528        readonly condition?: Expression;
1529        readonly incrementor?: Expression;
1530    }
1531    export type ForInOrOfStatement = ForInStatement | ForOfStatement;
1532    export interface ForInStatement extends IterationStatement {
1533        readonly kind: SyntaxKind.ForInStatement;
1534        readonly initializer: ForInitializer;
1535        readonly expression: Expression;
1536    }
1537    export interface ForOfStatement extends IterationStatement {
1538        readonly kind: SyntaxKind.ForOfStatement;
1539        readonly awaitModifier?: AwaitKeyword;
1540        readonly initializer: ForInitializer;
1541        readonly expression: Expression;
1542    }
1543    export interface BreakStatement extends Statement {
1544        readonly kind: SyntaxKind.BreakStatement;
1545        readonly label?: Identifier;
1546    }
1547    export interface ContinueStatement extends Statement {
1548        readonly kind: SyntaxKind.ContinueStatement;
1549        readonly label?: Identifier;
1550    }
1551    export type BreakOrContinueStatement = BreakStatement | ContinueStatement;
1552    export interface ReturnStatement extends Statement {
1553        readonly kind: SyntaxKind.ReturnStatement;
1554        readonly expression?: Expression;
1555    }
1556    export interface WithStatement extends Statement {
1557        readonly kind: SyntaxKind.WithStatement;
1558        readonly expression: Expression;
1559        readonly statement: Statement;
1560    }
1561    export interface SwitchStatement extends Statement {
1562        readonly kind: SyntaxKind.SwitchStatement;
1563        readonly expression: Expression;
1564        readonly caseBlock: CaseBlock;
1565        possiblyExhaustive?: boolean;
1566    }
1567    export interface CaseBlock extends Node {
1568        readonly kind: SyntaxKind.CaseBlock;
1569        readonly parent: SwitchStatement;
1570        readonly clauses: NodeArray<CaseOrDefaultClause>;
1571    }
1572    export interface CaseClause extends Node, JSDocContainer {
1573        readonly kind: SyntaxKind.CaseClause;
1574        readonly parent: CaseBlock;
1575        readonly expression: Expression;
1576        readonly statements: NodeArray<Statement>;
1577    }
1578    export interface DefaultClause extends Node {
1579        readonly kind: SyntaxKind.DefaultClause;
1580        readonly parent: CaseBlock;
1581        readonly statements: NodeArray<Statement>;
1582    }
1583    export type CaseOrDefaultClause = CaseClause | DefaultClause;
1584    export interface LabeledStatement extends Statement {
1585        readonly kind: SyntaxKind.LabeledStatement;
1586        readonly label: Identifier;
1587        readonly statement: Statement;
1588    }
1589    export interface ThrowStatement extends Statement {
1590        readonly kind: SyntaxKind.ThrowStatement;
1591        readonly expression: Expression;
1592    }
1593    export interface TryStatement extends Statement {
1594        readonly kind: SyntaxKind.TryStatement;
1595        readonly tryBlock: Block;
1596        readonly catchClause?: CatchClause;
1597        readonly finallyBlock?: Block;
1598    }
1599    export interface CatchClause extends Node {
1600        readonly kind: SyntaxKind.CatchClause;
1601        readonly parent: TryStatement;
1602        readonly variableDeclaration?: VariableDeclaration;
1603        readonly block: Block;
1604    }
1605    export type ObjectTypeDeclaration = ClassLikeDeclaration | InterfaceDeclaration | TypeLiteralNode;
1606    export type DeclarationWithTypeParameters = DeclarationWithTypeParameterChildren | JSDocTypedefTag | JSDocCallbackTag | JSDocSignature;
1607    export type DeclarationWithTypeParameterChildren = SignatureDeclaration | ClassLikeDeclaration | InterfaceDeclaration | TypeAliasDeclaration | JSDocTemplateTag;
1608    export interface ClassLikeDeclarationBase extends NamedDeclaration, JSDocContainer {
1609        readonly kind: SyntaxKind.ClassDeclaration | SyntaxKind.ClassExpression | SyntaxKind.StructDeclaration;
1610        readonly name?: Identifier;
1611        readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
1612        readonly heritageClauses?: NodeArray<HeritageClause>;
1613        readonly members: NodeArray<ClassElement>;
1614    }
1615    export interface ClassDeclaration extends ClassLikeDeclarationBase, DeclarationStatement {
1616        readonly kind: SyntaxKind.ClassDeclaration;
1617        readonly modifiers?: NodeArray<ModifierLike>;
1618        /** May be undefined in `export default class { ... }`. */
1619        readonly name?: Identifier;
1620    }
1621    export interface StructDeclaration extends ClassLikeDeclarationBase, DeclarationStatement {
1622        readonly kind: SyntaxKind.StructDeclaration;
1623        readonly modifiers?: NodeArray<ModifierLike>;
1624        /** May be undefined in `export default class { ... }`. */
1625        readonly name?: Identifier;
1626    }
1627    export interface ClassExpression extends ClassLikeDeclarationBase, PrimaryExpression {
1628        readonly kind: SyntaxKind.ClassExpression;
1629        readonly modifiers?: NodeArray<ModifierLike>;
1630    }
1631    export type ClassLikeDeclaration = ClassDeclaration | ClassExpression | StructDeclaration;
1632    export interface ClassElement extends NamedDeclaration {
1633        _classElementBrand: any;
1634        readonly name?: PropertyName;
1635    }
1636    export interface TypeElement extends NamedDeclaration {
1637        _typeElementBrand: any;
1638        readonly name?: PropertyName;
1639        readonly questionToken?: QuestionToken | undefined;
1640    }
1641    export interface InterfaceDeclaration extends DeclarationStatement, JSDocContainer {
1642        readonly kind: SyntaxKind.InterfaceDeclaration;
1643        readonly modifiers?: NodeArray<Modifier>;
1644        readonly name: Identifier;
1645        readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
1646        readonly heritageClauses?: NodeArray<HeritageClause>;
1647        readonly members: NodeArray<TypeElement>;
1648    }
1649    export interface HeritageClause extends Node {
1650        readonly kind: SyntaxKind.HeritageClause;
1651        readonly parent: InterfaceDeclaration | ClassLikeDeclaration;
1652        readonly token: SyntaxKind.ExtendsKeyword | SyntaxKind.ImplementsKeyword;
1653        readonly types: NodeArray<ExpressionWithTypeArguments>;
1654    }
1655    export interface TypeAliasDeclaration extends DeclarationStatement, JSDocContainer {
1656        readonly kind: SyntaxKind.TypeAliasDeclaration;
1657        readonly modifiers?: NodeArray<Modifier>;
1658        readonly name: Identifier;
1659        readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
1660        readonly type: TypeNode;
1661    }
1662    export interface EnumMember extends NamedDeclaration, JSDocContainer {
1663        readonly kind: SyntaxKind.EnumMember;
1664        readonly parent: EnumDeclaration;
1665        readonly name: PropertyName;
1666        readonly initializer?: Expression;
1667    }
1668    export interface EnumDeclaration extends DeclarationStatement, JSDocContainer {
1669        readonly kind: SyntaxKind.EnumDeclaration;
1670        readonly modifiers?: NodeArray<Modifier>;
1671        readonly name: Identifier;
1672        readonly members: NodeArray<EnumMember>;
1673    }
1674    export type ModuleName = Identifier | StringLiteral;
1675    export type ModuleBody = NamespaceBody | JSDocNamespaceBody;
1676    export interface ModuleDeclaration extends DeclarationStatement, JSDocContainer {
1677        readonly kind: SyntaxKind.ModuleDeclaration;
1678        readonly parent: ModuleBody | SourceFile;
1679        readonly modifiers?: NodeArray<Modifier>;
1680        readonly name: ModuleName;
1681        readonly body?: ModuleBody | JSDocNamespaceDeclaration;
1682    }
1683    export type NamespaceBody = ModuleBlock | NamespaceDeclaration;
1684    export interface NamespaceDeclaration extends ModuleDeclaration {
1685        readonly name: Identifier;
1686        readonly body: NamespaceBody;
1687    }
1688    export type JSDocNamespaceBody = Identifier | JSDocNamespaceDeclaration;
1689    export interface JSDocNamespaceDeclaration extends ModuleDeclaration {
1690        readonly name: Identifier;
1691        readonly body?: JSDocNamespaceBody;
1692    }
1693    export interface ModuleBlock extends Node, Statement {
1694        readonly kind: SyntaxKind.ModuleBlock;
1695        readonly parent: ModuleDeclaration;
1696        readonly statements: NodeArray<Statement>;
1697    }
1698    export type ModuleReference = EntityName | ExternalModuleReference;
1699    /**
1700     * One of:
1701     * - import x = require("mod");
1702     * - import x = M.x;
1703     */
1704    export interface ImportEqualsDeclaration extends DeclarationStatement, JSDocContainer {
1705        readonly kind: SyntaxKind.ImportEqualsDeclaration;
1706        readonly parent: SourceFile | ModuleBlock;
1707        readonly modifiers?: NodeArray<Modifier>;
1708        readonly name: Identifier;
1709        readonly isTypeOnly: boolean;
1710        readonly moduleReference: ModuleReference;
1711    }
1712    export interface ExternalModuleReference extends Node {
1713        readonly kind: SyntaxKind.ExternalModuleReference;
1714        readonly parent: ImportEqualsDeclaration;
1715        readonly expression: Expression;
1716    }
1717    export interface ImportDeclaration extends Statement {
1718        readonly kind: SyntaxKind.ImportDeclaration;
1719        readonly parent: SourceFile | ModuleBlock;
1720        readonly modifiers?: NodeArray<Modifier>;
1721        readonly importClause?: ImportClause;
1722        /** If this is not a StringLiteral it will be a grammar error. */
1723        readonly moduleSpecifier: Expression;
1724        readonly assertClause?: AssertClause;
1725    }
1726    export type NamedImportBindings = NamespaceImport | NamedImports;
1727    export type NamedExportBindings = NamespaceExport | NamedExports;
1728    export interface ImportClause extends NamedDeclaration {
1729        readonly kind: SyntaxKind.ImportClause;
1730        readonly parent: ImportDeclaration;
1731        readonly isTypeOnly: boolean;
1732        readonly name?: Identifier;
1733        readonly namedBindings?: NamedImportBindings;
1734        readonly isLazy?: boolean;
1735    }
1736    export type AssertionKey = Identifier | StringLiteral;
1737    export interface AssertEntry extends Node {
1738        readonly kind: SyntaxKind.AssertEntry;
1739        readonly parent: AssertClause;
1740        readonly name: AssertionKey;
1741        readonly value: Expression;
1742    }
1743    export interface AssertClause extends Node {
1744        readonly kind: SyntaxKind.AssertClause;
1745        readonly parent: ImportDeclaration | ExportDeclaration;
1746        readonly elements: NodeArray<AssertEntry>;
1747        readonly multiLine?: boolean;
1748    }
1749    export interface NamespaceImport extends NamedDeclaration {
1750        readonly kind: SyntaxKind.NamespaceImport;
1751        readonly parent: ImportClause;
1752        readonly name: Identifier;
1753    }
1754    export interface NamespaceExport extends NamedDeclaration {
1755        readonly kind: SyntaxKind.NamespaceExport;
1756        readonly parent: ExportDeclaration;
1757        readonly name: Identifier;
1758    }
1759    export interface NamespaceExportDeclaration extends DeclarationStatement, JSDocContainer {
1760        readonly kind: SyntaxKind.NamespaceExportDeclaration;
1761        readonly name: Identifier;
1762    }
1763    export interface ExportDeclaration extends DeclarationStatement, JSDocContainer {
1764        readonly kind: SyntaxKind.ExportDeclaration;
1765        readonly parent: SourceFile | ModuleBlock;
1766        readonly modifiers?: NodeArray<Modifier>;
1767        readonly isTypeOnly: boolean;
1768        /** Will not be assigned in the case of `export * from "foo";` */
1769        readonly exportClause?: NamedExportBindings;
1770        /** If this is not a StringLiteral it will be a grammar error. */
1771        readonly moduleSpecifier?: Expression;
1772        readonly assertClause?: AssertClause;
1773    }
1774    export interface NamedImports extends Node {
1775        readonly kind: SyntaxKind.NamedImports;
1776        readonly parent: ImportClause;
1777        readonly elements: NodeArray<ImportSpecifier>;
1778    }
1779    export interface NamedExports extends Node {
1780        readonly kind: SyntaxKind.NamedExports;
1781        readonly parent: ExportDeclaration;
1782        readonly elements: NodeArray<ExportSpecifier>;
1783    }
1784    export type NamedImportsOrExports = NamedImports | NamedExports;
1785    export interface ImportSpecifier extends NamedDeclaration {
1786        readonly kind: SyntaxKind.ImportSpecifier;
1787        readonly parent: NamedImports;
1788        readonly propertyName?: Identifier;
1789        readonly name: Identifier;
1790        readonly isTypeOnly: boolean;
1791    }
1792    export interface ExportSpecifier extends NamedDeclaration, JSDocContainer {
1793        readonly kind: SyntaxKind.ExportSpecifier;
1794        readonly parent: NamedExports;
1795        readonly isTypeOnly: boolean;
1796        readonly propertyName?: Identifier;
1797        readonly name: Identifier;
1798    }
1799    export type ImportOrExportSpecifier = ImportSpecifier | ExportSpecifier;
1800    export type TypeOnlyCompatibleAliasDeclaration = ImportClause | ImportEqualsDeclaration | NamespaceImport | ImportOrExportSpecifier;
1801    export type TypeOnlyAliasDeclaration = ImportClause & {
1802        readonly isTypeOnly: true;
1803        readonly name: Identifier;
1804    } | ImportEqualsDeclaration & {
1805        readonly isTypeOnly: true;
1806    } | NamespaceImport & {
1807        readonly parent: ImportClause & {
1808            readonly isTypeOnly: true;
1809        };
1810    } | ImportSpecifier & ({
1811        readonly isTypeOnly: true;
1812    } | {
1813        readonly parent: NamedImports & {
1814            readonly parent: ImportClause & {
1815                readonly isTypeOnly: true;
1816            };
1817        };
1818    }) | ExportSpecifier & ({
1819        readonly isTypeOnly: true;
1820    } | {
1821        readonly parent: NamedExports & {
1822            readonly parent: ExportDeclaration & {
1823                readonly isTypeOnly: true;
1824            };
1825        };
1826    });
1827    /**
1828     * This is either an `export =` or an `export default` declaration.
1829     * Unless `isExportEquals` is set, this node was parsed as an `export default`.
1830     */
1831    export interface ExportAssignment extends DeclarationStatement, JSDocContainer {
1832        readonly kind: SyntaxKind.ExportAssignment;
1833        readonly parent: SourceFile;
1834        readonly modifiers?: NodeArray<Modifier>;
1835        readonly isExportEquals?: boolean;
1836        readonly expression: Expression;
1837    }
1838    export interface FileReference extends TextRange {
1839        fileName: string;
1840        resolutionMode?: SourceFile["impliedNodeFormat"];
1841    }
1842    export interface CheckJsDirective extends TextRange {
1843        enabled: boolean;
1844    }
1845    export type CommentKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia;
1846    export interface CommentRange extends TextRange {
1847        hasTrailingNewLine?: boolean;
1848        kind: CommentKind;
1849    }
1850    export interface SynthesizedComment extends CommentRange {
1851        text: string;
1852        pos: -1;
1853        end: -1;
1854        hasLeadingNewline?: boolean;
1855    }
1856    export interface JSDocTypeExpression extends TypeNode {
1857        readonly kind: SyntaxKind.JSDocTypeExpression;
1858        readonly type: TypeNode;
1859    }
1860    export interface JSDocNameReference extends Node {
1861        readonly kind: SyntaxKind.JSDocNameReference;
1862        readonly name: EntityName | JSDocMemberName;
1863    }
1864    /** Class#method reference in JSDoc */
1865    export interface JSDocMemberName extends Node {
1866        readonly kind: SyntaxKind.JSDocMemberName;
1867        readonly left: EntityName | JSDocMemberName;
1868        readonly right: Identifier;
1869    }
1870    export interface JSDocType extends TypeNode {
1871        _jsDocTypeBrand: any;
1872    }
1873    export interface JSDocAllType extends JSDocType {
1874        readonly kind: SyntaxKind.JSDocAllType;
1875    }
1876    export interface JSDocUnknownType extends JSDocType {
1877        readonly kind: SyntaxKind.JSDocUnknownType;
1878    }
1879    export interface JSDocNonNullableType extends JSDocType {
1880        readonly kind: SyntaxKind.JSDocNonNullableType;
1881        readonly type: TypeNode;
1882        readonly postfix: boolean;
1883    }
1884    export interface JSDocNullableType extends JSDocType {
1885        readonly kind: SyntaxKind.JSDocNullableType;
1886        readonly type: TypeNode;
1887        readonly postfix: boolean;
1888    }
1889    export interface JSDocOptionalType extends JSDocType {
1890        readonly kind: SyntaxKind.JSDocOptionalType;
1891        readonly type: TypeNode;
1892    }
1893    export interface JSDocFunctionType extends JSDocType, SignatureDeclarationBase {
1894        readonly kind: SyntaxKind.JSDocFunctionType;
1895    }
1896    export interface JSDocVariadicType extends JSDocType {
1897        readonly kind: SyntaxKind.JSDocVariadicType;
1898        readonly type: TypeNode;
1899    }
1900    export interface JSDocNamepathType extends JSDocType {
1901        readonly kind: SyntaxKind.JSDocNamepathType;
1902        readonly type: TypeNode;
1903    }
1904    export type JSDocTypeReferencingNode = JSDocVariadicType | JSDocOptionalType | JSDocNullableType | JSDocNonNullableType;
1905    export interface JSDoc extends Node {
1906        readonly kind: SyntaxKind.JSDoc;
1907        readonly parent: HasJSDoc;
1908        readonly tags?: NodeArray<JSDocTag>;
1909        readonly comment?: string | NodeArray<JSDocComment>;
1910    }
1911    export interface JSDocTag extends Node {
1912        readonly parent: JSDoc | JSDocTypeLiteral;
1913        readonly tagName: Identifier;
1914        readonly comment?: string | NodeArray<JSDocComment>;
1915    }
1916    export interface JSDocLink extends Node {
1917        readonly kind: SyntaxKind.JSDocLink;
1918        readonly name?: EntityName | JSDocMemberName;
1919        text: string;
1920    }
1921    export interface JSDocLinkCode extends Node {
1922        readonly kind: SyntaxKind.JSDocLinkCode;
1923        readonly name?: EntityName | JSDocMemberName;
1924        text: string;
1925    }
1926    export interface JSDocLinkPlain extends Node {
1927        readonly kind: SyntaxKind.JSDocLinkPlain;
1928        readonly name?: EntityName | JSDocMemberName;
1929        text: string;
1930    }
1931    export type JSDocComment = JSDocText | JSDocLink | JSDocLinkCode | JSDocLinkPlain;
1932    export interface JSDocText extends Node {
1933        readonly kind: SyntaxKind.JSDocText;
1934        text: string;
1935    }
1936    export interface JSDocUnknownTag extends JSDocTag {
1937        readonly kind: SyntaxKind.JSDocTag;
1938    }
1939    /**
1940     * Note that `@extends` is a synonym of `@augments`.
1941     * Both tags are represented by this interface.
1942     */
1943    export interface JSDocAugmentsTag extends JSDocTag {
1944        readonly kind: SyntaxKind.JSDocAugmentsTag;
1945        readonly class: ExpressionWithTypeArguments & {
1946            readonly expression: Identifier | PropertyAccessEntityNameExpression;
1947        };
1948    }
1949    export interface JSDocImplementsTag extends JSDocTag {
1950        readonly kind: SyntaxKind.JSDocImplementsTag;
1951        readonly class: ExpressionWithTypeArguments & {
1952            readonly expression: Identifier | PropertyAccessEntityNameExpression;
1953        };
1954    }
1955    export interface JSDocAuthorTag extends JSDocTag {
1956        readonly kind: SyntaxKind.JSDocAuthorTag;
1957    }
1958    export interface JSDocDeprecatedTag extends JSDocTag {
1959        kind: SyntaxKind.JSDocDeprecatedTag;
1960    }
1961    export interface JSDocClassTag extends JSDocTag {
1962        readonly kind: SyntaxKind.JSDocClassTag;
1963    }
1964    export interface JSDocPublicTag extends JSDocTag {
1965        readonly kind: SyntaxKind.JSDocPublicTag;
1966    }
1967    export interface JSDocPrivateTag extends JSDocTag {
1968        readonly kind: SyntaxKind.JSDocPrivateTag;
1969    }
1970    export interface JSDocProtectedTag extends JSDocTag {
1971        readonly kind: SyntaxKind.JSDocProtectedTag;
1972    }
1973    export interface JSDocReadonlyTag extends JSDocTag {
1974        readonly kind: SyntaxKind.JSDocReadonlyTag;
1975    }
1976    export interface JSDocOverrideTag extends JSDocTag {
1977        readonly kind: SyntaxKind.JSDocOverrideTag;
1978    }
1979    export interface JSDocEnumTag extends JSDocTag, Declaration {
1980        readonly kind: SyntaxKind.JSDocEnumTag;
1981        readonly parent: JSDoc;
1982        readonly typeExpression: JSDocTypeExpression;
1983    }
1984    export interface JSDocThisTag extends JSDocTag {
1985        readonly kind: SyntaxKind.JSDocThisTag;
1986        readonly typeExpression: JSDocTypeExpression;
1987    }
1988    export interface JSDocTemplateTag extends JSDocTag {
1989        readonly kind: SyntaxKind.JSDocTemplateTag;
1990        readonly constraint: JSDocTypeExpression | undefined;
1991        readonly typeParameters: NodeArray<TypeParameterDeclaration>;
1992    }
1993    export interface JSDocSeeTag extends JSDocTag {
1994        readonly kind: SyntaxKind.JSDocSeeTag;
1995        readonly name?: JSDocNameReference;
1996    }
1997    export interface JSDocReturnTag extends JSDocTag {
1998        readonly kind: SyntaxKind.JSDocReturnTag;
1999        readonly typeExpression?: JSDocTypeExpression;
2000    }
2001    export interface JSDocTypeTag extends JSDocTag {
2002        readonly kind: SyntaxKind.JSDocTypeTag;
2003        readonly typeExpression: JSDocTypeExpression;
2004    }
2005    export interface JSDocTypedefTag extends JSDocTag, NamedDeclaration {
2006        readonly kind: SyntaxKind.JSDocTypedefTag;
2007        readonly parent: JSDoc;
2008        readonly fullName?: JSDocNamespaceDeclaration | Identifier;
2009        readonly name?: Identifier;
2010        readonly typeExpression?: JSDocTypeExpression | JSDocTypeLiteral;
2011    }
2012    export interface JSDocCallbackTag extends JSDocTag, NamedDeclaration {
2013        readonly kind: SyntaxKind.JSDocCallbackTag;
2014        readonly parent: JSDoc;
2015        readonly fullName?: JSDocNamespaceDeclaration | Identifier;
2016        readonly name?: Identifier;
2017        readonly typeExpression: JSDocSignature;
2018    }
2019    export interface JSDocSignature extends JSDocType, Declaration {
2020        readonly kind: SyntaxKind.JSDocSignature;
2021        readonly typeParameters?: readonly JSDocTemplateTag[];
2022        readonly parameters: readonly JSDocParameterTag[];
2023        readonly type: JSDocReturnTag | undefined;
2024    }
2025    export interface JSDocPropertyLikeTag extends JSDocTag, Declaration {
2026        readonly parent: JSDoc;
2027        readonly name: EntityName;
2028        readonly typeExpression?: JSDocTypeExpression;
2029        /** Whether the property name came before the type -- non-standard for JSDoc, but Typescript-like */
2030        readonly isNameFirst: boolean;
2031        readonly isBracketed: boolean;
2032    }
2033    export interface JSDocPropertyTag extends JSDocPropertyLikeTag {
2034        readonly kind: SyntaxKind.JSDocPropertyTag;
2035    }
2036    export interface JSDocParameterTag extends JSDocPropertyLikeTag {
2037        readonly kind: SyntaxKind.JSDocParameterTag;
2038    }
2039    export interface JSDocTypeLiteral extends JSDocType {
2040        readonly kind: SyntaxKind.JSDocTypeLiteral;
2041        readonly jsDocPropertyTags?: readonly JSDocPropertyLikeTag[];
2042        /** If true, then this type literal represents an *array* of its type. */
2043        readonly isArrayType: boolean;
2044    }
2045    export enum FlowFlags {
2046        Unreachable = 1,
2047        Start = 2,
2048        BranchLabel = 4,
2049        LoopLabel = 8,
2050        Assignment = 16,
2051        TrueCondition = 32,
2052        FalseCondition = 64,
2053        SwitchClause = 128,
2054        ArrayMutation = 256,
2055        Call = 512,
2056        ReduceLabel = 1024,
2057        Referenced = 2048,
2058        Shared = 4096,
2059        Label = 12,
2060        Condition = 96
2061    }
2062    export type FlowNode = FlowStart | FlowLabel | FlowAssignment | FlowCondition | FlowSwitchClause | FlowArrayMutation | FlowCall | FlowReduceLabel;
2063    export interface FlowNodeBase {
2064        flags: FlowFlags;
2065        id?: number;
2066    }
2067    export interface FlowStart extends FlowNodeBase {
2068        node?: FunctionExpression | ArrowFunction | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration;
2069    }
2070    export interface FlowLabel extends FlowNodeBase {
2071        antecedents: FlowNode[] | undefined;
2072    }
2073    export interface FlowAssignment extends FlowNodeBase {
2074        node: Expression | VariableDeclaration | BindingElement;
2075        antecedent: FlowNode;
2076    }
2077    export interface FlowCall extends FlowNodeBase {
2078        node: CallExpression;
2079        antecedent: FlowNode;
2080    }
2081    export interface FlowCondition extends FlowNodeBase {
2082        node: Expression;
2083        antecedent: FlowNode;
2084    }
2085    export interface FlowSwitchClause extends FlowNodeBase {
2086        switchStatement: SwitchStatement;
2087        clauseStart: number;
2088        clauseEnd: number;
2089        antecedent: FlowNode;
2090    }
2091    export interface FlowArrayMutation extends FlowNodeBase {
2092        node: CallExpression | BinaryExpression;
2093        antecedent: FlowNode;
2094    }
2095    export interface FlowReduceLabel extends FlowNodeBase {
2096        target: FlowLabel;
2097        antecedents: FlowNode[];
2098        antecedent: FlowNode;
2099    }
2100    export type FlowType = Type | IncompleteType;
2101    export interface IncompleteType {
2102        flags: TypeFlags;
2103        type: Type;
2104    }
2105    export interface AmdDependency {
2106        path: string;
2107        name?: string;
2108    }
2109    /**
2110     * Subset of properties from SourceFile that are used in multiple utility functions
2111     */
2112    export interface SourceFileLike {
2113        readonly text: string;
2114        readonly fileName?: string;
2115    }
2116    export interface SourceFile extends Declaration {
2117        readonly kind: SyntaxKind.SourceFile;
2118        readonly statements: NodeArray<Statement>;
2119        readonly endOfFileToken: Token<SyntaxKind.EndOfFileToken>;
2120        fileName: string;
2121        text: string;
2122        amdDependencies: readonly AmdDependency[];
2123        moduleName?: string;
2124        referencedFiles: readonly FileReference[];
2125        typeReferenceDirectives: readonly FileReference[];
2126        libReferenceDirectives: readonly FileReference[];
2127        languageVariant: LanguageVariant;
2128        isDeclarationFile: boolean;
2129        /**
2130         * lib.d.ts should have a reference comment like
2131         *
2132         *  /// <reference no-default-lib="true"/>
2133         *
2134         * If any other file has this comment, it signals not to include lib.d.ts
2135         * because this containing file is intended to act as a default library.
2136         */
2137        hasNoDefaultLib: boolean;
2138        languageVersion: ScriptTarget;
2139        /**
2140         * When `module` is `Node16` or `NodeNext`, this field controls whether the
2141         * source file in question is an ESNext-output-format file, or a CommonJS-output-format
2142         * module. This is derived by the module resolver as it looks up the file, since
2143         * it is derived from either the file extension of the module, or the containing
2144         * `package.json` context, and affects both checking and emit.
2145         *
2146         * It is _public_ so that (pre)transformers can set this field,
2147         * since it switches the builtin `node` module transform. Generally speaking, if unset,
2148         * the field is treated as though it is `ModuleKind.CommonJS`.
2149         *
2150         * Note that this field is only set by the module resolution process when
2151         * `moduleResolution` is `Node16` or `NodeNext`, which is implied by the `module` setting
2152         * of `Node16` or `NodeNext`, respectively, but may be overriden (eg, by a `moduleResolution`
2153         * of `node`). If so, this field will be unset and source files will be considered to be
2154         * CommonJS-output-format by the node module transformer and type checker, regardless of extension or context.
2155         */
2156        impliedNodeFormat?: ModuleKind.ESNext | ModuleKind.CommonJS;
2157    }
2158    export interface Bundle extends Node {
2159        readonly kind: SyntaxKind.Bundle;
2160        readonly prepends: readonly (InputFiles | UnparsedSource)[];
2161        readonly sourceFiles: readonly SourceFile[];
2162    }
2163    export interface InputFiles extends Node {
2164        readonly kind: SyntaxKind.InputFiles;
2165        javascriptPath?: string;
2166        javascriptText: string;
2167        javascriptMapPath?: string;
2168        javascriptMapText?: string;
2169        declarationPath?: string;
2170        declarationText: string;
2171        declarationMapPath?: string;
2172        declarationMapText?: string;
2173    }
2174    export interface UnparsedSource extends Node {
2175        readonly kind: SyntaxKind.UnparsedSource;
2176        fileName: string;
2177        text: string;
2178        readonly prologues: readonly UnparsedPrologue[];
2179        helpers: readonly UnscopedEmitHelper[] | undefined;
2180        referencedFiles: readonly FileReference[];
2181        typeReferenceDirectives: readonly FileReference[] | undefined;
2182        libReferenceDirectives: readonly FileReference[];
2183        hasNoDefaultLib?: boolean;
2184        sourceMapPath?: string;
2185        sourceMapText?: string;
2186        readonly syntheticReferences?: readonly UnparsedSyntheticReference[];
2187        readonly texts: readonly UnparsedSourceText[];
2188    }
2189    export type UnparsedSourceText = UnparsedPrepend | UnparsedTextLike;
2190    export type UnparsedNode = UnparsedPrologue | UnparsedSourceText | UnparsedSyntheticReference;
2191    export interface UnparsedSection extends Node {
2192        readonly kind: SyntaxKind;
2193        readonly parent: UnparsedSource;
2194        readonly data?: string;
2195    }
2196    export interface UnparsedPrologue extends UnparsedSection {
2197        readonly kind: SyntaxKind.UnparsedPrologue;
2198        readonly parent: UnparsedSource;
2199        readonly data: string;
2200    }
2201    export interface UnparsedPrepend extends UnparsedSection {
2202        readonly kind: SyntaxKind.UnparsedPrepend;
2203        readonly parent: UnparsedSource;
2204        readonly data: string;
2205        readonly texts: readonly UnparsedTextLike[];
2206    }
2207    export interface UnparsedTextLike extends UnparsedSection {
2208        readonly kind: SyntaxKind.UnparsedText | SyntaxKind.UnparsedInternalText;
2209        readonly parent: UnparsedSource;
2210    }
2211    export interface UnparsedSyntheticReference extends UnparsedSection {
2212        readonly kind: SyntaxKind.UnparsedSyntheticReference;
2213        readonly parent: UnparsedSource;
2214    }
2215    export interface JsonSourceFile extends SourceFile {
2216        readonly statements: NodeArray<JsonObjectExpressionStatement>;
2217    }
2218    export interface TsConfigSourceFile extends JsonSourceFile {
2219        extendedSourceFiles?: string[];
2220    }
2221    export interface JsonMinusNumericLiteral extends PrefixUnaryExpression {
2222        readonly kind: SyntaxKind.PrefixUnaryExpression;
2223        readonly operator: SyntaxKind.MinusToken;
2224        readonly operand: NumericLiteral;
2225    }
2226    export type JsonObjectExpression = ObjectLiteralExpression | ArrayLiteralExpression | JsonMinusNumericLiteral | NumericLiteral | StringLiteral | BooleanLiteral | NullLiteral;
2227    export interface JsonObjectExpressionStatement extends ExpressionStatement {
2228        readonly expression: JsonObjectExpression;
2229    }
2230    export interface ScriptReferenceHost {
2231        getCompilerOptions(): CompilerOptions;
2232        getSourceFile(fileName: string): SourceFile | undefined;
2233        getSourceFileByPath(path: Path): SourceFile | undefined;
2234        getCurrentDirectory(): string;
2235    }
2236    export interface ParseConfigHost {
2237        useCaseSensitiveFileNames: boolean;
2238        readDirectory(rootDir: string, extensions: readonly string[], excludes: readonly string[] | undefined, includes: readonly string[], depth?: number): readonly string[];
2239        /**
2240         * Gets a value indicating whether the specified path exists and is a file.
2241         * @param path The path to test.
2242         */
2243        fileExists(path: string): boolean;
2244        readFile(path: string): string | undefined;
2245        trace?(s: string): void;
2246    }
2247    /**
2248     * Branded string for keeping track of when we've turned an ambiguous path
2249     * specified like "./blah" to an absolute path to an actual
2250     * tsconfig file, e.g. "/root/blah/tsconfig.json"
2251     */
2252    export type ResolvedConfigFileName = string & {
2253        _isResolvedConfigFileName: never;
2254    };
2255    export interface WriteFileCallbackData {
2256    }
2257    export type WriteFileCallback = (fileName: string, text: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: readonly SourceFile[], data?: WriteFileCallbackData) => void;
2258    export class OperationCanceledException {
2259    }
2260    export interface CancellationToken {
2261        isCancellationRequested(): boolean;
2262        /** @throws OperationCanceledException if isCancellationRequested is true */
2263        throwIfCancellationRequested(): void;
2264    }
2265    export interface SymbolDisplayPart {
2266        text: string;
2267        kind: string;
2268    }
2269    export interface JsDocTagInfo {
2270        name: string;
2271        text?: string | SymbolDisplayPart[];
2272    }
2273    export interface Program extends ScriptReferenceHost {
2274        getCurrentDirectory(): string;
2275        /**
2276         * Get a list of root file names that were passed to a 'createProgram'
2277         */
2278        getRootFileNames(): readonly string[];
2279        /**
2280         * Get a list of files in the program
2281         */
2282        getSourceFiles(): readonly SourceFile[];
2283        /**
2284         * Emits the JavaScript and declaration files.  If targetSourceFile is not specified, then
2285         * the JavaScript and declaration files will be produced for all the files in this program.
2286         * If targetSourceFile is specified, then only the JavaScript and declaration for that
2287         * specific file will be generated.
2288         *
2289         * If writeFile is not specified then the writeFile callback from the compiler host will be
2290         * used for writing the JavaScript and declaration files.  Otherwise, the writeFile parameter
2291         * will be invoked when writing the JavaScript and declaration files.
2292         */
2293        emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult;
2294        getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
2295        getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
2296        getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[];
2297        /** The first time this is called, it will return global diagnostics (no location). */
2298        getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
2299        getSemanticDiagnosticsForLinter(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
2300        getDeclarationDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[];
2301        getConfigFileParsingDiagnostics(): readonly Diagnostic[];
2302        getEtsLibSFromProgram(): string[];
2303        /**
2304         * Gets a type checker that can be used to semantically analyze source files in the program.
2305         */
2306        getTypeChecker(): TypeChecker;
2307        /**
2308         * Gets a type checker that can be used to semantically analyze source files in the program for arkts linter.
2309         */
2310        getLinterTypeChecker(): TypeChecker;
2311        getNodeCount(): number;
2312        getIdentifierCount(): number;
2313        getSymbolCount(): number;
2314        getTypeCount(): number;
2315        getInstantiationCount(): number;
2316        getRelationCacheSizes(): {
2317            assignable: number;
2318            identity: number;
2319            subtype: number;
2320            strictSubtype: number;
2321        };
2322        isSourceFileFromExternalLibrary(file: SourceFile): boolean;
2323        isSourceFileDefaultLibrary(file: SourceFile): boolean;
2324        getSourceFileFromReference(referencingFile: SourceFile | UnparsedSource, ref: FileReference): SourceFile | undefined;
2325        getProjectReferences(): readonly ProjectReference[] | undefined;
2326        getResolvedProjectReferences(): readonly (ResolvedProjectReference | undefined)[] | undefined;
2327        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
2328        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
2329        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
2330        /**
2331         * Release typeChecker & linterTypeChecker
2332         */
2333        releaseTypeChecker(): void;
2334        getEmitHost(writeFileCallback?: WriteFileCallback): EmitHost;
2335    }
2336    export type RedirectTargetsMap = ReadonlyESMap<Path, readonly string[]>;
2337    export interface ResolvedProjectReference {
2338        commandLine: ParsedCommandLine;
2339        sourceFile: SourceFile;
2340        references?: readonly (ResolvedProjectReference | undefined)[];
2341    }
2342    export type CustomTransformerFactory = (context: TransformationContext) => CustomTransformer;
2343    export interface CustomTransformer {
2344        transformSourceFile(node: SourceFile): SourceFile;
2345        transformBundle(node: Bundle): Bundle;
2346    }
2347    export interface CustomTransformers {
2348        /** Custom transformers to evaluate before built-in .js transformations. */
2349        before?: (TransformerFactory<SourceFile> | CustomTransformerFactory)[];
2350        /** Custom transformers to evaluate after built-in .js transformations. */
2351        after?: (TransformerFactory<SourceFile> | CustomTransformerFactory)[];
2352        /** Custom transformers to evaluate after built-in .d.ts transformations. */
2353        afterDeclarations?: (TransformerFactory<Bundle | SourceFile> | CustomTransformerFactory)[];
2354    }
2355    export interface SourceMapSpan {
2356        /** Line number in the .js file. */
2357        emittedLine: number;
2358        /** Column number in the .js file. */
2359        emittedColumn: number;
2360        /** Line number in the .ts file. */
2361        sourceLine: number;
2362        /** Column number in the .ts file. */
2363        sourceColumn: number;
2364        /** Optional name (index into names array) associated with this span. */
2365        nameIndex?: number;
2366        /** .ts file (index into sources array) associated with this span */
2367        sourceIndex: number;
2368    }
2369    /** Return code used by getEmitOutput function to indicate status of the function */
2370    export enum ExitStatus {
2371        Success = 0,
2372        DiagnosticsPresent_OutputsSkipped = 1,
2373        DiagnosticsPresent_OutputsGenerated = 2,
2374        InvalidProject_OutputsSkipped = 3,
2375        ProjectReferenceCycle_OutputsSkipped = 4,
2376        /** @deprecated Use ProjectReferenceCycle_OutputsSkipped instead. */
2377        ProjectReferenceCycle_OutputsSkupped = 4
2378    }
2379    export interface EmitResult {
2380        emitSkipped: boolean;
2381        /** Contains declaration emit diagnostics */
2382        diagnostics: readonly Diagnostic[];
2383        emittedFiles?: string[];
2384    }
2385    export interface TypeChecker {
2386        getTypeOfSymbolAtLocation(symbol: Symbol, node: Node): Type;
2387        getDeclaredTypeOfSymbol(symbol: Symbol): Type;
2388        getPropertiesOfType(type: Type): Symbol[];
2389        getPropertyOfType(type: Type, propertyName: string): Symbol | undefined;
2390        getPrivateIdentifierPropertyOfType(leftType: Type, name: string, location: Node): Symbol | undefined;
2391        getIndexInfoOfType(type: Type, kind: IndexKind): IndexInfo | undefined;
2392        getIndexInfosOfType(type: Type): readonly IndexInfo[];
2393        getIndexInfosOfIndexSymbol: (indexSymbol: Symbol) => IndexInfo[];
2394        getSignaturesOfType(type: Type, kind: SignatureKind): readonly Signature[];
2395        getIndexTypeOfType(type: Type, kind: IndexKind): Type | undefined;
2396        getBaseTypes(type: InterfaceType): BaseType[];
2397        getBaseTypeOfLiteralType(type: Type): Type;
2398        getWidenedType(type: Type): Type;
2399        getReturnTypeOfSignature(signature: Signature): Type;
2400        getNullableType(type: Type, flags: TypeFlags): Type;
2401        getNonNullableType(type: Type): Type;
2402        getTypeArguments(type: TypeReference): readonly Type[];
2403        /** Note that the resulting nodes cannot be checked. */
2404        typeToTypeNode(type: Type, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): TypeNode | undefined;
2405        /** Note that the resulting nodes cannot be checked. */
2406        signatureToSignatureDeclaration(signature: Signature, kind: SyntaxKind, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): SignatureDeclaration & {
2407            typeArguments?: NodeArray<TypeNode>;
2408        } | undefined;
2409        /** Note that the resulting nodes cannot be checked. */
2410        indexInfoToIndexSignatureDeclaration(indexInfo: IndexInfo, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): IndexSignatureDeclaration | undefined;
2411        /** Note that the resulting nodes cannot be checked. */
2412        symbolToEntityName(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): EntityName | undefined;
2413        /** Note that the resulting nodes cannot be checked. */
2414        symbolToExpression(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): Expression | undefined;
2415        /** Note that the resulting nodes cannot be checked. */
2416        symbolToTypeParameterDeclarations(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): NodeArray<TypeParameterDeclaration> | undefined;
2417        /** Note that the resulting nodes cannot be checked. */
2418        symbolToParameterDeclaration(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): ParameterDeclaration | undefined;
2419        /** Note that the resulting nodes cannot be checked. */
2420        typeParameterToDeclaration(parameter: TypeParameter, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): TypeParameterDeclaration | undefined;
2421        getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[];
2422        getSymbolAtLocation(node: Node): Symbol | undefined;
2423        getSymbolsOfParameterPropertyDeclaration(parameter: ParameterDeclaration, parameterName: string): Symbol[];
2424        /**
2425         * The function returns the value (local variable) symbol of an identifier in the short-hand property assignment.
2426         * This is necessary as an identifier in short-hand property assignment can contains two meaning: property name and property value.
2427         */
2428        getShorthandAssignmentValueSymbol(location: Node | undefined): Symbol | undefined;
2429        getExportSpecifierLocalTargetSymbol(location: ExportSpecifier | Identifier): Symbol | undefined;
2430        /**
2431         * If a symbol is a local symbol with an associated exported symbol, returns the exported symbol.
2432         * Otherwise returns its input.
2433         * For example, at `export type T = number;`:
2434         *     - `getSymbolAtLocation` at the location `T` will return the exported symbol for `T`.
2435         *     - But the result of `getSymbolsInScope` will contain the *local* symbol for `T`, not the exported symbol.
2436         *     - Calling `getExportSymbolOfSymbol` on that local symbol will return the exported symbol.
2437         */
2438        getExportSymbolOfSymbol(symbol: Symbol): Symbol;
2439        getPropertySymbolOfDestructuringAssignment(location: Identifier): Symbol | undefined;
2440        getTypeOfAssignmentPattern(pattern: AssignmentPattern): Type;
2441        getTypeAtLocation(node: Node): Type;
2442        tryGetTypeAtLocationWithoutCheck(node: Node): Type;
2443        getTypeFromTypeNode(node: TypeNode): Type;
2444        signatureToString(signature: Signature, enclosingDeclaration?: Node, flags?: TypeFormatFlags, kind?: SignatureKind): string;
2445        typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string;
2446        symbolToString(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags, flags?: SymbolFormatFlags): string;
2447        typePredicateToString(predicate: TypePredicate, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string;
2448        getFullyQualifiedName(symbol: Symbol): string;
2449        getAugmentedPropertiesOfType(type: Type): Symbol[];
2450        getRootSymbols(symbol: Symbol): readonly Symbol[];
2451        getSymbolOfExpando(node: Node, allowDeclaration: boolean): Symbol | undefined;
2452        getContextualType(node: Expression): Type | undefined;
2453        /**
2454         * returns unknownSignature in the case of an error.
2455         * returns undefined if the node is not valid.
2456         * @param argumentCount Apparent number of arguments, passed in case of a possibly incomplete call. This should come from an ArgumentListInfo. See `signatureHelp.ts`.
2457         */
2458        getResolvedSignature(node: CallLikeExpression, candidatesOutArray?: Signature[], argumentCount?: number): Signature | undefined;
2459        tryGetResolvedSignatureWithoutCheck(node: CallLikeExpression, candidatesOutArray?: Signature[], argumentCount?: number): Signature | undefined;
2460        getSignatureFromDeclaration(declaration: SignatureDeclaration): Signature | undefined;
2461        isImplementationOfOverload(node: SignatureDeclaration): boolean | undefined;
2462        isUndefinedSymbol(symbol: Symbol): boolean;
2463        isArgumentsSymbol(symbol: Symbol): boolean;
2464        isUnknownSymbol(symbol: Symbol): boolean;
2465        getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): string | number | undefined;
2466        isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName | ImportTypeNode, propertyName: string): boolean;
2467        /** Follow all aliases to get the original symbol. */
2468        getAliasedSymbol(symbol: Symbol): Symbol;
2469        /** Follow a *single* alias to get the immediately aliased symbol. */
2470        getImmediateAliasedSymbol(symbol: Symbol): Symbol | undefined;
2471        getExportsOfModule(moduleSymbol: Symbol): Symbol[];
2472        getJsxIntrinsicTagNamesAt(location: Node): Symbol[];
2473        isOptionalParameter(node: ParameterDeclaration): boolean;
2474        getAmbientModules(): Symbol[];
2475        tryGetMemberInModuleExports(memberName: string, moduleSymbol: Symbol): Symbol | undefined;
2476        getApparentType(type: Type): Type;
2477        getBaseConstraintOfType(type: Type): Type | undefined;
2478        getDefaultFromTypeParameter(type: Type): Type | undefined;
2479        getTypePredicateOfSignature(signature: Signature): TypePredicate | undefined;
2480        /**
2481         * Depending on the operation performed, it may be appropriate to throw away the checker
2482         * if the cancellation token is triggered. Typically, if it is used for error checking
2483         * and the operation is cancelled, then it should be discarded, otherwise it is safe to keep.
2484         */
2485        runWithCancellationToken<T>(token: CancellationToken, cb: (checker: TypeChecker) => T): T;
2486        getConstEnumRelate?(): ESMap<string, ESMap<string, string>>;
2487        clearConstEnumRelate?(): void;
2488        deleteConstEnumRelate?(path: string): void;
2489    }
2490    export enum NodeBuilderFlags {
2491        None = 0,
2492        NoTruncation = 1,
2493        WriteArrayAsGenericType = 2,
2494        GenerateNamesForShadowedTypeParams = 4,
2495        UseStructuralFallback = 8,
2496        ForbidIndexedAccessSymbolReferences = 16,
2497        WriteTypeArgumentsOfSignature = 32,
2498        UseFullyQualifiedType = 64,
2499        UseOnlyExternalAliasing = 128,
2500        SuppressAnyReturnType = 256,
2501        WriteTypeParametersInQualifiedName = 512,
2502        MultilineObjectLiterals = 1024,
2503        WriteClassExpressionAsTypeLiteral = 2048,
2504        UseTypeOfFunction = 4096,
2505        OmitParameterModifiers = 8192,
2506        UseAliasDefinedOutsideCurrentScope = 16384,
2507        UseSingleQuotesForStringLiteralType = 268435456,
2508        NoTypeReduction = 536870912,
2509        OmitThisParameter = 33554432,
2510        AllowThisInObjectLiteral = 32768,
2511        AllowQualifiedNameInPlaceOfIdentifier = 65536,
2512        /** @deprecated AllowQualifedNameInPlaceOfIdentifier. Use AllowQualifiedNameInPlaceOfIdentifier instead. */
2513        AllowQualifedNameInPlaceOfIdentifier = 65536,
2514        AllowAnonymousIdentifier = 131072,
2515        AllowEmptyUnionOrIntersection = 262144,
2516        AllowEmptyTuple = 524288,
2517        AllowUniqueESSymbolType = 1048576,
2518        AllowEmptyIndexInfoType = 2097152,
2519        AllowNodeModulesRelativePaths = 67108864,
2520        IgnoreErrors = 70221824,
2521        InObjectTypeLiteral = 4194304,
2522        InTypeAlias = 8388608,
2523        InInitialEntityName = 16777216
2524    }
2525    export enum TypeFormatFlags {
2526        None = 0,
2527        NoTruncation = 1,
2528        WriteArrayAsGenericType = 2,
2529        UseStructuralFallback = 8,
2530        WriteTypeArgumentsOfSignature = 32,
2531        UseFullyQualifiedType = 64,
2532        SuppressAnyReturnType = 256,
2533        MultilineObjectLiterals = 1024,
2534        WriteClassExpressionAsTypeLiteral = 2048,
2535        UseTypeOfFunction = 4096,
2536        OmitParameterModifiers = 8192,
2537        UseAliasDefinedOutsideCurrentScope = 16384,
2538        UseSingleQuotesForStringLiteralType = 268435456,
2539        NoTypeReduction = 536870912,
2540        OmitThisParameter = 33554432,
2541        AllowUniqueESSymbolType = 1048576,
2542        AddUndefined = 131072,
2543        WriteArrowStyleSignature = 262144,
2544        InArrayType = 524288,
2545        InElementType = 2097152,
2546        InFirstTypeArgument = 4194304,
2547        InTypeAlias = 8388608,
2548        /** @deprecated */ WriteOwnNameForAnyLike = 0,
2549        NodeBuilderFlagsMask = 848330091
2550    }
2551    export enum SymbolFormatFlags {
2552        None = 0,
2553        WriteTypeParametersOrArguments = 1,
2554        UseOnlyExternalAliasing = 2,
2555        AllowAnyNodeKind = 4,
2556        UseAliasDefinedOutsideCurrentScope = 8,
2557    }
2558    interface SymbolWriter extends SymbolTracker {
2559        writeKeyword(text: string): void;
2560        writeOperator(text: string): void;
2561        writePunctuation(text: string): void;
2562        writeSpace(text: string): void;
2563        writeStringLiteral(text: string): void;
2564        writeParameter(text: string): void;
2565        writeProperty(text: string): void;
2566        writeSymbol(text: string, symbol: Symbol): void;
2567        writeLine(force?: boolean): void;
2568        increaseIndent(): void;
2569        decreaseIndent(): void;
2570        clear(): void;
2571    }
2572    export enum TypePredicateKind {
2573        This = 0,
2574        Identifier = 1,
2575        AssertsThis = 2,
2576        AssertsIdentifier = 3
2577    }
2578    export interface TypePredicateBase {
2579        kind: TypePredicateKind;
2580        type: Type | undefined;
2581    }
2582    export interface ThisTypePredicate extends TypePredicateBase {
2583        kind: TypePredicateKind.This;
2584        parameterName: undefined;
2585        parameterIndex: undefined;
2586        type: Type;
2587    }
2588    export interface IdentifierTypePredicate extends TypePredicateBase {
2589        kind: TypePredicateKind.Identifier;
2590        parameterName: string;
2591        parameterIndex: number;
2592        type: Type;
2593    }
2594    export interface AssertsThisTypePredicate extends TypePredicateBase {
2595        kind: TypePredicateKind.AssertsThis;
2596        parameterName: undefined;
2597        parameterIndex: undefined;
2598        type: Type | undefined;
2599    }
2600    export interface AssertsIdentifierTypePredicate extends TypePredicateBase {
2601        kind: TypePredicateKind.AssertsIdentifier;
2602        parameterName: string;
2603        parameterIndex: number;
2604        type: Type | undefined;
2605    }
2606    export type TypePredicate = ThisTypePredicate | IdentifierTypePredicate | AssertsThisTypePredicate | AssertsIdentifierTypePredicate;
2607    export enum SymbolFlags {
2608        None = 0,
2609        FunctionScopedVariable = 1,
2610        BlockScopedVariable = 2,
2611        Property = 4,
2612        EnumMember = 8,
2613        Function = 16,
2614        Class = 32,
2615        Interface = 64,
2616        ConstEnum = 128,
2617        RegularEnum = 256,
2618        ValueModule = 512,
2619        NamespaceModule = 1024,
2620        TypeLiteral = 2048,
2621        ObjectLiteral = 4096,
2622        Method = 8192,
2623        Constructor = 16384,
2624        GetAccessor = 32768,
2625        SetAccessor = 65536,
2626        Signature = 131072,
2627        TypeParameter = 262144,
2628        TypeAlias = 524288,
2629        ExportValue = 1048576,
2630        Alias = 2097152,
2631        Prototype = 4194304,
2632        ExportStar = 8388608,
2633        Optional = 16777216,
2634        Transient = 33554432,
2635        Assignment = 67108864,
2636        ModuleExports = 134217728,
2637        Enum = 384,
2638        Variable = 3,
2639        Value = 111551,
2640        Type = 788968,
2641        Namespace = 1920,
2642        Module = 1536,
2643        Accessor = 98304,
2644        FunctionScopedVariableExcludes = 111550,
2645        BlockScopedVariableExcludes = 111551,
2646        ParameterExcludes = 111551,
2647        PropertyExcludes = 0,
2648        EnumMemberExcludes = 900095,
2649        FunctionExcludes = 110991,
2650        ClassExcludes = 899503,
2651        InterfaceExcludes = 788872,
2652        RegularEnumExcludes = 899327,
2653        ConstEnumExcludes = 899967,
2654        ValueModuleExcludes = 110735,
2655        NamespaceModuleExcludes = 0,
2656        MethodExcludes = 103359,
2657        GetAccessorExcludes = 46015,
2658        SetAccessorExcludes = 78783,
2659        AccessorExcludes = 13247,
2660        TypeParameterExcludes = 526824,
2661        TypeAliasExcludes = 788968,
2662        AliasExcludes = 2097152,
2663        ModuleMember = 2623475,
2664        ExportHasLocal = 944,
2665        BlockScoped = 418,
2666        PropertyOrAccessor = 98308,
2667        ClassMember = 106500,
2668    }
2669    export interface Symbol {
2670        flags: SymbolFlags;
2671        escapedName: __String;
2672        declarations?: Declaration[];
2673        valueDeclaration?: Declaration;
2674        members?: SymbolTable;
2675        exports?: SymbolTable;
2676        globalExports?: SymbolTable;
2677        exportSymbol?: Symbol;
2678    }
2679    export enum InternalSymbolName {
2680        Call = "__call",
2681        Constructor = "__constructor",
2682        New = "__new",
2683        Index = "__index",
2684        ExportStar = "__export",
2685        Global = "__global",
2686        Missing = "__missing",
2687        Type = "__type",
2688        Object = "__object",
2689        JSXAttributes = "__jsxAttributes",
2690        Class = "__class",
2691        Function = "__function",
2692        Computed = "__computed",
2693        Resolving = "__resolving__",
2694        ExportEquals = "export=",
2695        Default = "default",
2696        This = "this"
2697    }
2698    /**
2699     * This represents a string whose leading underscore have been escaped by adding extra leading underscores.
2700     * The shape of this brand is rather unique compared to others we've used.
2701     * Instead of just an intersection of a string and an object, it is that union-ed
2702     * with an intersection of void and an object. This makes it wholly incompatible
2703     * with a normal string (which is good, it cannot be misused on assignment or on usage),
2704     * while still being comparable with a normal string via === (also good) and castable from a string.
2705     */
2706    export type __String = (string & {
2707        __escapedIdentifier: void;
2708    }) | (void & {
2709        __escapedIdentifier: void;
2710    }) | InternalSymbolName;
2711    /** ReadonlyMap where keys are `__String`s. */
2712    export interface ReadonlyUnderscoreEscapedMap<T> extends ReadonlyESMap<__String, T> {
2713    }
2714    /** Map where keys are `__String`s. */
2715    export interface UnderscoreEscapedMap<T> extends ESMap<__String, T>, ReadonlyUnderscoreEscapedMap<T> {
2716    }
2717    /** SymbolTable based on ES6 Map interface. */
2718    export type SymbolTable = UnderscoreEscapedMap<Symbol>;
2719    export enum TypeFlags {
2720        Any = 1,
2721        Unknown = 2,
2722        String = 4,
2723        Number = 8,
2724        Boolean = 16,
2725        Enum = 32,
2726        BigInt = 64,
2727        StringLiteral = 128,
2728        NumberLiteral = 256,
2729        BooleanLiteral = 512,
2730        EnumLiteral = 1024,
2731        BigIntLiteral = 2048,
2732        ESSymbol = 4096,
2733        UniqueESSymbol = 8192,
2734        Void = 16384,
2735        Undefined = 32768,
2736        Null = 65536,
2737        Never = 131072,
2738        TypeParameter = 262144,
2739        Object = 524288,
2740        Union = 1048576,
2741        Intersection = 2097152,
2742        Index = 4194304,
2743        IndexedAccess = 8388608,
2744        Conditional = 16777216,
2745        Substitution = 33554432,
2746        NonPrimitive = 67108864,
2747        TemplateLiteral = 134217728,
2748        StringMapping = 268435456,
2749        Literal = 2944,
2750        Unit = 109440,
2751        StringOrNumberLiteral = 384,
2752        PossiblyFalsy = 117724,
2753        StringLike = 402653316,
2754        NumberLike = 296,
2755        BigIntLike = 2112,
2756        BooleanLike = 528,
2757        EnumLike = 1056,
2758        ESSymbolLike = 12288,
2759        VoidLike = 49152,
2760        UnionOrIntersection = 3145728,
2761        StructuredType = 3670016,
2762        TypeVariable = 8650752,
2763        InstantiableNonPrimitive = 58982400,
2764        InstantiablePrimitive = 406847488,
2765        Instantiable = 465829888,
2766        StructuredOrInstantiable = 469499904,
2767        Narrowable = 536624127,
2768    }
2769    export type DestructuringPattern = BindingPattern | ObjectLiteralExpression | ArrayLiteralExpression;
2770    export interface Type {
2771        flags: TypeFlags;
2772        symbol: Symbol;
2773        pattern?: DestructuringPattern;
2774        aliasSymbol?: Symbol;
2775        aliasTypeArguments?: readonly Type[];
2776    }
2777    export interface LiteralType extends Type {
2778        value: string | number | PseudoBigInt;
2779        freshType: LiteralType;
2780        regularType: LiteralType;
2781    }
2782    export interface UniqueESSymbolType extends Type {
2783        symbol: Symbol;
2784        escapedName: __String;
2785    }
2786    export interface StringLiteralType extends LiteralType {
2787        value: string;
2788    }
2789    export interface NumberLiteralType extends LiteralType {
2790        value: number;
2791    }
2792    export interface BigIntLiteralType extends LiteralType {
2793        value: PseudoBigInt;
2794    }
2795    export interface EnumType extends Type {
2796    }
2797    export enum ObjectFlags {
2798        Class = 1,
2799        Interface = 2,
2800        Reference = 4,
2801        Tuple = 8,
2802        Anonymous = 16,
2803        Mapped = 32,
2804        Instantiated = 64,
2805        ObjectLiteral = 128,
2806        EvolvingArray = 256,
2807        ObjectLiteralPatternWithComputedProperties = 512,
2808        ReverseMapped = 1024,
2809        JsxAttributes = 2048,
2810        JSLiteral = 4096,
2811        FreshLiteral = 8192,
2812        ArrayLiteral = 16384,
2813        ClassOrInterface = 3,
2814        ContainsSpread = 2097152,
2815        ObjectRestType = 4194304,
2816        InstantiationExpressionType = 8388608,
2817    }
2818    export interface ObjectType extends Type {
2819        objectFlags: ObjectFlags;
2820    }
2821    /** Class and interface types (ObjectFlags.Class and ObjectFlags.Interface). */
2822    export interface InterfaceType extends ObjectType {
2823        typeParameters: TypeParameter[] | undefined;
2824        outerTypeParameters: TypeParameter[] | undefined;
2825        localTypeParameters: TypeParameter[] | undefined;
2826        thisType: TypeParameter | undefined;
2827    }
2828    export type BaseType = ObjectType | IntersectionType | TypeVariable;
2829    export interface InterfaceTypeWithDeclaredMembers extends InterfaceType {
2830        declaredProperties: Symbol[];
2831        declaredCallSignatures: Signature[];
2832        declaredConstructSignatures: Signature[];
2833        declaredIndexInfos: IndexInfo[];
2834    }
2835    /**
2836     * Type references (ObjectFlags.Reference). When a class or interface has type parameters or
2837     * a "this" type, references to the class or interface are made using type references. The
2838     * typeArguments property specifies the types to substitute for the type parameters of the
2839     * class or interface and optionally includes an extra element that specifies the type to
2840     * substitute for "this" in the resulting instantiation. When no extra argument is present,
2841     * the type reference itself is substituted for "this". The typeArguments property is undefined
2842     * if the class or interface has no type parameters and the reference isn't specifying an
2843     * explicit "this" argument.
2844     */
2845    export interface TypeReference extends ObjectType {
2846        target: GenericType;
2847        node?: TypeReferenceNode | ArrayTypeNode | TupleTypeNode;
2848    }
2849    export interface DeferredTypeReference extends TypeReference {
2850    }
2851    export interface GenericType extends InterfaceType, TypeReference {
2852    }
2853    export enum ElementFlags {
2854        Required = 1,
2855        Optional = 2,
2856        Rest = 4,
2857        Variadic = 8,
2858        Fixed = 3,
2859        Variable = 12,
2860        NonRequired = 14,
2861        NonRest = 11
2862    }
2863    export interface TupleType extends GenericType {
2864        elementFlags: readonly ElementFlags[];
2865        minLength: number;
2866        fixedLength: number;
2867        hasRestElement: boolean;
2868        combinedFlags: ElementFlags;
2869        readonly: boolean;
2870        labeledElementDeclarations?: readonly (NamedTupleMember | ParameterDeclaration)[];
2871    }
2872    export interface TupleTypeReference extends TypeReference {
2873        target: TupleType;
2874    }
2875    export interface UnionOrIntersectionType extends Type {
2876        types: Type[];
2877    }
2878    export interface UnionType extends UnionOrIntersectionType {
2879    }
2880    export interface IntersectionType extends UnionOrIntersectionType {
2881    }
2882    export type StructuredType = ObjectType | UnionType | IntersectionType;
2883    export interface EvolvingArrayType extends ObjectType {
2884        elementType: Type;
2885        finalArrayType?: Type;
2886    }
2887    export interface InstantiableType extends Type {
2888    }
2889    export interface TypeParameter extends InstantiableType {
2890    }
2891    export interface IndexedAccessType extends InstantiableType {
2892        objectType: Type;
2893        indexType: Type;
2894        constraint?: Type;
2895        simplifiedForReading?: Type;
2896        simplifiedForWriting?: Type;
2897    }
2898    export type TypeVariable = TypeParameter | IndexedAccessType;
2899    export interface IndexType extends InstantiableType {
2900        type: InstantiableType | UnionOrIntersectionType;
2901    }
2902    export interface ConditionalRoot {
2903        node: ConditionalTypeNode;
2904        checkType: Type;
2905        extendsType: Type;
2906        isDistributive: boolean;
2907        inferTypeParameters?: TypeParameter[];
2908        outerTypeParameters?: TypeParameter[];
2909        instantiations?: Map<Type>;
2910        aliasSymbol?: Symbol;
2911        aliasTypeArguments?: Type[];
2912    }
2913    export interface ConditionalType extends InstantiableType {
2914        root: ConditionalRoot;
2915        checkType: Type;
2916        extendsType: Type;
2917        resolvedTrueType?: Type;
2918        resolvedFalseType?: Type;
2919    }
2920    export interface TemplateLiteralType extends InstantiableType {
2921        texts: readonly string[];
2922        types: readonly Type[];
2923    }
2924    export interface StringMappingType extends InstantiableType {
2925        symbol: Symbol;
2926        type: Type;
2927    }
2928    export interface SubstitutionType extends InstantiableType {
2929        objectFlags: ObjectFlags;
2930        baseType: Type;
2931        constraint: Type;
2932    }
2933    export enum SignatureKind {
2934        Call = 0,
2935        Construct = 1
2936    }
2937    export interface Signature {
2938        declaration?: SignatureDeclaration | JSDocSignature;
2939        typeParameters?: readonly TypeParameter[];
2940        parameters: readonly Symbol[];
2941    }
2942    export enum IndexKind {
2943        String = 0,
2944        Number = 1
2945    }
2946    export interface IndexInfo {
2947        keyType: Type;
2948        type: Type;
2949        isReadonly: boolean;
2950        declaration?: IndexSignatureDeclaration;
2951    }
2952    export enum InferencePriority {
2953        NakedTypeVariable = 1,
2954        SpeculativeTuple = 2,
2955        SubstituteSource = 4,
2956        HomomorphicMappedType = 8,
2957        PartialHomomorphicMappedType = 16,
2958        MappedTypeConstraint = 32,
2959        ContravariantConditional = 64,
2960        ReturnType = 128,
2961        LiteralKeyof = 256,
2962        NoConstraints = 512,
2963        AlwaysStrict = 1024,
2964        MaxValue = 2048,
2965        PriorityImpliesCombination = 416,
2966        Circularity = -1
2967    }
2968    /** @deprecated Use FileExtensionInfo instead. */
2969    export type JsFileExtensionInfo = FileExtensionInfo;
2970    export interface FileExtensionInfo {
2971        extension: string;
2972        isMixedContent: boolean;
2973        scriptKind?: ScriptKind;
2974    }
2975    export interface DiagnosticMessage {
2976        key: string;
2977        category: DiagnosticCategory;
2978        code: number;
2979        message: string;
2980        reportsUnnecessary?: {};
2981        reportsDeprecated?: {};
2982    }
2983    /**
2984     * A linked list of formatted diagnostic messages to be used as part of a multiline message.
2985     * It is built from the bottom up, leaving the head to be the "main" diagnostic.
2986     * While it seems that DiagnosticMessageChain is structurally similar to DiagnosticMessage,
2987     * the difference is that messages are all preformatted in DMC.
2988     */
2989    export interface DiagnosticMessageChain {
2990        messageText: string;
2991        category: DiagnosticCategory;
2992        code: number;
2993        next?: DiagnosticMessageChain[];
2994    }
2995    export interface Diagnostic extends DiagnosticRelatedInformation {
2996        /** May store more in future. For now, this will simply be `true` to indicate when a diagnostic is an unused-identifier diagnostic. */
2997        reportsUnnecessary?: {};
2998        reportsDeprecated?: {};
2999        source?: string;
3000        relatedInformation?: DiagnosticRelatedInformation[];
3001    }
3002    export interface DiagnosticRelatedInformation {
3003        category: DiagnosticCategory;
3004        code: number;
3005        file: SourceFile | undefined;
3006        start: number | undefined;
3007        length: number | undefined;
3008        messageText: string | DiagnosticMessageChain;
3009    }
3010    export interface DiagnosticWithLocation extends Diagnostic {
3011        file: SourceFile;
3012        start: number;
3013        length: number;
3014    }
3015    export enum DiagnosticCategory {
3016        Warning = 0,
3017        Error = 1,
3018        Suggestion = 2,
3019        Message = 3
3020    }
3021    export enum ModuleResolutionKind {
3022        Classic = 1,
3023        NodeJs = 2,
3024        Node16 = 3,
3025        NodeNext = 99
3026    }
3027    export enum ModuleDetectionKind {
3028        /**
3029         * Files with imports, exports and/or import.meta are considered modules
3030         */
3031        Legacy = 1,
3032        /**
3033         * Legacy, but also files with jsx under react-jsx or react-jsxdev and esm mode files under moduleResolution: node16+
3034         */
3035        Auto = 2,
3036        /**
3037         * Consider all non-declaration files modules, regardless of present syntax
3038         */
3039        Force = 3
3040    }
3041    export interface PluginImport {
3042        name: string;
3043    }
3044    export interface ProjectReference {
3045        /** A normalized path on disk */
3046        path: string;
3047        /** The path as the user originally wrote it */
3048        originalPath?: string;
3049        /** True if the output of this reference should be prepended to the output of this project. Only valid for --outFile compilations */
3050        prepend?: boolean;
3051        /** True if it is intended that this reference form a circularity */
3052        circular?: boolean;
3053    }
3054    export enum WatchFileKind {
3055        FixedPollingInterval = 0,
3056        PriorityPollingInterval = 1,
3057        DynamicPriorityPolling = 2,
3058        FixedChunkSizePolling = 3,
3059        UseFsEvents = 4,
3060        UseFsEventsOnParentDirectory = 5
3061    }
3062    export enum WatchDirectoryKind {
3063        UseFsEvents = 0,
3064        FixedPollingInterval = 1,
3065        DynamicPriorityPolling = 2,
3066        FixedChunkSizePolling = 3
3067    }
3068    export enum PollingWatchKind {
3069        FixedInterval = 0,
3070        PriorityInterval = 1,
3071        DynamicPriority = 2,
3072        FixedChunkSize = 3
3073    }
3074    export type CompilerOptionsValue = string | number | boolean | (string | number)[] | string[] | MapLike<string[]> | PluginImport[] | ProjectReference[] | null | undefined | EtsOptions;
3075    export interface CompilerOptions {
3076        allowJs?: boolean;
3077        allowSyntheticDefaultImports?: boolean;
3078        allowUmdGlobalAccess?: boolean;
3079        allowUnreachableCode?: boolean;
3080        allowUnusedLabels?: boolean;
3081        alwaysStrict?: boolean;
3082        baseUrl?: string;
3083        charset?: string;
3084        checkJs?: boolean;
3085        declaration?: boolean;
3086        declarationMap?: boolean;
3087        emitDeclarationOnly?: boolean;
3088        declarationDir?: string;
3089        disableSizeLimit?: boolean;
3090        disableSourceOfProjectReferenceRedirect?: boolean;
3091        disableSolutionSearching?: boolean;
3092        disableReferencedProjectLoad?: boolean;
3093        downlevelIteration?: boolean;
3094        emitBOM?: boolean;
3095        emitDecoratorMetadata?: boolean;
3096        exactOptionalPropertyTypes?: boolean;
3097        experimentalDecorators?: boolean;
3098        forceConsistentCasingInFileNames?: boolean;
3099        importHelpers?: boolean;
3100        importsNotUsedAsValues?: ImportsNotUsedAsValues;
3101        inlineSourceMap?: boolean;
3102        inlineSources?: boolean;
3103        isolatedModules?: boolean;
3104        jsx?: JsxEmit;
3105        keyofStringsOnly?: boolean;
3106        lib?: string[];
3107        locale?: string;
3108        mapRoot?: string;
3109        maxNodeModuleJsDepth?: number;
3110        module?: ModuleKind;
3111        moduleResolution?: ModuleResolutionKind;
3112        moduleSuffixes?: string[];
3113        moduleDetection?: ModuleDetectionKind;
3114        newLine?: NewLineKind;
3115        noEmit?: boolean;
3116        noEmitHelpers?: boolean;
3117        noEmitOnError?: boolean;
3118        noErrorTruncation?: boolean;
3119        noFallthroughCasesInSwitch?: boolean;
3120        noImplicitAny?: boolean;
3121        noImplicitReturns?: boolean;
3122        noImplicitThis?: boolean;
3123        noStrictGenericChecks?: boolean;
3124        noUnusedLocals?: boolean;
3125        noUnusedParameters?: boolean;
3126        noImplicitUseStrict?: boolean;
3127        noPropertyAccessFromIndexSignature?: boolean;
3128        assumeChangesOnlyAffectDirectDependencies?: boolean;
3129        noLib?: boolean;
3130        noResolve?: boolean;
3131        noUncheckedIndexedAccess?: boolean;
3132        out?: string;
3133        outDir?: string;
3134        outFile?: string;
3135        paths?: MapLike<string[]>;
3136        preserveConstEnums?: boolean;
3137        noImplicitOverride?: boolean;
3138        preserveSymlinks?: boolean;
3139        preserveValueImports?: boolean;
3140        project?: string;
3141        reactNamespace?: string;
3142        jsxFactory?: string;
3143        jsxFragmentFactory?: string;
3144        jsxImportSource?: string;
3145        composite?: boolean;
3146        incremental?: boolean;
3147        tsBuildInfoFile?: string;
3148        removeComments?: boolean;
3149        rootDir?: string;
3150        rootDirs?: string[];
3151        skipLibCheck?: boolean;
3152        skipDefaultLibCheck?: boolean;
3153        sourceMap?: boolean;
3154        sourceRoot?: string;
3155        strict?: boolean;
3156        strictFunctionTypes?: boolean;
3157        strictBindCallApply?: boolean;
3158        strictNullChecks?: boolean;
3159        strictPropertyInitialization?: boolean;
3160        stripInternal?: boolean;
3161        suppressExcessPropertyErrors?: boolean;
3162        suppressImplicitAnyIndexErrors?: boolean;
3163        target?: ScriptTarget;
3164        traceResolution?: boolean;
3165        useUnknownInCatchVariables?: boolean;
3166        resolveJsonModule?: boolean;
3167        types?: string[];
3168        /** Paths used to compute primary types search locations */
3169        typeRoots?: string[];
3170        esModuleInterop?: boolean;
3171        useDefineForClassFields?: boolean;
3172        ets?: EtsOptions;
3173        packageManagerType?: string;
3174        emitNodeModulesFiles?: boolean;
3175        etsLoaderPath?: string;
3176        tsImportSendableEnable?: boolean;
3177        skipPathsInKeyForCompilationSettings?: boolean;
3178        compatibleSdkVersion?: number;
3179        compatibleSdkVersionStage?: string;
3180        [option: string]: CompilerOptionsValue | TsConfigSourceFile | undefined;
3181    }
3182    export interface EtsOptions {
3183        render: {
3184            method: string[];
3185            decorator: string[];
3186        };
3187        components: string[];
3188        libs: string[];
3189        extend: {
3190            decorator: string[];
3191            components: {
3192                name: string;
3193                type: string;
3194                instance: string;
3195            }[];
3196        };
3197        styles: {
3198            decorator: string;
3199            component: {
3200                name: string;
3201                type: string;
3202                instance: string;
3203            };
3204            property: string;
3205        };
3206        concurrent: {
3207            decorator: string;
3208        };
3209        customComponent?: string;
3210        propertyDecorators: {
3211            name: string;
3212            needInitialization: boolean;
3213        }[];
3214        emitDecorators: {
3215            name: string;
3216            emitParameters: boolean;
3217        }[];
3218        syntaxComponents: {
3219            paramsUICallback: string[];
3220            attrUICallback: {
3221                name: string;
3222                attributes: string[];
3223            }[];
3224        };
3225    }
3226    export interface WatchOptions {
3227        watchFile?: WatchFileKind;
3228        watchDirectory?: WatchDirectoryKind;
3229        fallbackPolling?: PollingWatchKind;
3230        synchronousWatchDirectory?: boolean;
3231        excludeDirectories?: string[];
3232        excludeFiles?: string[];
3233        [option: string]: CompilerOptionsValue | undefined;
3234    }
3235    export interface TypeAcquisition {
3236        /**
3237         * @deprecated typingOptions.enableAutoDiscovery
3238         * Use typeAcquisition.enable instead.
3239         */
3240        enableAutoDiscovery?: boolean;
3241        enable?: boolean;
3242        include?: string[];
3243        exclude?: string[];
3244        disableFilenameBasedTypeAcquisition?: boolean;
3245        [option: string]: CompilerOptionsValue | undefined;
3246    }
3247    export enum ModuleKind {
3248        None = 0,
3249        CommonJS = 1,
3250        AMD = 2,
3251        UMD = 3,
3252        System = 4,
3253        ES2015 = 5,
3254        ES2020 = 6,
3255        ES2022 = 7,
3256        ESNext = 99,
3257        Node16 = 100,
3258        NodeNext = 199
3259    }
3260    export enum JsxEmit {
3261        None = 0,
3262        Preserve = 1,
3263        React = 2,
3264        ReactNative = 3,
3265        ReactJSX = 4,
3266        ReactJSXDev = 5
3267    }
3268    export enum ImportsNotUsedAsValues {
3269        Remove = 0,
3270        Preserve = 1,
3271        Error = 2
3272    }
3273    export enum NewLineKind {
3274        CarriageReturnLineFeed = 0,
3275        LineFeed = 1
3276    }
3277    export interface LineAndCharacter {
3278        /** 0-based. */
3279        line: number;
3280        character: number;
3281    }
3282    export enum ScriptKind {
3283        Unknown = 0,
3284        JS = 1,
3285        JSX = 2,
3286        TS = 3,
3287        TSX = 4,
3288        External = 5,
3289        JSON = 6,
3290        /**
3291         * Used on extensions that doesn't define the ScriptKind but the content defines it.
3292         * Deferred extensions are going to be included in all project contexts.
3293         */
3294        Deferred = 7,
3295        ETS = 8
3296    }
3297    export enum ScriptTarget {
3298        ES3 = 0,
3299        ES5 = 1,
3300        ES2015 = 2,
3301        ES2016 = 3,
3302        ES2017 = 4,
3303        ES2018 = 5,
3304        ES2019 = 6,
3305        ES2020 = 7,
3306        ES2021 = 8,
3307        ES2022 = 9,
3308        ESNext = 99,
3309        JSON = 100,
3310        Latest = 99
3311    }
3312    export enum LanguageVariant {
3313        Standard = 0,
3314        JSX = 1
3315    }
3316    /** Either a parsed command line or a parsed tsconfig.json */
3317    export interface ParsedCommandLine {
3318        options: CompilerOptions;
3319        typeAcquisition?: TypeAcquisition;
3320        fileNames: string[];
3321        projectReferences?: readonly ProjectReference[];
3322        watchOptions?: WatchOptions;
3323        raw?: any;
3324        errors: Diagnostic[];
3325        wildcardDirectories?: MapLike<WatchDirectoryFlags>;
3326        compileOnSave?: boolean;
3327    }
3328    export enum WatchDirectoryFlags {
3329        None = 0,
3330        Recursive = 1
3331    }
3332    export interface CreateProgramOptions {
3333        rootNames: readonly string[];
3334        options: CompilerOptions;
3335        projectReferences?: readonly ProjectReference[];
3336        host?: CompilerHost;
3337        oldProgram?: Program;
3338        configFileParsingDiagnostics?: readonly Diagnostic[];
3339    }
3340    export interface ModuleResolutionHost {
3341        fileExists(fileName: string): boolean;
3342        readFile(fileName: string): string | undefined;
3343        trace?(s: string): void;
3344        directoryExists?(directoryName: string): boolean;
3345        /**
3346         * Resolve a symbolic link.
3347         * @see https://nodejs.org/api/fs.html#fs_fs_realpathsync_path_options
3348         */
3349        realpath?(path: string): string;
3350        getCurrentDirectory?(): string;
3351        getDirectories?(path: string): string[];
3352        useCaseSensitiveFileNames?: boolean | (() => boolean) | undefined;
3353        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
3354        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
3355        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
3356    }
3357    /**
3358     * Used by services to specify the minimum host area required to set up source files under any compilation settings
3359     */
3360    export interface MinimalResolutionCacheHost extends ModuleResolutionHost {
3361        getCompilationSettings(): CompilerOptions;
3362        getCompilerHost?(): CompilerHost | undefined;
3363    }
3364    /**
3365     * Represents the result of module resolution.
3366     * Module resolution will pick up tsx/jsx/js files even if '--jsx' and '--allowJs' are turned off.
3367     * The Program will then filter results based on these flags.
3368     *
3369     * Prefer to return a `ResolvedModuleFull` so that the file type does not have to be inferred.
3370     */
3371    export interface ResolvedModule {
3372        /** Path of the file the module was resolved to. */
3373        resolvedFileName: string;
3374        /** True if `resolvedFileName` comes from `node_modules`. */
3375        isExternalLibraryImport?: boolean;
3376    }
3377    /**
3378     * ResolvedModule with an explicitly provided `extension` property.
3379     * Prefer this over `ResolvedModule`.
3380     * If changing this, remember to change `moduleResolutionIsEqualTo`.
3381     */
3382    export interface ResolvedModuleFull extends ResolvedModule {
3383        /**
3384         * Extension of resolvedFileName. This must match what's at the end of resolvedFileName.
3385         * This is optional for backwards-compatibility, but will be added if not provided.
3386         */
3387        extension: Extension;
3388        packageId?: PackageId;
3389    }
3390    /**
3391     * Unique identifier with a package name and version.
3392     * If changing this, remember to change `packageIdIsEqual`.
3393     */
3394    export interface PackageId {
3395        /**
3396         * Name of the package.
3397         * Should not include `@types`.
3398         * If accessing a non-index file, this should include its name e.g. "foo/bar".
3399         */
3400        name: string;
3401        /**
3402         * Name of a submodule within this package.
3403         * May be "".
3404         */
3405        subModuleName: string;
3406        /** Version of the package, e.g. "1.2.3" */
3407        version: string;
3408    }
3409    export enum Extension {
3410        Ts = ".ts",
3411        Tsx = ".tsx",
3412        Dts = ".d.ts",
3413        Js = ".js",
3414        Jsx = ".jsx",
3415        Json = ".json",
3416        TsBuildInfo = ".tsbuildinfo",
3417        Mjs = ".mjs",
3418        Mts = ".mts",
3419        Dmts = ".d.mts",
3420        Cjs = ".cjs",
3421        Cts = ".cts",
3422        Dcts = ".d.cts",
3423        Ets = ".ets",
3424        Dets = ".d.ets"
3425    }
3426    export interface ResolvedModuleWithFailedLookupLocations {
3427        readonly resolvedModule: ResolvedModuleFull | undefined;
3428    }
3429    export interface ResolvedTypeReferenceDirective {
3430        primary: boolean;
3431        resolvedFileName: string | undefined;
3432        packageId?: PackageId;
3433        /** True if `resolvedFileName` comes from `node_modules` or `oh_modules`. */
3434        isExternalLibraryImport?: boolean;
3435    }
3436    export interface ResolvedTypeReferenceDirectiveWithFailedLookupLocations {
3437        readonly resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective | undefined;
3438        readonly failedLookupLocations: string[];
3439    }
3440    export interface FileCheckModuleInfo {
3441        fileNeedCheck: boolean;
3442        checkPayload: any;
3443        currentFileName: string;
3444    }
3445    export interface JsDocNodeCheckConfig {
3446        nodeNeedCheck: boolean;
3447        checkConfig: JsDocNodeCheckConfigItem[];
3448    }
3449    export interface JsDocNodeCheckConfigItem {
3450        tagName: string[];
3451        message: string;
3452        needConditionCheck: boolean;
3453        type: DiagnosticCategory;
3454        specifyCheckConditionFuncName: string;
3455        tagNameShouldExisted: boolean;
3456        checkValidCallback?: (jsDocTag: JSDocTag, config: JsDocNodeCheckConfigItem) => boolean;
3457        checkJsDocSpecialValidCallback?: (jsDocTags: readonly JSDocTag[], config: JsDocNodeCheckConfigItem) => boolean;
3458    }
3459    export interface TagCheckParam {
3460        needCheck: boolean;
3461        checkConfig: TagCheckConfig[];
3462    }
3463    export interface TagCheckConfig {
3464        tagName: string;
3465        message: string;
3466        needConditionCheck: boolean;
3467        specifyCheckConditionFuncName: string;
3468    }
3469    export interface ConditionCheckResult {
3470        valid: boolean;
3471        type?: DiagnosticCategory;
3472        message?: string;
3473    }
3474    export interface CompilerHost extends ModuleResolutionHost {
3475        getSourceFile(fileName: string, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, onError?: (message: string) => void, shouldCreateNewSourceFile?: boolean): SourceFile | undefined;
3476        getSourceFileByPath?(fileName: string, path: Path, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, onError?: (message: string) => void, shouldCreateNewSourceFile?: boolean): SourceFile | undefined;
3477        getCancellationToken?(): CancellationToken;
3478        getDefaultLibFileName(options: CompilerOptions): string;
3479        getDefaultLibLocation?(): string;
3480        writeFile: WriteFileCallback;
3481        getCurrentDirectory(): string;
3482        getCanonicalFileName(fileName: string): string;
3483        useCaseSensitiveFileNames(): boolean;
3484        getNewLine(): string;
3485        readDirectory?(rootDir: string, extensions: readonly string[], excludes: readonly string[] | undefined, includes: readonly string[], depth?: number): string[];
3486        resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[];
3487        /**
3488         * 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
3489         */
3490        getModuleResolutionCache?(): ModuleResolutionCache | undefined;
3491        /**
3492         * This method is a companion for 'resolveModuleNames' and is used to resolve 'types' references to actual type declaration files
3493         */
3494        resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[] | readonly FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[];
3495        getEnvironmentVariable?(name: string): string | undefined;
3496        /** If provided along with custom resolveModuleNames or resolveTypeReferenceDirectives, used to determine if unchanged file path needs to re-resolve modules/type reference directives */
3497        hasInvalidatedResolutions?(filePath: Path): boolean;
3498        createHash?(data: string): string;
3499        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
3500        /**
3501         * get tagName where need to be determined based on the file path
3502         * @param jsDocFileCheckInfo filePath
3503         * @param symbolSourceFilePath filePath
3504         */
3505        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
3506        /**
3507         * get checked results based on the file path and jsDocs
3508         * @param jsDocFileCheckedInfo
3509         * @param jsDocs
3510         */
3511        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
3512        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
3513        getLastCompiledProgram?(): Program;
3514    }
3515    export interface SourceMapRange extends TextRange {
3516        source?: SourceMapSource;
3517    }
3518    export interface SourceMapSource {
3519        fileName: string;
3520        text: string;
3521        skipTrivia?: (pos: number) => number;
3522    }
3523    export enum EmitFlags {
3524        None = 0,
3525        SingleLine = 1,
3526        AdviseOnEmitNode = 2,
3527        NoSubstitution = 4,
3528        CapturesThis = 8,
3529        NoLeadingSourceMap = 16,
3530        NoTrailingSourceMap = 32,
3531        NoSourceMap = 48,
3532        NoNestedSourceMaps = 64,
3533        NoTokenLeadingSourceMaps = 128,
3534        NoTokenTrailingSourceMaps = 256,
3535        NoTokenSourceMaps = 384,
3536        NoLeadingComments = 512,
3537        NoTrailingComments = 1024,
3538        NoComments = 1536,
3539        NoNestedComments = 2048,
3540        HelperName = 4096,
3541        ExportName = 8192,
3542        LocalName = 16384,
3543        InternalName = 32768,
3544        Indented = 65536,
3545        NoIndentation = 131072,
3546        AsyncFunctionBody = 262144,
3547        ReuseTempVariableScope = 524288,
3548        CustomPrologue = 1048576,
3549        NoHoisting = 2097152,
3550        HasEndOfDeclarationMarker = 4194304,
3551        Iterator = 8388608,
3552        NoAsciiEscaping = 16777216,
3553    }
3554    export interface EmitHelperBase {
3555        readonly name: string;
3556        readonly scoped: boolean;
3557        readonly text: string | ((node: EmitHelperUniqueNameCallback) => string);
3558        readonly priority?: number;
3559        readonly dependencies?: EmitHelper[];
3560    }
3561    export interface ScopedEmitHelper extends EmitHelperBase {
3562        readonly scoped: true;
3563    }
3564    export interface UnscopedEmitHelper extends EmitHelperBase {
3565        readonly scoped: false;
3566        readonly text: string;
3567    }
3568    export type EmitHelper = ScopedEmitHelper | UnscopedEmitHelper;
3569    export type EmitHelperUniqueNameCallback = (name: string) => string;
3570    export enum EmitHint {
3571        SourceFile = 0,
3572        Expression = 1,
3573        IdentifierName = 2,
3574        MappedTypeParameter = 3,
3575        Unspecified = 4,
3576        EmbeddedStatement = 5,
3577        JsxAttributeValue = 6
3578    }
3579    export interface SourceFileMayBeEmittedHost {
3580        getCompilerOptions(): CompilerOptions;
3581        isSourceFileFromExternalLibrary(file: SourceFile): boolean;
3582        getResolvedProjectReferenceToRedirect(fileName: string): ResolvedProjectReference | undefined;
3583        isSourceOfProjectReferenceRedirect(fileName: string): boolean;
3584    }
3585    export interface EmitHost extends ScriptReferenceHost, ModuleSpecifierResolutionHost, SourceFileMayBeEmittedHost {
3586        getSourceFiles(): readonly SourceFile[];
3587        useCaseSensitiveFileNames(): boolean;
3588        getCurrentDirectory(): string;
3589        getLibFileFromReference(ref: FileReference): SourceFile | undefined;
3590        getCommonSourceDirectory(): string;
3591        getCanonicalFileName(fileName: string): string;
3592        getNewLine(): string;
3593        isEmitBlocked(emitFileName: string): boolean;
3594        getPrependNodes(): readonly (InputFiles | UnparsedSource)[];
3595        writeFile: WriteFileCallback;
3596        getSourceFileFromReference: Program["getSourceFileFromReference"];
3597        readonly redirectTargetsMap: RedirectTargetsMap;
3598        createHash?(data: string): string;
3599    }
3600    export enum OuterExpressionKinds {
3601        Parentheses = 1,
3602        TypeAssertions = 2,
3603        NonNullAssertions = 4,
3604        PartiallyEmittedExpressions = 8,
3605        Assertions = 6,
3606        All = 15,
3607        ExcludeJSDocTypeAssertion = 16
3608    }
3609    export type TypeOfTag = "undefined" | "number" | "bigint" | "boolean" | "string" | "symbol" | "object" | "function";
3610    export interface NodeFactory {
3611        createNodeArray<T extends Node>(elements?: readonly T[], hasTrailingComma?: boolean): NodeArray<T>;
3612        createNumericLiteral(value: string | number, numericLiteralFlags?: TokenFlags): NumericLiteral;
3613        createBigIntLiteral(value: string | PseudoBigInt): BigIntLiteral;
3614        createStringLiteral(text: string, isSingleQuote?: boolean): StringLiteral;
3615        createStringLiteralFromNode(sourceNode: PropertyNameLiteral | PrivateIdentifier, isSingleQuote?: boolean): StringLiteral;
3616        createRegularExpressionLiteral(text: string): RegularExpressionLiteral;
3617        createIdentifier(text: string): Identifier;
3618        /**
3619         * Create a unique temporary variable.
3620         * @param recordTempVariable An optional callback used to record the temporary variable name. This
3621         * should usually be a reference to `hoistVariableDeclaration` from a `TransformationContext`, but
3622         * can be `undefined` if you plan to record the temporary variable manually.
3623         * @param reservedInNestedScopes When `true`, reserves the temporary variable name in all nested scopes
3624         * during emit so that the variable can be referenced in a nested function body. This is an alternative to
3625         * setting `EmitFlags.ReuseTempVariableScope` on the nested function itself.
3626         */
3627        createTempVariable(recordTempVariable: ((node: Identifier) => void) | undefined, reservedInNestedScopes?: boolean): Identifier;
3628        /**
3629         * Create a unique temporary variable for use in a loop.
3630         * @param reservedInNestedScopes When `true`, reserves the temporary variable name in all nested scopes
3631         * during emit so that the variable can be referenced in a nested function body. This is an alternative to
3632         * setting `EmitFlags.ReuseTempVariableScope` on the nested function itself.
3633         */
3634        createLoopVariable(reservedInNestedScopes?: boolean): Identifier;
3635        /** Create a unique name based on the supplied text. */
3636        createUniqueName(text: string, flags?: GeneratedIdentifierFlags): Identifier;
3637        /** Create a unique name generated for a node. */
3638        getGeneratedNameForNode(node: Node | undefined, flags?: GeneratedIdentifierFlags): Identifier;
3639        createPrivateIdentifier(text: string): PrivateIdentifier;
3640        createUniquePrivateName(text?: string): PrivateIdentifier;
3641        getGeneratedPrivateNameForNode(node: Node): PrivateIdentifier;
3642        createToken(token: SyntaxKind.SuperKeyword): SuperExpression;
3643        createToken(token: SyntaxKind.ThisKeyword): ThisExpression;
3644        createToken(token: SyntaxKind.NullKeyword): NullLiteral;
3645        createToken(token: SyntaxKind.TrueKeyword): TrueLiteral;
3646        createToken(token: SyntaxKind.FalseKeyword): FalseLiteral;
3647        createToken<TKind extends PunctuationSyntaxKind>(token: TKind): PunctuationToken<TKind>;
3648        createToken<TKind extends KeywordTypeSyntaxKind>(token: TKind): KeywordTypeNode<TKind>;
3649        createToken<TKind extends ModifierSyntaxKind>(token: TKind): ModifierToken<TKind>;
3650        createToken<TKind extends KeywordSyntaxKind>(token: TKind): KeywordToken<TKind>;
3651        createToken<TKind extends SyntaxKind.Unknown | SyntaxKind.EndOfFileToken>(token: TKind): Token<TKind>;
3652        createSuper(): SuperExpression;
3653        createThis(): ThisExpression;
3654        createNull(): NullLiteral;
3655        createTrue(): TrueLiteral;
3656        createFalse(): FalseLiteral;
3657        createModifier<T extends ModifierSyntaxKind>(kind: T): ModifierToken<T>;
3658        createModifiersFromModifierFlags(flags: ModifierFlags): Modifier[] | undefined;
3659        createQualifiedName(left: EntityName, right: string | Identifier): QualifiedName;
3660        updateQualifiedName(node: QualifiedName, left: EntityName, right: Identifier): QualifiedName;
3661        createComputedPropertyName(expression: Expression): ComputedPropertyName;
3662        updateComputedPropertyName(node: ComputedPropertyName, expression: Expression): ComputedPropertyName;
3663        createTypeParameterDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, constraint?: TypeNode, defaultType?: TypeNode): TypeParameterDeclaration;
3664        updateTypeParameterDeclaration(node: TypeParameterDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration;
3665        createParameterDeclaration(modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken, type?: TypeNode, initializer?: Expression): ParameterDeclaration;
3666        updateParameterDeclaration(node: ParameterDeclaration, modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): ParameterDeclaration;
3667        createDecorator(expression: Expression): Decorator;
3668        updateDecorator(node: Decorator, expression: Expression): Decorator;
3669        createPropertySignature(modifiers: readonly Modifier[] | undefined, name: PropertyName | string, questionToken: QuestionToken | undefined, type: TypeNode | undefined): PropertySignature;
3670        updatePropertySignature(node: PropertySignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, type: TypeNode | undefined): PropertySignature;
3671        createPropertyDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
3672        updatePropertyDeclaration(node: PropertyDeclaration, modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
3673        createMethodSignature(modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): MethodSignature;
3674        updateMethodSignature(node: MethodSignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): MethodSignature;
3675        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;
3676        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;
3677        createConstructorDeclaration(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
3678        updateConstructorDeclaration(node: ConstructorDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
3679        createGetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
3680        updateGetAccessorDeclaration(node: GetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
3681        createSetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
3682        updateSetAccessorDeclaration(node: SetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
3683        createCallSignature(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): CallSignatureDeclaration;
3684        updateCallSignature(node: CallSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): CallSignatureDeclaration;
3685        createConstructSignature(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): ConstructSignatureDeclaration;
3686        updateConstructSignature(node: ConstructSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): ConstructSignatureDeclaration;
3687        createIndexSignature(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
3688        updateIndexSignature(node: IndexSignatureDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
3689        createTemplateLiteralTypeSpan(type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan;
3690        updateTemplateLiteralTypeSpan(node: TemplateLiteralTypeSpan, type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan;
3691        createClassStaticBlockDeclaration(body: Block): ClassStaticBlockDeclaration;
3692        updateClassStaticBlockDeclaration(node: ClassStaticBlockDeclaration, body: Block): ClassStaticBlockDeclaration;
3693        createKeywordTypeNode<TKind extends KeywordTypeSyntaxKind>(kind: TKind): KeywordTypeNode<TKind>;
3694        createTypePredicateNode(assertsModifier: AssertsKeyword | undefined, parameterName: Identifier | ThisTypeNode | string, type: TypeNode | undefined): TypePredicateNode;
3695        updateTypePredicateNode(node: TypePredicateNode, assertsModifier: AssertsKeyword | undefined, parameterName: Identifier | ThisTypeNode, type: TypeNode | undefined): TypePredicateNode;
3696        createTypeReferenceNode(typeName: string | EntityName, typeArguments?: readonly TypeNode[]): TypeReferenceNode;
3697        updateTypeReferenceNode(node: TypeReferenceNode, typeName: EntityName, typeArguments: NodeArray<TypeNode> | undefined): TypeReferenceNode;
3698        createFunctionTypeNode(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): FunctionTypeNode;
3699        updateFunctionTypeNode(node: FunctionTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): FunctionTypeNode;
3700        createConstructorTypeNode(modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): ConstructorTypeNode;
3701        updateConstructorTypeNode(node: ConstructorTypeNode, modifiers: readonly Modifier[] | undefined, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): ConstructorTypeNode;
3702        createTypeQueryNode(exprName: EntityName, typeArguments?: readonly TypeNode[]): TypeQueryNode;
3703        updateTypeQueryNode(node: TypeQueryNode, exprName: EntityName, typeArguments?: readonly TypeNode[]): TypeQueryNode;
3704        createTypeLiteralNode(members: readonly TypeElement[] | undefined): TypeLiteralNode;
3705        updateTypeLiteralNode(node: TypeLiteralNode, members: NodeArray<TypeElement>): TypeLiteralNode;
3706        createArrayTypeNode(elementType: TypeNode): ArrayTypeNode;
3707        updateArrayTypeNode(node: ArrayTypeNode, elementType: TypeNode): ArrayTypeNode;
3708        createTupleTypeNode(elements: readonly (TypeNode | NamedTupleMember)[]): TupleTypeNode;
3709        updateTupleTypeNode(node: TupleTypeNode, elements: readonly (TypeNode | NamedTupleMember)[]): TupleTypeNode;
3710        createNamedTupleMember(dotDotDotToken: DotDotDotToken | undefined, name: Identifier, questionToken: QuestionToken | undefined, type: TypeNode): NamedTupleMember;
3711        updateNamedTupleMember(node: NamedTupleMember, dotDotDotToken: DotDotDotToken | undefined, name: Identifier, questionToken: QuestionToken | undefined, type: TypeNode): NamedTupleMember;
3712        createOptionalTypeNode(type: TypeNode): OptionalTypeNode;
3713        updateOptionalTypeNode(node: OptionalTypeNode, type: TypeNode): OptionalTypeNode;
3714        createRestTypeNode(type: TypeNode): RestTypeNode;
3715        updateRestTypeNode(node: RestTypeNode, type: TypeNode): RestTypeNode;
3716        createUnionTypeNode(types: readonly TypeNode[]): UnionTypeNode;
3717        updateUnionTypeNode(node: UnionTypeNode, types: NodeArray<TypeNode>): UnionTypeNode;
3718        createIntersectionTypeNode(types: readonly TypeNode[]): IntersectionTypeNode;
3719        updateIntersectionTypeNode(node: IntersectionTypeNode, types: NodeArray<TypeNode>): IntersectionTypeNode;
3720        createConditionalTypeNode(checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode): ConditionalTypeNode;
3721        updateConditionalTypeNode(node: ConditionalTypeNode, checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode): ConditionalTypeNode;
3722        createInferTypeNode(typeParameter: TypeParameterDeclaration): InferTypeNode;
3723        updateInferTypeNode(node: InferTypeNode, typeParameter: TypeParameterDeclaration): InferTypeNode;
3724        createImportTypeNode(argument: TypeNode, assertions?: ImportTypeAssertionContainer, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode;
3725        updateImportTypeNode(node: ImportTypeNode, argument: TypeNode, assertions: ImportTypeAssertionContainer | undefined, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean): ImportTypeNode;
3726        createParenthesizedType(type: TypeNode): ParenthesizedTypeNode;
3727        updateParenthesizedType(node: ParenthesizedTypeNode, type: TypeNode): ParenthesizedTypeNode;
3728        createThisTypeNode(): ThisTypeNode;
3729        createTypeOperatorNode(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode;
3730        updateTypeOperatorNode(node: TypeOperatorNode, type: TypeNode): TypeOperatorNode;
3731        createIndexedAccessTypeNode(objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode;
3732        updateIndexedAccessTypeNode(node: IndexedAccessTypeNode, objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode;
3733        createMappedTypeNode(readonlyToken: ReadonlyKeyword | PlusToken | MinusToken | undefined, typeParameter: TypeParameterDeclaration, nameType: TypeNode | undefined, questionToken: QuestionToken | PlusToken | MinusToken | undefined, type: TypeNode | undefined, members: NodeArray<TypeElement> | undefined): MappedTypeNode;
3734        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;
3735        createLiteralTypeNode(literal: LiteralTypeNode["literal"]): LiteralTypeNode;
3736        updateLiteralTypeNode(node: LiteralTypeNode, literal: LiteralTypeNode["literal"]): LiteralTypeNode;
3737        createTemplateLiteralType(head: TemplateHead, templateSpans: readonly TemplateLiteralTypeSpan[]): TemplateLiteralTypeNode;
3738        updateTemplateLiteralType(node: TemplateLiteralTypeNode, head: TemplateHead, templateSpans: readonly TemplateLiteralTypeSpan[]): TemplateLiteralTypeNode;
3739        createObjectBindingPattern(elements: readonly BindingElement[]): ObjectBindingPattern;
3740        updateObjectBindingPattern(node: ObjectBindingPattern, elements: readonly BindingElement[]): ObjectBindingPattern;
3741        createArrayBindingPattern(elements: readonly ArrayBindingElement[]): ArrayBindingPattern;
3742        updateArrayBindingPattern(node: ArrayBindingPattern, elements: readonly ArrayBindingElement[]): ArrayBindingPattern;
3743        createBindingElement(dotDotDotToken: DotDotDotToken | undefined, propertyName: string | PropertyName | undefined, name: string | BindingName, initializer?: Expression): BindingElement;
3744        updateBindingElement(node: BindingElement, dotDotDotToken: DotDotDotToken | undefined, propertyName: PropertyName | undefined, name: BindingName, initializer: Expression | undefined): BindingElement;
3745        createArrayLiteralExpression(elements?: readonly Expression[], multiLine?: boolean): ArrayLiteralExpression;
3746        updateArrayLiteralExpression(node: ArrayLiteralExpression, elements: readonly Expression[]): ArrayLiteralExpression;
3747        createObjectLiteralExpression(properties?: readonly ObjectLiteralElementLike[], multiLine?: boolean): ObjectLiteralExpression;
3748        updateObjectLiteralExpression(node: ObjectLiteralExpression, properties: readonly ObjectLiteralElementLike[]): ObjectLiteralExpression;
3749        createPropertyAccessExpression(expression: Expression, name: string | MemberName): PropertyAccessExpression;
3750        updatePropertyAccessExpression(node: PropertyAccessExpression, expression: Expression, name: MemberName): PropertyAccessExpression;
3751        createPropertyAccessChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, name: string | MemberName): PropertyAccessChain;
3752        updatePropertyAccessChain(node: PropertyAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, name: MemberName): PropertyAccessChain;
3753        createElementAccessExpression(expression: Expression, index: number | Expression): ElementAccessExpression;
3754        updateElementAccessExpression(node: ElementAccessExpression, expression: Expression, argumentExpression: Expression): ElementAccessExpression;
3755        createElementAccessChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, index: number | Expression): ElementAccessChain;
3756        updateElementAccessChain(node: ElementAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, argumentExpression: Expression): ElementAccessChain;
3757        createCallExpression(expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): CallExpression;
3758        updateCallExpression(node: CallExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]): CallExpression;
3759        createCallChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): CallChain;
3760        updateCallChain(node: CallChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]): CallChain;
3761        createNewExpression(expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): NewExpression;
3762        updateNewExpression(node: NewExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): NewExpression;
3763        createTaggedTemplateExpression(tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
3764        updateTaggedTemplateExpression(node: TaggedTemplateExpression, tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
3765        createTypeAssertion(type: TypeNode, expression: Expression): TypeAssertion;
3766        updateTypeAssertion(node: TypeAssertion, type: TypeNode, expression: Expression): TypeAssertion;
3767        createParenthesizedExpression(expression: Expression): ParenthesizedExpression;
3768        updateParenthesizedExpression(node: ParenthesizedExpression, expression: Expression): ParenthesizedExpression;
3769        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;
3770        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;
3771        createArrowFunction(modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken | undefined, body: ConciseBody): ArrowFunction;
3772        updateArrowFunction(node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken, body: ConciseBody): ArrowFunction;
3773        createEtsComponentExpression(name: Expression, argumentExpression: Expression[] | NodeArray<Expression> | undefined, body: Block | undefined): EtsComponentExpression;
3774        updateEtsComponentExpression(node: EtsComponentExpression, name: Expression | undefined, argumentExpression: Expression[] | NodeArray<Expression> | undefined, body: Block | undefined): EtsComponentExpression;
3775        createDeleteExpression(expression: Expression): DeleteExpression;
3776        updateDeleteExpression(node: DeleteExpression, expression: Expression): DeleteExpression;
3777        createTypeOfExpression(expression: Expression): TypeOfExpression;
3778        updateTypeOfExpression(node: TypeOfExpression, expression: Expression): TypeOfExpression;
3779        createVoidExpression(expression: Expression): VoidExpression;
3780        updateVoidExpression(node: VoidExpression, expression: Expression): VoidExpression;
3781        createAwaitExpression(expression: Expression): AwaitExpression;
3782        updateAwaitExpression(node: AwaitExpression, expression: Expression): AwaitExpression;
3783        createPrefixUnaryExpression(operator: PrefixUnaryOperator, operand: Expression): PrefixUnaryExpression;
3784        updatePrefixUnaryExpression(node: PrefixUnaryExpression, operand: Expression): PrefixUnaryExpression;
3785        createPostfixUnaryExpression(operand: Expression, operator: PostfixUnaryOperator): PostfixUnaryExpression;
3786        updatePostfixUnaryExpression(node: PostfixUnaryExpression, operand: Expression): PostfixUnaryExpression;
3787        createBinaryExpression(left: Expression, operator: BinaryOperator | BinaryOperatorToken, right: Expression): BinaryExpression;
3788        updateBinaryExpression(node: BinaryExpression, left: Expression, operator: BinaryOperator | BinaryOperatorToken, right: Expression): BinaryExpression;
3789        createConditionalExpression(condition: Expression, questionToken: QuestionToken | undefined, whenTrue: Expression, colonToken: ColonToken | undefined, whenFalse: Expression): ConditionalExpression;
3790        updateConditionalExpression(node: ConditionalExpression, condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression): ConditionalExpression;
3791        createTemplateExpression(head: TemplateHead, templateSpans: readonly TemplateSpan[]): TemplateExpression;
3792        updateTemplateExpression(node: TemplateExpression, head: TemplateHead, templateSpans: readonly TemplateSpan[]): TemplateExpression;
3793        createTemplateHead(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateHead;
3794        createTemplateHead(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateHead;
3795        createTemplateMiddle(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateMiddle;
3796        createTemplateMiddle(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateMiddle;
3797        createTemplateTail(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateTail;
3798        createTemplateTail(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateTail;
3799        createNoSubstitutionTemplateLiteral(text: string, rawText?: string): NoSubstitutionTemplateLiteral;
3800        createNoSubstitutionTemplateLiteral(text: string | undefined, rawText: string): NoSubstitutionTemplateLiteral;
3801        createYieldExpression(asteriskToken: AsteriskToken, expression: Expression): YieldExpression;
3802        createYieldExpression(asteriskToken: undefined, expression: Expression | undefined): YieldExpression;
3803        updateYieldExpression(node: YieldExpression, asteriskToken: AsteriskToken | undefined, expression: Expression | undefined): YieldExpression;
3804        createSpreadElement(expression: Expression): SpreadElement;
3805        updateSpreadElement(node: SpreadElement, expression: Expression): SpreadElement;
3806        createClassExpression(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression;
3807        updateClassExpression(node: ClassExpression, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression;
3808        createOmittedExpression(): OmittedExpression;
3809        createExpressionWithTypeArguments(expression: Expression, typeArguments: readonly TypeNode[] | undefined): ExpressionWithTypeArguments;
3810        updateExpressionWithTypeArguments(node: ExpressionWithTypeArguments, expression: Expression, typeArguments: readonly TypeNode[] | undefined): ExpressionWithTypeArguments;
3811        createAsExpression(expression: Expression, type: TypeNode): AsExpression;
3812        updateAsExpression(node: AsExpression, expression: Expression, type: TypeNode): AsExpression;
3813        createNonNullExpression(expression: Expression): NonNullExpression;
3814        updateNonNullExpression(node: NonNullExpression, expression: Expression): NonNullExpression;
3815        createNonNullChain(expression: Expression): NonNullChain;
3816        updateNonNullChain(node: NonNullChain, expression: Expression): NonNullChain;
3817        createMetaProperty(keywordToken: MetaProperty["keywordToken"], name: Identifier): MetaProperty;
3818        updateMetaProperty(node: MetaProperty, name: Identifier): MetaProperty;
3819        createSatisfiesExpression(expression: Expression, type: TypeNode): SatisfiesExpression;
3820        updateSatisfiesExpression(node: SatisfiesExpression, expression: Expression, type: TypeNode): SatisfiesExpression;
3821        createTemplateSpan(expression: Expression, literal: TemplateMiddle | TemplateTail): TemplateSpan;
3822        updateTemplateSpan(node: TemplateSpan, expression: Expression, literal: TemplateMiddle | TemplateTail): TemplateSpan;
3823        createSemicolonClassElement(): SemicolonClassElement;
3824        createBlock(statements: readonly Statement[], multiLine?: boolean): Block;
3825        updateBlock(node: Block, statements: readonly Statement[]): Block;
3826        createVariableStatement(modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]): VariableStatement;
3827        updateVariableStatement(node: VariableStatement, modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList): VariableStatement;
3828        createEmptyStatement(): EmptyStatement;
3829        createExpressionStatement(expression: Expression): ExpressionStatement;
3830        updateExpressionStatement(node: ExpressionStatement, expression: Expression): ExpressionStatement;
3831        createIfStatement(expression: Expression, thenStatement: Statement, elseStatement?: Statement): IfStatement;
3832        updateIfStatement(node: IfStatement, expression: Expression, thenStatement: Statement, elseStatement: Statement | undefined): IfStatement;
3833        createDoStatement(statement: Statement, expression: Expression): DoStatement;
3834        updateDoStatement(node: DoStatement, statement: Statement, expression: Expression): DoStatement;
3835        createWhileStatement(expression: Expression, statement: Statement): WhileStatement;
3836        updateWhileStatement(node: WhileStatement, expression: Expression, statement: Statement): WhileStatement;
3837        createForStatement(initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement): ForStatement;
3838        updateForStatement(node: ForStatement, initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement): ForStatement;
3839        createForInStatement(initializer: ForInitializer, expression: Expression, statement: Statement): ForInStatement;
3840        updateForInStatement(node: ForInStatement, initializer: ForInitializer, expression: Expression, statement: Statement): ForInStatement;
3841        createForOfStatement(awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement): ForOfStatement;
3842        updateForOfStatement(node: ForOfStatement, awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement): ForOfStatement;
3843        createContinueStatement(label?: string | Identifier): ContinueStatement;
3844        updateContinueStatement(node: ContinueStatement, label: Identifier | undefined): ContinueStatement;
3845        createBreakStatement(label?: string | Identifier): BreakStatement;
3846        updateBreakStatement(node: BreakStatement, label: Identifier | undefined): BreakStatement;
3847        createReturnStatement(expression?: Expression): ReturnStatement;
3848        updateReturnStatement(node: ReturnStatement, expression: Expression | undefined): ReturnStatement;
3849        createWithStatement(expression: Expression, statement: Statement): WithStatement;
3850        updateWithStatement(node: WithStatement, expression: Expression, statement: Statement): WithStatement;
3851        createSwitchStatement(expression: Expression, caseBlock: CaseBlock): SwitchStatement;
3852        updateSwitchStatement(node: SwitchStatement, expression: Expression, caseBlock: CaseBlock): SwitchStatement;
3853        createLabeledStatement(label: string | Identifier, statement: Statement): LabeledStatement;
3854        updateLabeledStatement(node: LabeledStatement, label: Identifier, statement: Statement): LabeledStatement;
3855        createThrowStatement(expression: Expression): ThrowStatement;
3856        updateThrowStatement(node: ThrowStatement, expression: Expression): ThrowStatement;
3857        createTryStatement(tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined): TryStatement;
3858        updateTryStatement(node: TryStatement, tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined): TryStatement;
3859        createDebuggerStatement(): DebuggerStatement;
3860        createVariableDeclaration(name: string | BindingName, exclamationToken?: ExclamationToken, type?: TypeNode, initializer?: Expression): VariableDeclaration;
3861        updateVariableDeclaration(node: VariableDeclaration, name: BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
3862        createVariableDeclarationList(declarations: readonly VariableDeclaration[], flags?: NodeFlags): VariableDeclarationList;
3863        updateVariableDeclarationList(node: VariableDeclarationList, declarations: readonly VariableDeclaration[]): VariableDeclarationList;
3864        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;
3865        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;
3866        createClassDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
3867        updateClassDeclaration(node: ClassDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
3868        createStructDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): StructDeclaration;
3869        updateStructDeclaration(node: StructDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): StructDeclaration;
3870        createInterfaceDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
3871        updateInterfaceDeclaration(node: InterfaceDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
3872        createTypeAliasDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
3873        updateTypeAliasDeclaration(node: TypeAliasDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
3874        createEnumDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration;
3875        updateEnumDeclaration(node: EnumDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration;
3876        createModuleDeclaration(modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration;
3877        updateModuleDeclaration(node: ModuleDeclaration, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration;
3878        createModuleBlock(statements: readonly Statement[]): ModuleBlock;
3879        updateModuleBlock(node: ModuleBlock, statements: readonly Statement[]): ModuleBlock;
3880        createCaseBlock(clauses: readonly CaseOrDefaultClause[]): CaseBlock;
3881        updateCaseBlock(node: CaseBlock, clauses: readonly CaseOrDefaultClause[]): CaseBlock;
3882        createNamespaceExportDeclaration(name: string | Identifier): NamespaceExportDeclaration;
3883        updateNamespaceExportDeclaration(node: NamespaceExportDeclaration, name: Identifier): NamespaceExportDeclaration;
3884        createImportEqualsDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
3885        updateImportEqualsDeclaration(node: ImportEqualsDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
3886        createImportDeclaration(modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration;
3887        updateImportDeclaration(node: ImportDeclaration, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration;
3888        createImportClause(isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause;
3889        updateImportClause(node: ImportClause, isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause;
3890        createAssertClause(elements: NodeArray<AssertEntry>, multiLine?: boolean): AssertClause;
3891        updateAssertClause(node: AssertClause, elements: NodeArray<AssertEntry>, multiLine?: boolean): AssertClause;
3892        createAssertEntry(name: AssertionKey, value: Expression): AssertEntry;
3893        updateAssertEntry(node: AssertEntry, name: AssertionKey, value: Expression): AssertEntry;
3894        createImportTypeAssertionContainer(clause: AssertClause, multiLine?: boolean): ImportTypeAssertionContainer;
3895        updateImportTypeAssertionContainer(node: ImportTypeAssertionContainer, clause: AssertClause, multiLine?: boolean): ImportTypeAssertionContainer;
3896        createNamespaceImport(name: Identifier): NamespaceImport;
3897        updateNamespaceImport(node: NamespaceImport, name: Identifier): NamespaceImport;
3898        createNamespaceExport(name: Identifier): NamespaceExport;
3899        updateNamespaceExport(node: NamespaceExport, name: Identifier): NamespaceExport;
3900        createNamedImports(elements: readonly ImportSpecifier[]): NamedImports;
3901        updateNamedImports(node: NamedImports, elements: readonly ImportSpecifier[]): NamedImports;
3902        createImportSpecifier(isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier;
3903        updateImportSpecifier(node: ImportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier;
3904        createExportAssignment(modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment;
3905        updateExportAssignment(node: ExportAssignment, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment;
3906        createExportDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration;
3907        updateExportDeclaration(node: ExportDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration;
3908        createNamedExports(elements: readonly ExportSpecifier[]): NamedExports;
3909        updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports;
3910        createExportSpecifier(isTypeOnly: boolean, propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier;
3911        updateExportSpecifier(node: ExportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ExportSpecifier;
3912        createExternalModuleReference(expression: Expression): ExternalModuleReference;
3913        updateExternalModuleReference(node: ExternalModuleReference, expression: Expression): ExternalModuleReference;
3914        createJSDocAllType(): JSDocAllType;
3915        createJSDocUnknownType(): JSDocUnknownType;
3916        createJSDocNonNullableType(type: TypeNode, postfix?: boolean): JSDocNonNullableType;
3917        updateJSDocNonNullableType(node: JSDocNonNullableType, type: TypeNode): JSDocNonNullableType;
3918        createJSDocNullableType(type: TypeNode, postfix?: boolean): JSDocNullableType;
3919        updateJSDocNullableType(node: JSDocNullableType, type: TypeNode): JSDocNullableType;
3920        createJSDocOptionalType(type: TypeNode): JSDocOptionalType;
3921        updateJSDocOptionalType(node: JSDocOptionalType, type: TypeNode): JSDocOptionalType;
3922        createJSDocFunctionType(parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): JSDocFunctionType;
3923        updateJSDocFunctionType(node: JSDocFunctionType, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): JSDocFunctionType;
3924        createJSDocVariadicType(type: TypeNode): JSDocVariadicType;
3925        updateJSDocVariadicType(node: JSDocVariadicType, type: TypeNode): JSDocVariadicType;
3926        createJSDocNamepathType(type: TypeNode): JSDocNamepathType;
3927        updateJSDocNamepathType(node: JSDocNamepathType, type: TypeNode): JSDocNamepathType;
3928        createJSDocTypeExpression(type: TypeNode): JSDocTypeExpression;
3929        updateJSDocTypeExpression(node: JSDocTypeExpression, type: TypeNode): JSDocTypeExpression;
3930        createJSDocNameReference(name: EntityName | JSDocMemberName): JSDocNameReference;
3931        updateJSDocNameReference(node: JSDocNameReference, name: EntityName | JSDocMemberName): JSDocNameReference;
3932        createJSDocMemberName(left: EntityName | JSDocMemberName, right: Identifier): JSDocMemberName;
3933        updateJSDocMemberName(node: JSDocMemberName, left: EntityName | JSDocMemberName, right: Identifier): JSDocMemberName;
3934        createJSDocLink(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLink;
3935        updateJSDocLink(node: JSDocLink, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLink;
3936        createJSDocLinkCode(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkCode;
3937        updateJSDocLinkCode(node: JSDocLinkCode, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkCode;
3938        createJSDocLinkPlain(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkPlain;
3939        updateJSDocLinkPlain(node: JSDocLinkPlain, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkPlain;
3940        createJSDocTypeLiteral(jsDocPropertyTags?: readonly JSDocPropertyLikeTag[], isArrayType?: boolean): JSDocTypeLiteral;
3941        updateJSDocTypeLiteral(node: JSDocTypeLiteral, jsDocPropertyTags: readonly JSDocPropertyLikeTag[] | undefined, isArrayType: boolean | undefined): JSDocTypeLiteral;
3942        createJSDocSignature(typeParameters: readonly JSDocTemplateTag[] | undefined, parameters: readonly JSDocParameterTag[], type?: JSDocReturnTag): JSDocSignature;
3943        updateJSDocSignature(node: JSDocSignature, typeParameters: readonly JSDocTemplateTag[] | undefined, parameters: readonly JSDocParameterTag[], type: JSDocReturnTag | undefined): JSDocSignature;
3944        createJSDocTemplateTag(tagName: Identifier | undefined, constraint: JSDocTypeExpression | undefined, typeParameters: readonly TypeParameterDeclaration[], comment?: string | NodeArray<JSDocComment>): JSDocTemplateTag;
3945        updateJSDocTemplateTag(node: JSDocTemplateTag, tagName: Identifier | undefined, constraint: JSDocTypeExpression | undefined, typeParameters: readonly TypeParameterDeclaration[], comment: string | NodeArray<JSDocComment> | undefined): JSDocTemplateTag;
3946        createJSDocTypedefTag(tagName: Identifier | undefined, typeExpression?: JSDocTypeExpression | JSDocTypeLiteral, fullName?: Identifier | JSDocNamespaceDeclaration, comment?: string | NodeArray<JSDocComment>): JSDocTypedefTag;
3947        updateJSDocTypedefTag(node: JSDocTypedefTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | JSDocTypeLiteral | undefined, fullName: Identifier | JSDocNamespaceDeclaration | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocTypedefTag;
3948        createJSDocParameterTag(tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression, isNameFirst?: boolean, comment?: string | NodeArray<JSDocComment>): JSDocParameterTag;
3949        updateJSDocParameterTag(node: JSDocParameterTag, tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression: JSDocTypeExpression | undefined, isNameFirst: boolean, comment: string | NodeArray<JSDocComment> | undefined): JSDocParameterTag;
3950        createJSDocPropertyTag(tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression, isNameFirst?: boolean, comment?: string | NodeArray<JSDocComment>): JSDocPropertyTag;
3951        updateJSDocPropertyTag(node: JSDocPropertyTag, tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression: JSDocTypeExpression | undefined, isNameFirst: boolean, comment: string | NodeArray<JSDocComment> | undefined): JSDocPropertyTag;
3952        createJSDocTypeTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocTypeTag;
3953        updateJSDocTypeTag(node: JSDocTypeTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment: string | NodeArray<JSDocComment> | undefined): JSDocTypeTag;
3954        createJSDocSeeTag(tagName: Identifier | undefined, nameExpression: JSDocNameReference | undefined, comment?: string | NodeArray<JSDocComment>): JSDocSeeTag;
3955        updateJSDocSeeTag(node: JSDocSeeTag, tagName: Identifier | undefined, nameExpression: JSDocNameReference | undefined, comment?: string | NodeArray<JSDocComment>): JSDocSeeTag;
3956        createJSDocReturnTag(tagName: Identifier | undefined, typeExpression?: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocReturnTag;
3957        updateJSDocReturnTag(node: JSDocReturnTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocReturnTag;
3958        createJSDocThisTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocThisTag;
3959        updateJSDocThisTag(node: JSDocThisTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocThisTag;
3960        createJSDocEnumTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocEnumTag;
3961        updateJSDocEnumTag(node: JSDocEnumTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment: string | NodeArray<JSDocComment> | undefined): JSDocEnumTag;
3962        createJSDocCallbackTag(tagName: Identifier | undefined, typeExpression: JSDocSignature, fullName?: Identifier | JSDocNamespaceDeclaration, comment?: string | NodeArray<JSDocComment>): JSDocCallbackTag;
3963        updateJSDocCallbackTag(node: JSDocCallbackTag, tagName: Identifier | undefined, typeExpression: JSDocSignature, fullName: Identifier | JSDocNamespaceDeclaration | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocCallbackTag;
3964        createJSDocAugmentsTag(tagName: Identifier | undefined, className: JSDocAugmentsTag["class"], comment?: string | NodeArray<JSDocComment>): JSDocAugmentsTag;
3965        updateJSDocAugmentsTag(node: JSDocAugmentsTag, tagName: Identifier | undefined, className: JSDocAugmentsTag["class"], comment: string | NodeArray<JSDocComment> | undefined): JSDocAugmentsTag;
3966        createJSDocImplementsTag(tagName: Identifier | undefined, className: JSDocImplementsTag["class"], comment?: string | NodeArray<JSDocComment>): JSDocImplementsTag;
3967        updateJSDocImplementsTag(node: JSDocImplementsTag, tagName: Identifier | undefined, className: JSDocImplementsTag["class"], comment: string | NodeArray<JSDocComment> | undefined): JSDocImplementsTag;
3968        createJSDocAuthorTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocAuthorTag;
3969        updateJSDocAuthorTag(node: JSDocAuthorTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocAuthorTag;
3970        createJSDocClassTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocClassTag;
3971        updateJSDocClassTag(node: JSDocClassTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocClassTag;
3972        createJSDocPublicTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocPublicTag;
3973        updateJSDocPublicTag(node: JSDocPublicTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocPublicTag;
3974        createJSDocPrivateTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocPrivateTag;
3975        updateJSDocPrivateTag(node: JSDocPrivateTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocPrivateTag;
3976        createJSDocProtectedTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocProtectedTag;
3977        updateJSDocProtectedTag(node: JSDocProtectedTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocProtectedTag;
3978        createJSDocReadonlyTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocReadonlyTag;
3979        updateJSDocReadonlyTag(node: JSDocReadonlyTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocReadonlyTag;
3980        createJSDocUnknownTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocUnknownTag;
3981        updateJSDocUnknownTag(node: JSDocUnknownTag, tagName: Identifier, comment: string | NodeArray<JSDocComment> | undefined): JSDocUnknownTag;
3982        createJSDocDeprecatedTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocDeprecatedTag;
3983        updateJSDocDeprecatedTag(node: JSDocDeprecatedTag, tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocDeprecatedTag;
3984        createJSDocOverrideTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocOverrideTag;
3985        updateJSDocOverrideTag(node: JSDocOverrideTag, tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocOverrideTag;
3986        createJSDocText(text: string): JSDocText;
3987        updateJSDocText(node: JSDocText, text: string): JSDocText;
3988        createJSDocComment(comment?: string | NodeArray<JSDocComment> | undefined, tags?: readonly JSDocTag[] | undefined): JSDoc;
3989        updateJSDocComment(node: JSDoc, comment: string | NodeArray<JSDocComment> | undefined, tags: readonly JSDocTag[] | undefined): JSDoc;
3990        createJsxElement(openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement): JsxElement;
3991        updateJsxElement(node: JsxElement, openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement): JsxElement;
3992        createJsxSelfClosingElement(tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxSelfClosingElement;
3993        updateJsxSelfClosingElement(node: JsxSelfClosingElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxSelfClosingElement;
3994        createJsxOpeningElement(tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxOpeningElement;
3995        updateJsxOpeningElement(node: JsxOpeningElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxOpeningElement;
3996        createJsxClosingElement(tagName: JsxTagNameExpression): JsxClosingElement;
3997        updateJsxClosingElement(node: JsxClosingElement, tagName: JsxTagNameExpression): JsxClosingElement;
3998        createJsxFragment(openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment): JsxFragment;
3999        createJsxText(text: string, containsOnlyTriviaWhiteSpaces?: boolean): JsxText;
4000        updateJsxText(node: JsxText, text: string, containsOnlyTriviaWhiteSpaces?: boolean): JsxText;
4001        createJsxOpeningFragment(): JsxOpeningFragment;
4002        createJsxJsxClosingFragment(): JsxClosingFragment;
4003        updateJsxFragment(node: JsxFragment, openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment): JsxFragment;
4004        createJsxAttribute(name: Identifier, initializer: JsxAttributeValue | undefined): JsxAttribute;
4005        updateJsxAttribute(node: JsxAttribute, name: Identifier, initializer: JsxAttributeValue | undefined): JsxAttribute;
4006        createJsxAttributes(properties: readonly JsxAttributeLike[]): JsxAttributes;
4007        updateJsxAttributes(node: JsxAttributes, properties: readonly JsxAttributeLike[]): JsxAttributes;
4008        createJsxSpreadAttribute(expression: Expression): JsxSpreadAttribute;
4009        updateJsxSpreadAttribute(node: JsxSpreadAttribute, expression: Expression): JsxSpreadAttribute;
4010        createJsxExpression(dotDotDotToken: DotDotDotToken | undefined, expression: Expression | undefined): JsxExpression;
4011        updateJsxExpression(node: JsxExpression, expression: Expression | undefined): JsxExpression;
4012        createCaseClause(expression: Expression, statements: readonly Statement[]): CaseClause;
4013        updateCaseClause(node: CaseClause, expression: Expression, statements: readonly Statement[]): CaseClause;
4014        createDefaultClause(statements: readonly Statement[]): DefaultClause;
4015        updateDefaultClause(node: DefaultClause, statements: readonly Statement[]): DefaultClause;
4016        createHeritageClause(token: HeritageClause["token"], types: readonly ExpressionWithTypeArguments[]): HeritageClause;
4017        updateHeritageClause(node: HeritageClause, types: readonly ExpressionWithTypeArguments[]): HeritageClause;
4018        createCatchClause(variableDeclaration: string | BindingName | VariableDeclaration | undefined, block: Block): CatchClause;
4019        updateCatchClause(node: CatchClause, variableDeclaration: VariableDeclaration | undefined, block: Block): CatchClause;
4020        createPropertyAssignment(name: string | PropertyName, initializer: Expression): PropertyAssignment;
4021        updatePropertyAssignment(node: PropertyAssignment, name: PropertyName, initializer: Expression): PropertyAssignment;
4022        createShorthandPropertyAssignment(name: string | Identifier, objectAssignmentInitializer?: Expression): ShorthandPropertyAssignment;
4023        updateShorthandPropertyAssignment(node: ShorthandPropertyAssignment, name: Identifier, objectAssignmentInitializer: Expression | undefined): ShorthandPropertyAssignment;
4024        createSpreadAssignment(expression: Expression): SpreadAssignment;
4025        updateSpreadAssignment(node: SpreadAssignment, expression: Expression): SpreadAssignment;
4026        createEnumMember(name: string | PropertyName, initializer?: Expression): EnumMember;
4027        updateEnumMember(node: EnumMember, name: PropertyName, initializer: Expression | undefined): EnumMember;
4028        createSourceFile(statements: readonly Statement[], endOfFileToken: EndOfFileToken, flags: NodeFlags): SourceFile;
4029        updateSourceFile(node: SourceFile, statements: readonly Statement[], isDeclarationFile?: boolean, referencedFiles?: readonly FileReference[], typeReferences?: readonly FileReference[], hasNoDefaultLib?: boolean, libReferences?: readonly FileReference[]): SourceFile;
4030        createNotEmittedStatement(original: Node): NotEmittedStatement;
4031        createPartiallyEmittedExpression(expression: Expression, original?: Node): PartiallyEmittedExpression;
4032        updatePartiallyEmittedExpression(node: PartiallyEmittedExpression, expression: Expression): PartiallyEmittedExpression;
4033        createCommaListExpression(elements: readonly Expression[]): CommaListExpression;
4034        updateCommaListExpression(node: CommaListExpression, elements: readonly Expression[]): CommaListExpression;
4035        createBundle(sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle;
4036        updateBundle(node: Bundle, sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle;
4037        createComma(left: Expression, right: Expression): BinaryExpression;
4038        createAssignment(left: ObjectLiteralExpression | ArrayLiteralExpression, right: Expression): DestructuringAssignment;
4039        createAssignment(left: Expression, right: Expression): AssignmentExpression<EqualsToken>;
4040        createLogicalOr(left: Expression, right: Expression): BinaryExpression;
4041        createLogicalAnd(left: Expression, right: Expression): BinaryExpression;
4042        createBitwiseOr(left: Expression, right: Expression): BinaryExpression;
4043        createBitwiseXor(left: Expression, right: Expression): BinaryExpression;
4044        createBitwiseAnd(left: Expression, right: Expression): BinaryExpression;
4045        createStrictEquality(left: Expression, right: Expression): BinaryExpression;
4046        createStrictInequality(left: Expression, right: Expression): BinaryExpression;
4047        createEquality(left: Expression, right: Expression): BinaryExpression;
4048        createInequality(left: Expression, right: Expression): BinaryExpression;
4049        createLessThan(left: Expression, right: Expression): BinaryExpression;
4050        createLessThanEquals(left: Expression, right: Expression): BinaryExpression;
4051        createGreaterThan(left: Expression, right: Expression): BinaryExpression;
4052        createGreaterThanEquals(left: Expression, right: Expression): BinaryExpression;
4053        createLeftShift(left: Expression, right: Expression): BinaryExpression;
4054        createRightShift(left: Expression, right: Expression): BinaryExpression;
4055        createUnsignedRightShift(left: Expression, right: Expression): BinaryExpression;
4056        createAdd(left: Expression, right: Expression): BinaryExpression;
4057        createSubtract(left: Expression, right: Expression): BinaryExpression;
4058        createMultiply(left: Expression, right: Expression): BinaryExpression;
4059        createDivide(left: Expression, right: Expression): BinaryExpression;
4060        createModulo(left: Expression, right: Expression): BinaryExpression;
4061        createExponent(left: Expression, right: Expression): BinaryExpression;
4062        createPrefixPlus(operand: Expression): PrefixUnaryExpression;
4063        createPrefixMinus(operand: Expression): PrefixUnaryExpression;
4064        createPrefixIncrement(operand: Expression): PrefixUnaryExpression;
4065        createPrefixDecrement(operand: Expression): PrefixUnaryExpression;
4066        createBitwiseNot(operand: Expression): PrefixUnaryExpression;
4067        createLogicalNot(operand: Expression): PrefixUnaryExpression;
4068        createPostfixIncrement(operand: Expression): PostfixUnaryExpression;
4069        createPostfixDecrement(operand: Expression): PostfixUnaryExpression;
4070        createImmediatelyInvokedFunctionExpression(statements: readonly Statement[]): CallExpression;
4071        createImmediatelyInvokedFunctionExpression(statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression;
4072        createImmediatelyInvokedArrowFunction(statements: readonly Statement[]): CallExpression;
4073        createImmediatelyInvokedArrowFunction(statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression;
4074        createVoidZero(): VoidExpression;
4075        createExportDefault(expression: Expression): ExportAssignment;
4076        createExternalModuleExport(exportName: Identifier): ExportDeclaration;
4077        restoreOuterExpressions(outerExpression: Expression | undefined, innerExpression: Expression, kinds?: OuterExpressionKinds): Expression;
4078    }
4079    export interface CoreTransformationContext {
4080        readonly factory: NodeFactory;
4081        /** Gets the compiler options supplied to the transformer. */
4082        getCompilerOptions(): CompilerOptions;
4083        /** Starts a new lexical environment. */
4084        startLexicalEnvironment(): void;
4085        /** Suspends the current lexical environment, usually after visiting a parameter list. */
4086        suspendLexicalEnvironment(): void;
4087        /** Resumes a suspended lexical environment, usually before visiting a function body. */
4088        resumeLexicalEnvironment(): void;
4089        /** Ends a lexical environment, returning any declarations. */
4090        endLexicalEnvironment(): Statement[] | undefined;
4091        /** Hoists a function declaration to the containing scope. */
4092        hoistFunctionDeclaration(node: FunctionDeclaration): void;
4093        /** Hoists a variable declaration to the containing scope. */
4094        hoistVariableDeclaration(node: Identifier): void;
4095    }
4096    export interface TransformationContext extends CoreTransformationContext {
4097        /** Records a request for a non-scoped emit helper in the current context. */
4098        requestEmitHelper(helper: EmitHelper): void;
4099        /** Gets and resets the requested non-scoped emit helpers. */
4100        readEmitHelpers(): EmitHelper[] | undefined;
4101        /** Enables expression substitutions in the pretty printer for the provided SyntaxKind. */
4102        enableSubstitution(kind: SyntaxKind): void;
4103        /** Determines whether expression substitutions are enabled for the provided node. */
4104        isSubstitutionEnabled(node: Node): boolean;
4105        /**
4106         * Hook used by transformers to substitute expressions just before they
4107         * are emitted by the pretty printer.
4108         *
4109         * NOTE: Transformation hooks should only be modified during `Transformer` initialization,
4110         * before returning the `NodeTransformer` callback.
4111         */
4112        onSubstituteNode: (hint: EmitHint, node: Node) => Node;
4113        /**
4114         * Enables before/after emit notifications in the pretty printer for the provided
4115         * SyntaxKind.
4116         */
4117        enableEmitNotification(kind: SyntaxKind): void;
4118        /**
4119         * Determines whether before/after emit notifications should be raised in the pretty
4120         * printer when it emits a node.
4121         */
4122        isEmitNotificationEnabled(node: Node): boolean;
4123        /**
4124         * Hook used to allow transformers to capture state before or after
4125         * the printer emits a node.
4126         *
4127         * NOTE: Transformation hooks should only be modified during `Transformer` initialization,
4128         * before returning the `NodeTransformer` callback.
4129         */
4130        onEmitNode: (hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void) => void;
4131        /** Determines whether the lexical environment is suspended */
4132        isLexicalEnvironmentSuspended?(): boolean;
4133    }
4134    export interface TransformationResult<T extends Node> {
4135        /** Gets the transformed source files. */
4136        transformed: T[];
4137        /** Gets diagnostics for the transformation. */
4138        diagnostics?: DiagnosticWithLocation[];
4139        /**
4140         * Gets a substitute for a node, if one is available; otherwise, returns the original node.
4141         *
4142         * @param hint A hint as to the intended usage of the node.
4143         * @param node The node to substitute.
4144         */
4145        substituteNode(hint: EmitHint, node: Node): Node;
4146        /**
4147         * Emits a node with possible notification.
4148         *
4149         * @param hint A hint as to the intended usage of the node.
4150         * @param node The node to emit.
4151         * @param emitCallback A callback used to emit the node.
4152         */
4153        emitNodeWithNotification(hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void): void;
4154        /**
4155         * Indicates if a given node needs an emit notification
4156         *
4157         * @param node The node to emit.
4158         */
4159        isEmitNotificationEnabled?(node: Node): boolean;
4160        /**
4161         * Clean up EmitNode entries on any parse-tree nodes.
4162         */
4163        dispose(): void;
4164    }
4165    /**
4166     * A function that is used to initialize and return a `Transformer` callback, which in turn
4167     * will be used to transform one or more nodes.
4168     */
4169    export type TransformerFactory<T extends Node> = (context: TransformationContext) => Transformer<T>;
4170    /**
4171     * A function that transforms a node.
4172     */
4173    export type Transformer<T extends Node> = (node: T) => T;
4174    /**
4175     * A function that accepts and possibly transforms a node.
4176     */
4177    export type Visitor = (node: Node) => VisitResult<Node>;
4178    export interface NodeVisitor {
4179        <T extends Node>(nodes: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T;
4180        <T extends Node>(nodes: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined;
4181    }
4182    export interface NodesVisitor {
4183        <T extends Node>(nodes: NodeArray<T>, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T>;
4184        <T extends Node>(nodes: NodeArray<T> | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T> | undefined;
4185    }
4186    export type VisitResult<T extends Node> = T | readonly T[] | undefined;
4187    export interface Printer {
4188        /**
4189         * Print a node and its subtree as-is, without any emit transformations.
4190         * @param hint A value indicating the purpose of a node. This is primarily used to
4191         * distinguish between an `Identifier` used in an expression position, versus an
4192         * `Identifier` used as an `IdentifierName` as part of a declaration. For most nodes you
4193         * should just pass `Unspecified`.
4194         * @param node The node to print. The node and its subtree are printed as-is, without any
4195         * emit transformations.
4196         * @param sourceFile A source file that provides context for the node. The source text of
4197         * the file is used to emit the original source content for literals and identifiers, while
4198         * the identifiers of the source file are used when generating unique names to avoid
4199         * collisions.
4200         */
4201        printNode(hint: EmitHint, node: Node, sourceFile: SourceFile): string;
4202        /**
4203         * Prints a list of nodes using the given format flags
4204         */
4205        printList<T extends Node>(format: ListFormat, list: NodeArray<T>, sourceFile: SourceFile): string;
4206        /**
4207         * Prints a source file as-is, without any emit transformations.
4208         */
4209        printFile(sourceFile: SourceFile): string;
4210        /**
4211         * Prints a bundle of source files as-is, without any emit transformations.
4212         */
4213        printBundle(bundle: Bundle): string;
4214        writeFile(sourceFile: SourceFile, writer: EmitTextWriter, sourceMapGenerator: SourceMapGenerator | undefined): void;
4215    }
4216    export interface PrintHandlers {
4217        /**
4218         * A hook used by the Printer when generating unique names to avoid collisions with
4219         * globally defined names that exist outside of the current source file.
4220         */
4221        hasGlobalName?(name: string): boolean;
4222        /**
4223         * A hook used by the Printer to provide notifications prior to emitting a node. A
4224         * compatible implementation **must** invoke `emitCallback` with the provided `hint` and
4225         * `node` values.
4226         * @param hint A hint indicating the intended purpose of the node.
4227         * @param node The node to emit.
4228         * @param emitCallback A callback that, when invoked, will emit the node.
4229         * @example
4230         * ```ts
4231         * var printer = createPrinter(printerOptions, {
4232         *   onEmitNode(hint, node, emitCallback) {
4233         *     // set up or track state prior to emitting the node...
4234         *     emitCallback(hint, node);
4235         *     // restore state after emitting the node...
4236         *   }
4237         * });
4238         * ```
4239         */
4240        onEmitNode?(hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void): void;
4241        /**
4242         * A hook used to check if an emit notification is required for a node.
4243         * @param node The node to emit.
4244         */
4245        isEmitNotificationEnabled?(node: Node): boolean;
4246        /**
4247         * A hook used by the Printer to perform just-in-time substitution of a node. This is
4248         * primarily used by node transformations that need to substitute one node for another,
4249         * such as replacing `myExportedVar` with `exports.myExportedVar`.
4250         * @param hint A hint indicating the intended purpose of the node.
4251         * @param node The node to emit.
4252         * @example
4253         * ```ts
4254         * var printer = createPrinter(printerOptions, {
4255         *   substituteNode(hint, node) {
4256         *     // perform substitution if necessary...
4257         *     return node;
4258         *   }
4259         * });
4260         * ```
4261         */
4262        substituteNode?(hint: EmitHint, node: Node): Node;
4263    }
4264    export interface PrinterOptions {
4265        removeComments?: boolean;
4266        newLine?: NewLineKind;
4267        omitTrailingSemicolon?: boolean;
4268        noEmitHelpers?: boolean;
4269        sourceMap?: boolean;
4270        inlineSourceMap?: boolean;
4271        inlineSources?: boolean;
4272    }
4273    export interface RawSourceMap {
4274        version: 3;
4275        file: string;
4276        sourceRoot?: string | null;
4277        sources: string[];
4278        sourcesContent?: (string | null)[] | null;
4279        mappings: string;
4280        names?: string[] | null;
4281    }
4282    /**
4283     * Generates a source map.
4284     */
4285    export interface SourceMapGenerator {
4286        getSources(): readonly string[];
4287        /**
4288         * Adds a source to the source map.
4289         */
4290        addSource(fileName: string): number;
4291        /**
4292         * Set the content for a source.
4293         */
4294        setSourceContent(sourceIndex: number, content: string | null): void;
4295        /**
4296         * Adds a name.
4297         */
4298        addName(name: string): number;
4299        /**
4300         * Adds a mapping without source information.
4301         */
4302        addMapping(generatedLine: number, generatedCharacter: number): void;
4303        /**
4304         * Adds a mapping with source information.
4305         */
4306        addMapping(generatedLine: number, generatedCharacter: number, sourceIndex: number, sourceLine: number, sourceCharacter: number, nameIndex?: number): void;
4307        /**
4308         * Appends a source map.
4309         */
4310        appendSourceMap(generatedLine: number, generatedCharacter: number, sourceMap: RawSourceMap, sourceMapPath: string, start?: LineAndCharacter, end?: LineAndCharacter): void;
4311        /**
4312         * Gets the source map as a `RawSourceMap` object.
4313         */
4314        toJSON(): RawSourceMap;
4315        /**
4316         * Gets the string representation of the source map.
4317         */
4318        toString(): string;
4319    }
4320    export interface EmitTextWriter extends SymbolWriter {
4321        write(s: string): void;
4322        writeTrailingSemicolon(text: string): void;
4323        writeComment(text: string): void;
4324        getText(): string;
4325        rawWrite(s: string): void;
4326        writeLiteral(s: string): void;
4327        getTextPos(): number;
4328        getLine(): number;
4329        getColumn(): number;
4330        getIndent(): number;
4331        isAtStartOfLine(): boolean;
4332        hasTrailingComment(): boolean;
4333        hasTrailingWhitespace(): boolean;
4334        getTextPosWithWriteLine?(): number;
4335        nonEscapingWrite?(text: string): void;
4336    }
4337    export interface GetEffectiveTypeRootsHost {
4338        directoryExists?(directoryName: string): boolean;
4339        getCurrentDirectory?(): string;
4340    }
4341    export interface ModuleSpecifierResolutionHost {
4342        useCaseSensitiveFileNames?(): boolean;
4343        fileExists(path: string): boolean;
4344        getCurrentDirectory(): string;
4345        directoryExists?(path: string): boolean;
4346        readFile?(path: string): string | undefined;
4347        realpath?(path: string): string;
4348        getModuleSpecifierCache?(): ModuleSpecifierCache;
4349        getPackageJsonInfoCache?(): PackageJsonInfoCache | undefined;
4350        getGlobalTypingsCacheLocation?(): string | undefined;
4351        getNearestAncestorDirectoryWithPackageJson?(fileName: string, rootDir?: string): string | undefined;
4352        readonly redirectTargetsMap: RedirectTargetsMap;
4353        getProjectReferenceRedirect(fileName: string): string | undefined;
4354        isSourceOfProjectReferenceRedirect(fileName: string): boolean;
4355    }
4356    export interface ModulePath {
4357        path: string;
4358        isInNodeModules: boolean;
4359        isRedirect: boolean;
4360    }
4361    export interface ResolvedModuleSpecifierInfo {
4362        modulePaths: readonly ModulePath[] | undefined;
4363        moduleSpecifiers: readonly string[] | undefined;
4364        isBlockedByPackageJsonDependencies: boolean | undefined;
4365    }
4366    export interface ModuleSpecifierOptions {
4367        overrideImportMode?: SourceFile["impliedNodeFormat"];
4368    }
4369    export interface ModuleSpecifierCache {
4370        get(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions): Readonly<ResolvedModuleSpecifierInfo> | undefined;
4371        set(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, modulePaths: readonly ModulePath[], moduleSpecifiers: readonly string[]): void;
4372        setBlockedByPackageJsonDependencies(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, isBlockedByPackageJsonDependencies: boolean): void;
4373        setModulePaths(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, modulePaths: readonly ModulePath[]): void;
4374        clear(): void;
4375        count(): number;
4376    }
4377    export interface SymbolTracker {
4378        trackSymbol?(symbol: Symbol, enclosingDeclaration: Node | undefined, meaning: SymbolFlags): boolean;
4379        reportInaccessibleThisError?(): void;
4380        reportPrivateInBaseOfClassExpression?(propertyName: string): void;
4381        reportInaccessibleUniqueSymbolError?(): void;
4382        reportCyclicStructureError?(): void;
4383        reportLikelyUnsafeImportRequiredError?(specifier: string): void;
4384        reportTruncationError?(): void;
4385        moduleResolverHost?: ModuleSpecifierResolutionHost & {
4386            getCommonSourceDirectory(): string;
4387        };
4388        trackReferencedAmbientModule?(decl: ModuleDeclaration, symbol: Symbol): void;
4389        trackExternalModuleSymbolOfImportTypeNode?(symbol: Symbol): void;
4390        reportNonlocalAugmentation?(containingFile: SourceFile, parentSymbol: Symbol, augmentingSymbol: Symbol): void;
4391        reportNonSerializableProperty?(propertyName: string): void;
4392        reportImportTypeNodeResolutionModeOverride?(): void;
4393    }
4394    export interface TextSpan {
4395        start: number;
4396        length: number;
4397    }
4398    export interface TextChangeRange {
4399        span: TextSpan;
4400        newLength: number;
4401    }
4402    export interface SyntaxList extends Node {
4403        kind: SyntaxKind.SyntaxList;
4404        _children: Node[];
4405    }
4406    export enum ListFormat {
4407        None = 0,
4408        SingleLine = 0,
4409        MultiLine = 1,
4410        PreserveLines = 2,
4411        LinesMask = 3,
4412        NotDelimited = 0,
4413        BarDelimited = 4,
4414        AmpersandDelimited = 8,
4415        CommaDelimited = 16,
4416        AsteriskDelimited = 32,
4417        DelimitersMask = 60,
4418        AllowTrailingComma = 64,
4419        Indented = 128,
4420        SpaceBetweenBraces = 256,
4421        SpaceBetweenSiblings = 512,
4422        Braces = 1024,
4423        Parenthesis = 2048,
4424        AngleBrackets = 4096,
4425        SquareBrackets = 8192,
4426        BracketsMask = 15360,
4427        OptionalIfUndefined = 16384,
4428        OptionalIfEmpty = 32768,
4429        Optional = 49152,
4430        PreferNewLine = 65536,
4431        NoTrailingNewLine = 131072,
4432        NoInterveningComments = 262144,
4433        NoSpaceIfEmpty = 524288,
4434        SingleElement = 1048576,
4435        SpaceAfterList = 2097152,
4436        Modifiers = 2359808,
4437        HeritageClauses = 512,
4438        SingleLineTypeLiteralMembers = 768,
4439        MultiLineTypeLiteralMembers = 32897,
4440        SingleLineTupleTypeElements = 528,
4441        MultiLineTupleTypeElements = 657,
4442        UnionTypeConstituents = 516,
4443        IntersectionTypeConstituents = 520,
4444        ObjectBindingPatternElements = 525136,
4445        ArrayBindingPatternElements = 524880,
4446        ObjectLiteralExpressionProperties = 526226,
4447        ImportClauseEntries = 526226,
4448        ArrayLiteralExpressionElements = 8914,
4449        CommaListElements = 528,
4450        CallExpressionArguments = 2576,
4451        NewExpressionArguments = 18960,
4452        TemplateExpressionSpans = 262144,
4453        SingleLineBlockStatements = 768,
4454        MultiLineBlockStatements = 129,
4455        VariableDeclarationList = 528,
4456        SingleLineFunctionBodyStatements = 768,
4457        MultiLineFunctionBodyStatements = 1,
4458        ClassHeritageClauses = 0,
4459        ClassMembers = 129,
4460        InterfaceMembers = 129,
4461        EnumMembers = 145,
4462        CaseBlockClauses = 129,
4463        NamedImportsOrExportsElements = 525136,
4464        JsxElementOrFragmentChildren = 262144,
4465        JsxElementAttributes = 262656,
4466        CaseOrDefaultClauseStatements = 163969,
4467        HeritageClauseTypes = 528,
4468        SourceFileStatements = 131073,
4469        Decorators = 2146305,
4470        TypeArguments = 53776,
4471        TypeParameters = 53776,
4472        Parameters = 2576,
4473        IndexSignatureParameters = 8848,
4474        JSDocComment = 33
4475    }
4476    export interface UserPreferences {
4477        readonly disableSuggestions?: boolean;
4478        readonly quotePreference?: "auto" | "double" | "single";
4479        readonly includeCompletionsForModuleExports?: boolean;
4480        readonly includeCompletionsForImportStatements?: boolean;
4481        readonly includeCompletionsWithSnippetText?: boolean;
4482        readonly includeAutomaticOptionalChainCompletions?: boolean;
4483        readonly includeCompletionsWithInsertText?: boolean;
4484        readonly includeCompletionsWithClassMemberSnippets?: boolean;
4485        readonly includeCompletionsWithObjectLiteralMethodSnippets?: boolean;
4486        readonly useLabelDetailsInCompletionEntries?: boolean;
4487        readonly allowIncompleteCompletions?: boolean;
4488        readonly importModuleSpecifierPreference?: "shortest" | "project-relative" | "relative" | "non-relative";
4489        /** Determines whether we import `foo/index.ts` as "foo", "foo/index", or "foo/index.js" */
4490        readonly importModuleSpecifierEnding?: "auto" | "minimal" | "index" | "js";
4491        readonly allowTextChangesInNewFiles?: boolean;
4492        readonly providePrefixAndSuffixTextForRename?: boolean;
4493        readonly includePackageJsonAutoImports?: "auto" | "on" | "off";
4494        readonly provideRefactorNotApplicableReason?: boolean;
4495        readonly jsxAttributeCompletionStyle?: "auto" | "braces" | "none";
4496        readonly includeInlayParameterNameHints?: "none" | "literals" | "all";
4497        readonly includeInlayParameterNameHintsWhenArgumentMatchesName?: boolean;
4498        readonly includeInlayFunctionParameterTypeHints?: boolean;
4499        readonly includeInlayVariableTypeHints?: boolean;
4500        readonly includeInlayVariableTypeHintsWhenTypeMatchesName?: boolean;
4501        readonly includeInlayPropertyDeclarationTypeHints?: boolean;
4502        readonly includeInlayFunctionLikeReturnTypeHints?: boolean;
4503        readonly includeInlayEnumMemberValueHints?: boolean;
4504        readonly allowRenameOfImportPath?: boolean;
4505        readonly autoImportFileExcludePatterns?: string[];
4506    }
4507    /** Represents a bigint literal value without requiring bigint support */
4508    export interface PseudoBigInt {
4509        negative: boolean;
4510        base10Value: string;
4511    }
4512    export {};
4513}
4514declare function setTimeout(handler: (...args: any[]) => void, timeout: number): any;
4515declare function clearTimeout(handle: any): void;
4516declare namespace ts {
4517    export enum FileWatcherEventKind {
4518        Created = 0,
4519        Changed = 1,
4520        Deleted = 2
4521    }
4522    export type FileWatcherCallback = (fileName: string, eventKind: FileWatcherEventKind, modifiedTime?: Date) => void;
4523    export type DirectoryWatcherCallback = (fileName: string) => void;
4524    export interface System {
4525        args: string[];
4526        newLine: string;
4527        useCaseSensitiveFileNames: boolean;
4528        write(s: string): void;
4529        writeOutputIsTTY?(): boolean;
4530        getWidthOfTerminal?(): number;
4531        readFile(path: string, encoding?: string): string | undefined;
4532        getFileSize?(path: string): number;
4533        writeFile(path: string, data: string, writeByteOrderMark?: boolean): void;
4534        /**
4535         * @pollingInterval - this parameter is used in polling-based watchers and ignored in watchers that
4536         * use native OS file watching
4537         */
4538        watchFile?(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher;
4539        watchDirectory?(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher;
4540        resolvePath(path: string): string;
4541        fileExists(path: string): boolean;
4542        directoryExists(path: string): boolean;
4543        createDirectory(path: string): void;
4544        getExecutingFilePath(): string;
4545        getCurrentDirectory(): string;
4546        getDirectories(path: string): string[];
4547        readDirectory(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
4548        getModifiedTime?(path: string): Date | undefined;
4549        setModifiedTime?(path: string, time: Date): void;
4550        deleteFile?(path: string): void;
4551        /**
4552         * A good implementation is node.js' `crypto.createHash`. (https://nodejs.org/api/crypto.html#crypto_crypto_createhash_algorithm)
4553         */
4554        createHash?(data: string): string;
4555        /** This must be cryptographically secure. Only implement this method using `crypto.createHash("sha256")`. */
4556        createSHA256Hash?(data: string): string;
4557        getMemoryUsage?(): number;
4558        exit(exitCode?: number): void;
4559        realpath?(path: string): string;
4560        setTimeout?(callback: (...args: any[]) => void, ms: number, ...args: any[]): any;
4561        clearTimeout?(timeoutId: any): void;
4562        clearScreen?(): void;
4563        base64decode?(input: string): string;
4564        base64encode?(input: string): string;
4565    }
4566    export interface FileWatcher {
4567        close(): void;
4568    }
4569    export function getNodeMajorVersion(): number | undefined;
4570    export let sys: System;
4571    export {};
4572}
4573declare namespace ts {
4574    type ErrorCallback = (message: DiagnosticMessage, length: number) => void;
4575    interface Scanner {
4576        getStartPos(): number;
4577        getToken(): SyntaxKind;
4578        getTextPos(): number;
4579        getTokenPos(): number;
4580        getTokenText(): string;
4581        getTokenValue(): string;
4582        hasUnicodeEscape(): boolean;
4583        hasExtendedUnicodeEscape(): boolean;
4584        hasPrecedingLineBreak(): boolean;
4585        isIdentifier(): boolean;
4586        isReservedWord(): boolean;
4587        isUnterminated(): boolean;
4588        reScanGreaterToken(): SyntaxKind;
4589        reScanSlashToken(): SyntaxKind;
4590        reScanAsteriskEqualsToken(): SyntaxKind;
4591        reScanTemplateToken(isTaggedTemplate: boolean): SyntaxKind;
4592        reScanTemplateHeadOrNoSubstitutionTemplate(): SyntaxKind;
4593        scanJsxIdentifier(): SyntaxKind;
4594        scanJsxAttributeValue(): SyntaxKind;
4595        reScanJsxAttributeValue(): SyntaxKind;
4596        reScanJsxToken(allowMultilineJsxText?: boolean): JsxTokenSyntaxKind;
4597        reScanLessThanToken(): SyntaxKind;
4598        reScanHashToken(): SyntaxKind;
4599        reScanQuestionToken(): SyntaxKind;
4600        reScanInvalidIdentifier(): SyntaxKind;
4601        scanJsxToken(): JsxTokenSyntaxKind;
4602        scanJsDocToken(): JSDocSyntaxKind;
4603        scan(): SyntaxKind;
4604        getText(): string;
4605        setText(text: string | undefined, start?: number, length?: number): void;
4606        setOnError(onError: ErrorCallback | undefined): void;
4607        setScriptTarget(scriptTarget: ScriptTarget): void;
4608        setLanguageVariant(variant: LanguageVariant): void;
4609        setTextPos(textPos: number): void;
4610        lookAhead<T>(callback: () => T): T;
4611        scanRange<T>(start: number, length: number, callback: () => T): T;
4612        tryScan<T>(callback: () => T): T;
4613        setEtsContext(isEtsContext: boolean): void;
4614    }
4615    function tokenToString(t: SyntaxKind): string | undefined;
4616    function getPositionOfLineAndCharacter(sourceFile: SourceFileLike, line: number, character: number): number;
4617    function getLineAndCharacterOfPosition(sourceFile: SourceFileLike, position: number): LineAndCharacter;
4618    function isWhiteSpaceLike(ch: number): boolean;
4619    /** Does not include line breaks. For that, see isWhiteSpaceLike. */
4620    function isWhiteSpaceSingleLine(ch: number): boolean;
4621    function isLineBreak(ch: number): boolean;
4622    function couldStartTrivia(text: string, pos: number): boolean;
4623    function forEachLeadingCommentRange<U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined;
4624    function forEachLeadingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined;
4625    function forEachTrailingCommentRange<U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined;
4626    function forEachTrailingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined;
4627    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;
4628    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;
4629    function getLeadingCommentRanges(text: string, pos: number): CommentRange[] | undefined;
4630    function getTrailingCommentRanges(text: string, pos: number): CommentRange[] | undefined;
4631    /** Optionally, get the shebang */
4632    function getShebang(text: string): string | undefined;
4633    function isIdentifierStart(ch: number, languageVersion: ScriptTarget | undefined): boolean;
4634    function isIdentifierPart(ch: number, languageVersion: ScriptTarget | undefined, identifierVariant?: LanguageVariant): boolean;
4635    function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean, languageVariant?: LanguageVariant, textInitial?: string, onError?: ErrorCallback, start?: number, length?: number): Scanner;
4636}
4637declare namespace ts {
4638    function isExternalModuleNameRelative(moduleName: string): boolean;
4639    function sortAndDeduplicateDiagnostics<T extends Diagnostic>(diagnostics: readonly T[]): SortedReadonlyArray<T>;
4640    function getDefaultLibFileName(options: CompilerOptions): string;
4641    function textSpanEnd(span: TextSpan): number;
4642    function textSpanIsEmpty(span: TextSpan): boolean;
4643    function textSpanContainsPosition(span: TextSpan, position: number): boolean;
4644    function textSpanContainsTextSpan(span: TextSpan, other: TextSpan): boolean;
4645    function textSpanOverlapsWith(span: TextSpan, other: TextSpan): boolean;
4646    function textSpanOverlap(span1: TextSpan, span2: TextSpan): TextSpan | undefined;
4647    function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan): boolean;
4648    function textSpanIntersectsWith(span: TextSpan, start: number, length: number): boolean;
4649    function decodedTextSpanIntersectsWith(start1: number, length1: number, start2: number, length2: number): boolean;
4650    function textSpanIntersectsWithPosition(span: TextSpan, position: number): boolean;
4651    function textSpanIntersection(span1: TextSpan, span2: TextSpan): TextSpan | undefined;
4652    function createTextSpan(start: number, length: number): TextSpan;
4653    function createTextSpanFromBounds(start: number, end: number): TextSpan;
4654    function textChangeRangeNewSpan(range: TextChangeRange): TextSpan;
4655    function textChangeRangeIsUnchanged(range: TextChangeRange): boolean;
4656    function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange;
4657    let unchangedTextChangeRange: TextChangeRange;
4658    /**
4659     * Called to merge all the changes that occurred across several versions of a script snapshot
4660     * into a single change.  i.e. if a user keeps making successive edits to a script we will
4661     * have a text change from V1 to V2, V2 to V3, ..., Vn.
4662     *
4663     * This function will then merge those changes into a single change range valid between V1 and
4664     * Vn.
4665     */
4666    function collapseTextChangeRangesAcrossMultipleVersions(changes: readonly TextChangeRange[]): TextChangeRange;
4667    function getTypeParameterOwner(d: Declaration): Declaration | undefined;
4668    type ParameterPropertyDeclaration = ParameterDeclaration & {
4669        parent: ConstructorDeclaration;
4670        name: Identifier;
4671    };
4672    function isParameterPropertyDeclaration(node: Node, parent: Node): node is ParameterPropertyDeclaration;
4673    function isEmptyBindingPattern(node: BindingName): node is BindingPattern;
4674    function isEmptyBindingElement(node: BindingElement): boolean;
4675    function walkUpBindingElementsAndPatterns(binding: BindingElement): VariableDeclaration | ParameterDeclaration;
4676    function getCombinedModifierFlags(node: Declaration): ModifierFlags;
4677    function getCombinedNodeFlags(node: Node): NodeFlags;
4678    /**
4679     * Checks to see if the locale is in the appropriate format,
4680     * and if it is, attempts to set the appropriate language.
4681     */
4682    function validateLocaleAndSetLanguage(locale: string, sys: {
4683        getExecutingFilePath(): string;
4684        resolvePath(path: string): string;
4685        fileExists(fileName: string): boolean;
4686        readFile(fileName: string): string | undefined;
4687    }, errors?: Push<Diagnostic>): void;
4688    function getOriginalNode(node: Node): Node;
4689    function getOriginalNode<T extends Node>(node: Node, nodeTest: (node: Node) => node is T): T;
4690    function getOriginalNode(node: Node | undefined): Node | undefined;
4691    function getOriginalNode<T extends Node>(node: Node | undefined, nodeTest: (node: Node | undefined) => node is T): T | undefined;
4692    /**
4693     * Iterates through the parent chain of a node and performs the callback on each parent until the callback
4694     * returns a truthy value, then returns that value.
4695     * If no such value is found, it applies the callback until the parent pointer is undefined or the callback returns "quit"
4696     * At that point findAncestor returns undefined.
4697     */
4698    function findAncestor<T extends Node>(node: Node | undefined, callback: (element: Node) => element is T): T | undefined;
4699    function findAncestor(node: Node | undefined, callback: (element: Node) => boolean | "quit"): Node | undefined;
4700    /**
4701     * Gets a value indicating whether a node originated in the parse tree.
4702     *
4703     * @param node The node to test.
4704     */
4705    function isParseTreeNode(node: Node): boolean;
4706    /**
4707     * Gets the original parse tree node for a node.
4708     *
4709     * @param node The original node.
4710     * @returns The original parse tree node if found; otherwise, undefined.
4711     */
4712    function getParseTreeNode(node: Node | undefined): Node | undefined;
4713    /**
4714     * Gets the original parse tree node for a node.
4715     *
4716     * @param node The original node.
4717     * @param nodeTest A callback used to ensure the correct type of parse tree node is returned.
4718     * @returns The original parse tree node if found; otherwise, undefined.
4719     */
4720    function getParseTreeNode<T extends Node>(node: T | undefined, nodeTest?: (node: Node) => node is T): T | undefined;
4721    /** Add an extra underscore to identifiers that start with two underscores to avoid issues with magic names like '__proto__' */
4722    function escapeLeadingUnderscores(identifier: string): __String;
4723    /**
4724     * Remove extra underscore from escaped identifier text content.
4725     *
4726     * @param identifier The escaped identifier text.
4727     * @returns The unescaped identifier text.
4728     */
4729    function unescapeLeadingUnderscores(identifier: __String): string;
4730    function idText(identifierOrPrivateName: Identifier | PrivateIdentifier): string;
4731    function symbolName(symbol: Symbol): string;
4732    function getNameOfJSDocTypedef(declaration: JSDocTypedefTag): Identifier | PrivateIdentifier | undefined;
4733    function getNameOfDeclaration(declaration: Declaration | Expression | undefined): DeclarationName | undefined;
4734    function getDecorators(node: HasDecorators): readonly Decorator[] | undefined;
4735    function getModifiers(node: HasModifiers): readonly Modifier[] | undefined;
4736    function getAllDecorators(node: Node | undefined): readonly Decorator[];
4737    function getIllegalDecorators(node: HasIllegalDecorators): readonly Decorator[] | undefined;
4738    /**
4739     * Gets the JSDoc parameter tags for the node if present.
4740     *
4741     * @remarks Returns any JSDoc param tag whose name matches the provided
4742     * parameter, whether a param tag on a containing function
4743     * expression, or a param tag on a variable declaration whose
4744     * initializer is the containing function. The tags closest to the
4745     * node are returned first, so in the previous example, the param
4746     * tag on the containing function expression would be first.
4747     *
4748     * For binding patterns, parameter tags are matched by position.
4749     */
4750    function getJSDocParameterTags(param: ParameterDeclaration): readonly JSDocParameterTag[];
4751    /**
4752     * Gets the JSDoc type parameter tags for the node if present.
4753     *
4754     * @remarks Returns any JSDoc template tag whose names match the provided
4755     * parameter, whether a template tag on a containing function
4756     * expression, or a template tag on a variable declaration whose
4757     * initializer is the containing function. The tags closest to the
4758     * node are returned first, so in the previous example, the template
4759     * tag on the containing function expression would be first.
4760     */
4761    function getJSDocTypeParameterTags(param: TypeParameterDeclaration): readonly JSDocTemplateTag[];
4762    /**
4763     * Return true if the node has JSDoc parameter tags.
4764     *
4765     * @remarks Includes parameter tags that are not directly on the node,
4766     * for example on a variable declaration whose initializer is a function expression.
4767     */
4768    function hasJSDocParameterTags(node: FunctionLikeDeclaration | SignatureDeclaration): boolean;
4769    /** Gets the JSDoc augments tag for the node if present */
4770    function getJSDocAugmentsTag(node: Node): JSDocAugmentsTag | undefined;
4771    /** Gets the JSDoc implements tags for the node if present */
4772    function getJSDocImplementsTags(node: Node): readonly JSDocImplementsTag[];
4773    /** Gets the JSDoc class tag for the node if present */
4774    function getJSDocClassTag(node: Node): JSDocClassTag | undefined;
4775    /** Gets the JSDoc public tag for the node if present */
4776    function getJSDocPublicTag(node: Node): JSDocPublicTag | undefined;
4777    /** Gets the JSDoc private tag for the node if present */
4778    function getJSDocPrivateTag(node: Node): JSDocPrivateTag | undefined;
4779    /** Gets the JSDoc protected tag for the node if present */
4780    function getJSDocProtectedTag(node: Node): JSDocProtectedTag | undefined;
4781    /** Gets the JSDoc protected tag for the node if present */
4782    function getJSDocReadonlyTag(node: Node): JSDocReadonlyTag | undefined;
4783    function getJSDocOverrideTagNoCache(node: Node): JSDocOverrideTag | undefined;
4784    /** Gets the JSDoc deprecated tag for the node if present */
4785    function getJSDocDeprecatedTag(node: Node): JSDocDeprecatedTag | undefined;
4786    /** Gets the JSDoc enum tag for the node if present */
4787    function getJSDocEnumTag(node: Node): JSDocEnumTag | undefined;
4788    /** Gets the JSDoc this tag for the node if present */
4789    function getJSDocThisTag(node: Node): JSDocThisTag | undefined;
4790    /** Gets the JSDoc return tag for the node if present */
4791    function getJSDocReturnTag(node: Node): JSDocReturnTag | undefined;
4792    /** Gets the JSDoc template tag for the node if present */
4793    function getJSDocTemplateTag(node: Node): JSDocTemplateTag | undefined;
4794    /** Gets the JSDoc type tag for the node if present and valid */
4795    function getJSDocTypeTag(node: Node): JSDocTypeTag | undefined;
4796    /**
4797     * Gets the type node for the node if provided via JSDoc.
4798     *
4799     * @remarks The search includes any JSDoc param tag that relates
4800     * to the provided parameter, for example a type tag on the
4801     * parameter itself, or a param tag on a containing function
4802     * expression, or a param tag on a variable declaration whose
4803     * initializer is the containing function. The tags closest to the
4804     * node are examined first, so in the previous example, the type
4805     * tag directly on the node would be returned.
4806     */
4807    function getJSDocType(node: Node): TypeNode | undefined;
4808    /**
4809     * Gets the return type node for the node if provided via JSDoc return tag or type tag.
4810     *
4811     * @remarks `getJSDocReturnTag` just gets the whole JSDoc tag. This function
4812     * gets the type from inside the braces, after the fat arrow, etc.
4813     */
4814    function getJSDocReturnType(node: Node): TypeNode | undefined;
4815    /** Get all JSDoc tags related to a node, including those on parent nodes. */
4816    function getJSDocTags(node: Node): readonly JSDocTag[];
4817    /** Gets all JSDoc tags that match a specified predicate */
4818    function getAllJSDocTags<T extends JSDocTag>(node: Node, predicate: (tag: JSDocTag) => tag is T): readonly T[];
4819    /** Gets all JSDoc tags of a specified kind */
4820    function getAllJSDocTagsOfKind(node: Node, kind: SyntaxKind): readonly JSDocTag[];
4821    /** Gets the text of a jsdoc comment, flattening links to their text. */
4822    function getTextOfJSDocComment(comment?: string | NodeArray<JSDocComment>): string | undefined;
4823    /**
4824     * Gets the effective type parameters. If the node was parsed in a
4825     * JavaScript file, gets the type parameters from the `@template` tag from JSDoc.
4826     *
4827     * This does *not* return type parameters from a jsdoc reference to a generic type, eg
4828     *
4829     * type Id = <T>(x: T) => T
4830     * /** @type {Id} /
4831     * function id(x) { return x }
4832     */
4833    function getEffectiveTypeParameterDeclarations(node: DeclarationWithTypeParameters): readonly TypeParameterDeclaration[];
4834    function getEffectiveConstraintOfTypeParameter(node: TypeParameterDeclaration): TypeNode | undefined;
4835    function isMemberName(node: Node): node is MemberName;
4836    function isPropertyAccessChain(node: Node): node is PropertyAccessChain;
4837    function isElementAccessChain(node: Node): node is ElementAccessChain;
4838    function isCallChain(node: Node): node is CallChain;
4839    function isOptionalChain(node: Node): node is PropertyAccessChain | ElementAccessChain | CallChain | NonNullChain;
4840    function isNullishCoalesce(node: Node): boolean;
4841    function isConstTypeReference(node: Node): boolean;
4842    function skipPartiallyEmittedExpressions(node: Expression): Expression;
4843    function skipPartiallyEmittedExpressions(node: Node): Node;
4844    function isNonNullChain(node: Node): node is NonNullChain;
4845    function isBreakOrContinueStatement(node: Node): node is BreakOrContinueStatement;
4846    function isNamedExportBindings(node: Node): node is NamedExportBindings;
4847    function isUnparsedTextLike(node: Node): node is UnparsedTextLike;
4848    function isUnparsedNode(node: Node): node is UnparsedNode;
4849    function isJSDocPropertyLikeTag(node: Node): node is JSDocPropertyLikeTag;
4850    /**
4851     * True if kind is of some token syntax kind.
4852     * For example, this is true for an IfKeyword but not for an IfStatement.
4853     * Literals are considered tokens, except TemplateLiteral, but does include TemplateHead/Middle/Tail.
4854     */
4855    function isTokenKind(kind: SyntaxKind): boolean;
4856    /**
4857     * True if node is of some token syntax kind.
4858     * For example, this is true for an IfKeyword but not for an IfStatement.
4859     * Literals are considered tokens, except TemplateLiteral, but does include TemplateHead/Middle/Tail.
4860     */
4861    function isToken(n: Node): boolean;
4862    function isLiteralExpression(node: Node): node is LiteralExpression;
4863    function isTemplateLiteralToken(node: Node): node is TemplateLiteralToken;
4864    function isTemplateMiddleOrTemplateTail(node: Node): node is TemplateMiddle | TemplateTail;
4865    function isImportOrExportSpecifier(node: Node): node is ImportSpecifier | ExportSpecifier;
4866    function isTypeOnlyImportOrExportDeclaration(node: Node): node is TypeOnlyAliasDeclaration;
4867    function isAssertionKey(node: Node): node is AssertionKey;
4868    function isStringTextContainingNode(node: Node): node is StringLiteral | TemplateLiteralToken;
4869    function isModifier(node: Node): node is Modifier;
4870    function isEntityName(node: Node): node is EntityName;
4871    function isPropertyName(node: Node): node is PropertyName;
4872    function isBindingName(node: Node): node is BindingName;
4873    function isFunctionLike(node: Node | undefined): node is SignatureDeclaration;
4874    function isClassElement(node: Node): node is ClassElement;
4875    function isClassLike(node: Node): node is ClassLikeDeclaration;
4876    function isStruct(node: Node): node is StructDeclaration;
4877    function isAccessor(node: Node): node is AccessorDeclaration;
4878    function isAutoAccessorPropertyDeclaration(node: Node): node is AutoAccessorPropertyDeclaration;
4879    function isModifierLike(node: Node): node is ModifierLike;
4880    function isTypeElement(node: Node): node is TypeElement;
4881    function isClassOrTypeElement(node: Node): node is ClassElement | TypeElement;
4882    function isObjectLiteralElementLike(node: Node): node is ObjectLiteralElementLike;
4883    /**
4884     * Node test that determines whether a node is a valid type node.
4885     * This differs from the `isPartOfTypeNode` function which determines whether a node is *part*
4886     * of a TypeNode.
4887     */
4888    function isTypeNode(node: Node): node is TypeNode;
4889    function isFunctionOrConstructorTypeNode(node: Node): node is FunctionTypeNode | ConstructorTypeNode;
4890    function isPropertyAccessOrQualifiedName(node: Node): node is PropertyAccessExpression | QualifiedName;
4891    function isCallLikeExpression(node: Node): node is CallLikeExpression;
4892    function isCallOrNewExpression(node: Node): node is CallExpression | NewExpression;
4893    function isTemplateLiteral(node: Node): node is TemplateLiteral;
4894    function isAssertionExpression(node: Node): node is AssertionExpression;
4895    function isIterationStatement(node: Node, lookInLabeledStatements: false): node is IterationStatement;
4896    function isIterationStatement(node: Node, lookInLabeledStatements: boolean): node is IterationStatement | LabeledStatement;
4897    function isJsxOpeningLikeElement(node: Node): node is JsxOpeningLikeElement;
4898    function isCaseOrDefaultClause(node: Node): node is CaseOrDefaultClause;
4899    /** True if node is of a kind that may contain comment text. */
4900    function isJSDocCommentContainingNode(node: Node): boolean;
4901    function isSetAccessor(node: Node): node is SetAccessorDeclaration;
4902    function isGetAccessor(node: Node): node is GetAccessorDeclaration;
4903    /** True if has initializer node attached to it. */
4904    function hasOnlyExpressionInitializer(node: Node): node is HasExpressionInitializer;
4905    function isObjectLiteralElement(node: Node): node is ObjectLiteralElement;
4906    function isStringLiteralLike(node: Node): node is StringLiteralLike;
4907    function isJSDocLinkLike(node: Node): node is JSDocLink | JSDocLinkCode | JSDocLinkPlain;
4908    function hasRestParameter(s: SignatureDeclaration | JSDocSignature): boolean;
4909    function isRestParameter(node: ParameterDeclaration | JSDocParameterTag): boolean;
4910}
4911declare namespace ts {
4912    function getLeadingCommentRangesOfNode(node: Node, sourceFileOfNode: SourceFile): CommentRange[] | undefined;
4913    function createTextWriter(newLine: string): EmitTextWriter;
4914    /**
4915     * Bypasses immutability and directly sets the `parent` property of each `Node` recursively.
4916     * @param rootNode The root node from which to start the recursion.
4917     * @param incremental When `true`, only recursively descends through nodes whose `parent` pointers are incorrect.
4918     * This allows us to quickly bail out of setting `parent` for subtrees during incremental parsing.
4919     */
4920    function setParentRecursive<T extends Node>(rootNode: T, incremental: boolean): T;
4921    function setParentRecursive<T extends Node>(rootNode: T | undefined, incremental: boolean): T | undefined;
4922}
4923declare namespace ts {
4924    const factory: NodeFactory;
4925    function createUnparsedSourceFile(text: string): UnparsedSource;
4926    function createUnparsedSourceFile(inputFile: InputFiles, type: "js" | "dts", stripInternal?: boolean): UnparsedSource;
4927    function createUnparsedSourceFile(text: string, mapPath: string | undefined, map: string | undefined): UnparsedSource;
4928    function createInputFiles(javascriptText: string, declarationText: string): InputFiles;
4929    function createInputFiles(readFileText: (path: string) => string | undefined, javascriptPath: string, javascriptMapPath: string | undefined, declarationPath: string, declarationMapPath: string | undefined, buildInfoPath: string | undefined): InputFiles;
4930    function createInputFiles(javascriptText: string, declarationText: string, javascriptMapPath: string | undefined, javascriptMapText: string | undefined, declarationMapPath: string | undefined, declarationMapText: string | undefined): InputFiles;
4931    /**
4932     * Create an external source map source file reference
4933     */
4934    function createSourceMapSource(fileName: string, text: string, skipTrivia?: (pos: number) => number): SourceMapSource;
4935    function setOriginalNode<T extends Node>(node: T, original: Node | undefined): T;
4936}
4937declare namespace ts {
4938    /**
4939     * Clears any `EmitNode` entries from parse-tree nodes.
4940     * @param sourceFile A source file.
4941     */
4942    function disposeEmitNodes(sourceFile: SourceFile | undefined): void;
4943    /**
4944     * Sets flags that control emit behavior of a node.
4945     */
4946    function setEmitFlags<T extends Node>(node: T, emitFlags: EmitFlags): T;
4947    /**
4948     * Gets a custom text range to use when emitting source maps.
4949     */
4950    function getSourceMapRange(node: Node): SourceMapRange;
4951    /**
4952     * Sets a custom text range to use when emitting source maps.
4953     */
4954    function setSourceMapRange<T extends Node>(node: T, range: SourceMapRange | undefined): T;
4955    /**
4956     * Gets the TextRange to use for source maps for a token of a node.
4957     */
4958    function getTokenSourceMapRange(node: Node, token: SyntaxKind): SourceMapRange | undefined;
4959    /**
4960     * Sets the TextRange to use for source maps for a token of a node.
4961     */
4962    function setTokenSourceMapRange<T extends Node>(node: T, token: SyntaxKind, range: SourceMapRange | undefined): T;
4963    /**
4964     * Gets a custom text range to use when emitting comments.
4965     */
4966    function getCommentRange(node: Node): TextRange;
4967    /**
4968     * Sets a custom text range to use when emitting comments.
4969     */
4970    function setCommentRange<T extends Node>(node: T, range: TextRange): T;
4971    function getSyntheticLeadingComments(node: Node): SynthesizedComment[] | undefined;
4972    function setSyntheticLeadingComments<T extends Node>(node: T, comments: SynthesizedComment[] | undefined): T;
4973    function addSyntheticLeadingComment<T extends Node>(node: T, kind: SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia, text: string, hasTrailingNewLine?: boolean): T;
4974    function getSyntheticTrailingComments(node: Node): SynthesizedComment[] | undefined;
4975    function setSyntheticTrailingComments<T extends Node>(node: T, comments: SynthesizedComment[] | undefined): T;
4976    function addSyntheticTrailingComment<T extends Node>(node: T, kind: SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia, text: string, hasTrailingNewLine?: boolean): T;
4977    function moveSyntheticComments<T extends Node>(node: T, original: Node): T;
4978    /**
4979     * Gets the constant value to emit for an expression representing an enum.
4980     */
4981    function getConstantValue(node: AccessExpression): string | number | undefined;
4982    /**
4983     * Sets the constant value to emit for an expression.
4984     */
4985    function setConstantValue(node: AccessExpression, value: string | number): AccessExpression;
4986    /**
4987     * Adds an EmitHelper to a node.
4988     */
4989    function addEmitHelper<T extends Node>(node: T, helper: EmitHelper): T;
4990    /**
4991     * Add EmitHelpers to a node.
4992     */
4993    function addEmitHelpers<T extends Node>(node: T, helpers: EmitHelper[] | undefined): T;
4994    /**
4995     * Removes an EmitHelper from a node.
4996     */
4997    function removeEmitHelper(node: Node, helper: EmitHelper): boolean;
4998    /**
4999     * Gets the EmitHelpers of a node.
5000     */
5001    function getEmitHelpers(node: Node): EmitHelper[] | undefined;
5002    /**
5003     * Moves matching emit helpers from a source node to a target node.
5004     */
5005    function moveEmitHelpers(source: Node, target: Node, predicate: (helper: EmitHelper) => boolean): void;
5006}
5007declare namespace ts {
5008    function isNumericLiteral(node: Node): node is NumericLiteral;
5009    function isBigIntLiteral(node: Node): node is BigIntLiteral;
5010    function isStringLiteral(node: Node): node is StringLiteral;
5011    function isJsxText(node: Node): node is JsxText;
5012    function isRegularExpressionLiteral(node: Node): node is RegularExpressionLiteral;
5013    function isNoSubstitutionTemplateLiteral(node: Node): node is NoSubstitutionTemplateLiteral;
5014    function isTemplateHead(node: Node): node is TemplateHead;
5015    function isTemplateMiddle(node: Node): node is TemplateMiddle;
5016    function isTemplateTail(node: Node): node is TemplateTail;
5017    function isDotDotDotToken(node: Node): node is DotDotDotToken;
5018    function isPlusToken(node: Node): node is PlusToken;
5019    function isMinusToken(node: Node): node is MinusToken;
5020    function isAsteriskToken(node: Node): node is AsteriskToken;
5021    function isIdentifier(node: Node): node is Identifier;
5022    function isPrivateIdentifier(node: Node): node is PrivateIdentifier;
5023    function isQualifiedName(node: Node): node is QualifiedName;
5024    function isComputedPropertyName(node: Node): node is ComputedPropertyName;
5025    function isTypeParameterDeclaration(node: Node): node is TypeParameterDeclaration;
5026    function isParameter(node: Node): node is ParameterDeclaration;
5027    function isDecorator(node: Node): node is Decorator;
5028    function isPropertySignature(node: Node): node is PropertySignature;
5029    function isPropertyDeclaration(node: Node): node is PropertyDeclaration;
5030    function isMethodSignature(node: Node): node is MethodSignature;
5031    function isMethodDeclaration(node: Node): node is MethodDeclaration;
5032    function isClassStaticBlockDeclaration(node: Node): node is ClassStaticBlockDeclaration;
5033    function isConstructorDeclaration(node: Node): node is ConstructorDeclaration;
5034    function isGetAccessorDeclaration(node: Node): node is GetAccessorDeclaration;
5035    function isSetAccessorDeclaration(node: Node): node is SetAccessorDeclaration;
5036    function isCallSignatureDeclaration(node: Node): node is CallSignatureDeclaration;
5037    function isConstructSignatureDeclaration(node: Node): node is ConstructSignatureDeclaration;
5038    function isIndexSignatureDeclaration(node: Node): node is IndexSignatureDeclaration;
5039    function isTypePredicateNode(node: Node): node is TypePredicateNode;
5040    function isTypeReferenceNode(node: Node): node is TypeReferenceNode;
5041    function isFunctionTypeNode(node: Node): node is FunctionTypeNode;
5042    function isConstructorTypeNode(node: Node): node is ConstructorTypeNode;
5043    function isTypeQueryNode(node: Node): node is TypeQueryNode;
5044    function isTypeLiteralNode(node: Node): node is TypeLiteralNode;
5045    function isArrayTypeNode(node: Node): node is ArrayTypeNode;
5046    function isTupleTypeNode(node: Node): node is TupleTypeNode;
5047    function isNamedTupleMember(node: Node): node is NamedTupleMember;
5048    function isOptionalTypeNode(node: Node): node is OptionalTypeNode;
5049    function isRestTypeNode(node: Node): node is RestTypeNode;
5050    function isUnionTypeNode(node: Node): node is UnionTypeNode;
5051    function isIntersectionTypeNode(node: Node): node is IntersectionTypeNode;
5052    function isConditionalTypeNode(node: Node): node is ConditionalTypeNode;
5053    function isInferTypeNode(node: Node): node is InferTypeNode;
5054    function isParenthesizedTypeNode(node: Node): node is ParenthesizedTypeNode;
5055    function isThisTypeNode(node: Node): node is ThisTypeNode;
5056    function isTypeOperatorNode(node: Node): node is TypeOperatorNode;
5057    function isIndexedAccessTypeNode(node: Node): node is IndexedAccessTypeNode;
5058    function isMappedTypeNode(node: Node): node is MappedTypeNode;
5059    function isLiteralTypeNode(node: Node): node is LiteralTypeNode;
5060    function isImportTypeNode(node: Node): node is ImportTypeNode;
5061    function isTemplateLiteralTypeSpan(node: Node): node is TemplateLiteralTypeSpan;
5062    function isTemplateLiteralTypeNode(node: Node): node is TemplateLiteralTypeNode;
5063    function isObjectBindingPattern(node: Node): node is ObjectBindingPattern;
5064    function isArrayBindingPattern(node: Node): node is ArrayBindingPattern;
5065    function isBindingElement(node: Node): node is BindingElement;
5066    function isArrayLiteralExpression(node: Node): node is ArrayLiteralExpression;
5067    function isObjectLiteralExpression(node: Node): node is ObjectLiteralExpression;
5068    function isPropertyAccessExpression(node: Node): node is PropertyAccessExpression;
5069    function isElementAccessExpression(node: Node): node is ElementAccessExpression;
5070    function isCallExpression(node: Node): node is CallExpression;
5071    function isNewExpression(node: Node): node is NewExpression;
5072    function isTaggedTemplateExpression(node: Node): node is TaggedTemplateExpression;
5073    function isTypeAssertionExpression(node: Node): node is TypeAssertion;
5074    function isParenthesizedExpression(node: Node): node is ParenthesizedExpression;
5075    function isFunctionExpression(node: Node): node is FunctionExpression;
5076    function isEtsComponentExpression(node: Node): node is EtsComponentExpression;
5077    function isArrowFunction(node: Node): node is ArrowFunction;
5078    function isDeleteExpression(node: Node): node is DeleteExpression;
5079    function isTypeOfExpression(node: Node): node is TypeOfExpression;
5080    function isVoidExpression(node: Node): node is VoidExpression;
5081    function isAwaitExpression(node: Node): node is AwaitExpression;
5082    function isPrefixUnaryExpression(node: Node): node is PrefixUnaryExpression;
5083    function isPostfixUnaryExpression(node: Node): node is PostfixUnaryExpression;
5084    function isBinaryExpression(node: Node): node is BinaryExpression;
5085    function isConditionalExpression(node: Node): node is ConditionalExpression;
5086    function isTemplateExpression(node: Node): node is TemplateExpression;
5087    function isYieldExpression(node: Node): node is YieldExpression;
5088    function isSpreadElement(node: Node): node is SpreadElement;
5089    function isClassExpression(node: Node): node is ClassExpression;
5090    function isOmittedExpression(node: Node): node is OmittedExpression;
5091    function isExpressionWithTypeArguments(node: Node): node is ExpressionWithTypeArguments;
5092    function isAsExpression(node: Node): node is AsExpression;
5093    function isSatisfiesExpression(node: Node): node is SatisfiesExpression;
5094    function isNonNullExpression(node: Node): node is NonNullExpression;
5095    function isMetaProperty(node: Node): node is MetaProperty;
5096    function isSyntheticExpression(node: Node): node is SyntheticExpression;
5097    function isPartiallyEmittedExpression(node: Node): node is PartiallyEmittedExpression;
5098    function isCommaListExpression(node: Node): node is CommaListExpression;
5099    function isTemplateSpan(node: Node): node is TemplateSpan;
5100    function isSemicolonClassElement(node: Node): node is SemicolonClassElement;
5101    function isBlock(node: Node): node is Block;
5102    function isVariableStatement(node: Node): node is VariableStatement;
5103    function isEmptyStatement(node: Node): node is EmptyStatement;
5104    function isExpressionStatement(node: Node): node is ExpressionStatement;
5105    function isIfStatement(node: Node): node is IfStatement;
5106    function isDoStatement(node: Node): node is DoStatement;
5107    function isWhileStatement(node: Node): node is WhileStatement;
5108    function isForStatement(node: Node): node is ForStatement;
5109    function isForInStatement(node: Node): node is ForInStatement;
5110    function isForOfStatement(node: Node): node is ForOfStatement;
5111    function isContinueStatement(node: Node): node is ContinueStatement;
5112    function isBreakStatement(node: Node): node is BreakStatement;
5113    function isReturnStatement(node: Node): node is ReturnStatement;
5114    function isWithStatement(node: Node): node is WithStatement;
5115    function isSwitchStatement(node: Node): node is SwitchStatement;
5116    function isLabeledStatement(node: Node): node is LabeledStatement;
5117    function isThrowStatement(node: Node): node is ThrowStatement;
5118    function isTryStatement(node: Node): node is TryStatement;
5119    function isDebuggerStatement(node: Node): node is DebuggerStatement;
5120    function isVariableDeclaration(node: Node): node is VariableDeclaration;
5121    function isVariableDeclarationList(node: Node): node is VariableDeclarationList;
5122    function isFunctionDeclaration(node: Node): node is FunctionDeclaration;
5123    function isClassDeclaration(node: Node): node is ClassDeclaration;
5124    function isStructDeclaration(node: Node): node is StructDeclaration;
5125    function isInterfaceDeclaration(node: Node): node is InterfaceDeclaration;
5126    function isTypeAliasDeclaration(node: Node): node is TypeAliasDeclaration;
5127    function isEnumDeclaration(node: Node): node is EnumDeclaration;
5128    function isModuleDeclaration(node: Node): node is ModuleDeclaration;
5129    function isModuleBlock(node: Node): node is ModuleBlock;
5130    function isCaseBlock(node: Node): node is CaseBlock;
5131    function isNamespaceExportDeclaration(node: Node): node is NamespaceExportDeclaration;
5132    function isImportEqualsDeclaration(node: Node): node is ImportEqualsDeclaration;
5133    function isImportDeclaration(node: Node): node is ImportDeclaration;
5134    function isImportClause(node: Node): node is ImportClause;
5135    function isImportTypeAssertionContainer(node: Node): node is ImportTypeAssertionContainer;
5136    function isAssertClause(node: Node): node is AssertClause;
5137    function isAssertEntry(node: Node): node is AssertEntry;
5138    function isNamespaceImport(node: Node): node is NamespaceImport;
5139    function isNamespaceExport(node: Node): node is NamespaceExport;
5140    function isNamedImports(node: Node): node is NamedImports;
5141    function isImportSpecifier(node: Node): node is ImportSpecifier;
5142    function isExportAssignment(node: Node): node is ExportAssignment;
5143    function isExportDeclaration(node: Node): node is ExportDeclaration;
5144    function isNamedExports(node: Node): node is NamedExports;
5145    function isExportSpecifier(node: Node): node is ExportSpecifier;
5146    function isMissingDeclaration(node: Node): node is MissingDeclaration;
5147    function isNotEmittedStatement(node: Node): node is NotEmittedStatement;
5148    function isExternalModuleReference(node: Node): node is ExternalModuleReference;
5149    function isJsxElement(node: Node): node is JsxElement;
5150    function isJsxSelfClosingElement(node: Node): node is JsxSelfClosingElement;
5151    function isJsxOpeningElement(node: Node): node is JsxOpeningElement;
5152    function isJsxClosingElement(node: Node): node is JsxClosingElement;
5153    function isJsxFragment(node: Node): node is JsxFragment;
5154    function isJsxOpeningFragment(node: Node): node is JsxOpeningFragment;
5155    function isJsxClosingFragment(node: Node): node is JsxClosingFragment;
5156    function isJsxAttribute(node: Node): node is JsxAttribute;
5157    function isJsxAttributes(node: Node): node is JsxAttributes;
5158    function isJsxSpreadAttribute(node: Node): node is JsxSpreadAttribute;
5159    function isJsxExpression(node: Node): node is JsxExpression;
5160    function isCaseClause(node: Node): node is CaseClause;
5161    function isDefaultClause(node: Node): node is DefaultClause;
5162    function isHeritageClause(node: Node): node is HeritageClause;
5163    function isCatchClause(node: Node): node is CatchClause;
5164    function isPropertyAssignment(node: Node): node is PropertyAssignment;
5165    function isShorthandPropertyAssignment(node: Node): node is ShorthandPropertyAssignment;
5166    function isSpreadAssignment(node: Node): node is SpreadAssignment;
5167    function isEnumMember(node: Node): node is EnumMember;
5168    function isUnparsedPrepend(node: Node): node is UnparsedPrepend;
5169    function isSourceFile(node: Node): node is SourceFile;
5170    function isBundle(node: Node): node is Bundle;
5171    function isUnparsedSource(node: Node): node is UnparsedSource;
5172    function isJSDocTypeExpression(node: Node): node is JSDocTypeExpression;
5173    function isJSDocNameReference(node: Node): node is JSDocNameReference;
5174    function isJSDocMemberName(node: Node): node is JSDocMemberName;
5175    function isJSDocLink(node: Node): node is JSDocLink;
5176    function isJSDocLinkCode(node: Node): node is JSDocLinkCode;
5177    function isJSDocLinkPlain(node: Node): node is JSDocLinkPlain;
5178    function isJSDocAllType(node: Node): node is JSDocAllType;
5179    function isJSDocUnknownType(node: Node): node is JSDocUnknownType;
5180    function isJSDocNullableType(node: Node): node is JSDocNullableType;
5181    function isJSDocNonNullableType(node: Node): node is JSDocNonNullableType;
5182    function isJSDocOptionalType(node: Node): node is JSDocOptionalType;
5183    function isJSDocFunctionType(node: Node): node is JSDocFunctionType;
5184    function isJSDocVariadicType(node: Node): node is JSDocVariadicType;
5185    function isJSDocNamepathType(node: Node): node is JSDocNamepathType;
5186    function isJSDoc(node: Node): node is JSDoc;
5187    function isJSDocTypeLiteral(node: Node): node is JSDocTypeLiteral;
5188    function isJSDocSignature(node: Node): node is JSDocSignature;
5189    function isJSDocAugmentsTag(node: Node): node is JSDocAugmentsTag;
5190    function isJSDocAuthorTag(node: Node): node is JSDocAuthorTag;
5191    function isJSDocClassTag(node: Node): node is JSDocClassTag;
5192    function isJSDocCallbackTag(node: Node): node is JSDocCallbackTag;
5193    function isJSDocPublicTag(node: Node): node is JSDocPublicTag;
5194    function isJSDocPrivateTag(node: Node): node is JSDocPrivateTag;
5195    function isJSDocProtectedTag(node: Node): node is JSDocProtectedTag;
5196    function isJSDocReadonlyTag(node: Node): node is JSDocReadonlyTag;
5197    function isJSDocOverrideTag(node: Node): node is JSDocOverrideTag;
5198    function isJSDocDeprecatedTag(node: Node): node is JSDocDeprecatedTag;
5199    function isJSDocSeeTag(node: Node): node is JSDocSeeTag;
5200    function isJSDocEnumTag(node: Node): node is JSDocEnumTag;
5201    function isJSDocParameterTag(node: Node): node is JSDocParameterTag;
5202    function isJSDocReturnTag(node: Node): node is JSDocReturnTag;
5203    function isJSDocThisTag(node: Node): node is JSDocThisTag;
5204    function isJSDocTypeTag(node: Node): node is JSDocTypeTag;
5205    function isJSDocTemplateTag(node: Node): node is JSDocTemplateTag;
5206    function isJSDocTypedefTag(node: Node): node is JSDocTypedefTag;
5207    function isJSDocUnknownTag(node: Node): node is JSDocUnknownTag;
5208    function isJSDocPropertyTag(node: Node): node is JSDocPropertyTag;
5209    function isJSDocImplementsTag(node: Node): node is JSDocImplementsTag;
5210}
5211declare namespace ts {
5212    function setTextRange<T extends TextRange>(range: T, location: TextRange | undefined): T;
5213    function canHaveModifiers(node: Node): node is HasModifiers;
5214    function canHaveDecorators(node: Node): node is HasDecorators;
5215}
5216declare namespace ts {
5217    /**
5218     * Invokes a callback for each child of the given node. The 'cbNode' callback is invoked for all child nodes
5219     * stored in properties. If a 'cbNodes' callback is specified, it is invoked for embedded arrays; otherwise,
5220     * embedded arrays are flattened and the 'cbNode' callback is invoked for each element. If a callback returns
5221     * a truthy value, iteration stops and that value is returned. Otherwise, undefined is returned.
5222     *
5223     * @param node a given node to visit its children
5224     * @param cbNode a callback to be invoked for all child nodes
5225     * @param cbNodes a callback to be invoked for embedded array
5226     *
5227     * @remarks `forEachChild` must visit the children of a node in the order
5228     * that they appear in the source code. The language service depends on this property to locate nodes by position.
5229     */
5230    export function forEachChild<T>(node: Node, cbNode: (node: Node) => T | undefined, cbNodes?: (nodes: NodeArray<Node>) => T | undefined): T | undefined;
5231    export interface CreateSourceFileOptions {
5232        languageVersion: ScriptTarget;
5233        /**
5234         * Controls the format the file is detected as - this can be derived from only the path
5235         * and files on disk, but needs to be done with a module resolution cache in scope to be performant.
5236         * This is usually `undefined` for compilations that do not have `moduleResolution` values of `node16` or `nodenext`.
5237         */
5238        impliedNodeFormat?: ModuleKind.ESNext | ModuleKind.CommonJS;
5239        /**
5240         * Controls how module-y-ness is set for the given file. Usually the result of calling
5241         * `getSetExternalModuleIndicator` on a valid `CompilerOptions` object. If not present, the default
5242         * check specified by `isFileProbablyExternalModule` will be used to set the field.
5243         */
5244        setExternalModuleIndicator?: (file: SourceFile) => void;
5245    }
5246    export function createSourceFile(fileName: string, sourceText: string, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, setParentNodes?: boolean, scriptKind?: ScriptKind, options?: CompilerOptions): SourceFile;
5247    export function parseIsolatedEntityName(text: string, languageVersion: ScriptTarget): EntityName | undefined;
5248    /**
5249     * Parse json text into SyntaxTree and return node and parse errors if any
5250     * @param fileName
5251     * @param sourceText
5252     */
5253    export function parseJsonText(fileName: string, sourceText: string): JsonSourceFile;
5254    export function isExternalModule(file: SourceFile): boolean;
5255    export function updateSourceFile(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean, option?: CompilerOptions): SourceFile;
5256    export {};
5257}
5258declare namespace ts {
5259    export function parseCommandLine(commandLine: readonly string[], readFile?: (path: string) => string | undefined): ParsedCommandLine;
5260    export type DiagnosticReporter = (diagnostic: Diagnostic) => void;
5261    /**
5262     * Reports config file diagnostics
5263     */
5264    export interface ConfigFileDiagnosticsReporter {
5265        /**
5266         * Reports unrecoverable error when parsing config file
5267         */
5268        onUnRecoverableConfigFileDiagnostic: DiagnosticReporter;
5269    }
5270    /**
5271     * Interface extending ParseConfigHost to support ParseConfigFile that reads config file and reports errors
5272     */
5273    export interface ParseConfigFileHost extends ParseConfigHost, ConfigFileDiagnosticsReporter {
5274        getCurrentDirectory(): string;
5275    }
5276    /**
5277     * Reads the config file, reports errors if any and exits if the config file cannot be found
5278     */
5279    export function getParsedCommandLineOfConfigFile(configFileName: string, optionsToExtend: CompilerOptions | undefined, host: ParseConfigFileHost, extendedConfigCache?: Map<ExtendedConfigCacheEntry>, watchOptionsToExtend?: WatchOptions, extraFileExtensions?: readonly FileExtensionInfo[]): ParsedCommandLine | undefined;
5280    /**
5281     * Read tsconfig.json file
5282     * @param fileName The path to the config file
5283     */
5284    export function readConfigFile(fileName: string, readFile: (path: string) => string | undefined): {
5285        config?: any;
5286        error?: Diagnostic;
5287    };
5288    /**
5289     * Parse the text of the tsconfig.json file
5290     * @param fileName The path to the config file
5291     * @param jsonText The text of the config file
5292     */
5293    export function parseConfigFileTextToJson(fileName: string, jsonText: string): {
5294        config?: any;
5295        error?: Diagnostic;
5296    };
5297    /**
5298     * Read tsconfig.json file
5299     * @param fileName The path to the config file
5300     */
5301    export function readJsonConfigFile(fileName: string, readFile: (path: string) => string | undefined): TsConfigSourceFile;
5302    /**
5303     * Convert the json syntax tree into the json value
5304     */
5305    export function convertToObject(sourceFile: JsonSourceFile, errors: Push<Diagnostic>): any;
5306    /**
5307     * Parse the contents of a config file (tsconfig.json).
5308     * @param json The contents of the config file to parse
5309     * @param host Instance of ParseConfigHost used to enumerate files in folder.
5310     * @param basePath A root directory to resolve relative path entries in the config
5311     *    file to. e.g. outDir
5312     */
5313    export function parseJsonConfigFileContent(json: any, host: ParseConfigHost, basePath: string, existingOptions?: CompilerOptions, configFileName?: string, resolutionStack?: Path[], extraFileExtensions?: readonly FileExtensionInfo[], extendedConfigCache?: Map<ExtendedConfigCacheEntry>, existingWatchOptions?: WatchOptions): ParsedCommandLine;
5314    /**
5315     * Parse the contents of a config file (tsconfig.json).
5316     * @param jsonNode The contents of the config file to parse
5317     * @param host Instance of ParseConfigHost used to enumerate files in folder.
5318     * @param basePath A root directory to resolve relative path entries in the config
5319     *    file to. e.g. outDir
5320     */
5321    export function parseJsonSourceFileConfigFileContent(sourceFile: TsConfigSourceFile, host: ParseConfigHost, basePath: string, existingOptions?: CompilerOptions, configFileName?: string, resolutionStack?: Path[], extraFileExtensions?: readonly FileExtensionInfo[], extendedConfigCache?: Map<ExtendedConfigCacheEntry>, existingWatchOptions?: WatchOptions): ParsedCommandLine;
5322    export interface ParsedTsconfig {
5323        raw: any;
5324        options?: CompilerOptions;
5325        watchOptions?: WatchOptions;
5326        typeAcquisition?: TypeAcquisition;
5327        /**
5328         * Note that the case of the config path has not yet been normalized, as no files have been imported into the project yet
5329         */
5330        extendedConfigPath?: string;
5331    }
5332    export interface ExtendedConfigCacheEntry {
5333        extendedResult: TsConfigSourceFile;
5334        extendedConfig: ParsedTsconfig | undefined;
5335    }
5336    export function convertCompilerOptionsFromJson(jsonOptions: any, basePath: string, configFileName?: string): {
5337        options: CompilerOptions;
5338        errors: Diagnostic[];
5339    };
5340    export function convertTypeAcquisitionFromJson(jsonOptions: any, basePath: string, configFileName?: string): {
5341        options: TypeAcquisition;
5342        errors: Diagnostic[];
5343    };
5344    export {};
5345}
5346declare namespace ts {
5347    export function getEffectiveTypeRoots(options: CompilerOptions, host: GetEffectiveTypeRootsHost): string[] | undefined;
5348    /**
5349     * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown.
5350     * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups
5351     * is assumed to be the same as root directory of the project.
5352     */
5353    export function resolveTypeReferenceDirective(typeReferenceDirectiveName: string, containingFile: string | undefined, options: CompilerOptions, host: ModuleResolutionHost, redirectedReference?: ResolvedProjectReference, cache?: TypeReferenceDirectiveResolutionCache, resolutionMode?: SourceFile["impliedNodeFormat"]): ResolvedTypeReferenceDirectiveWithFailedLookupLocations;
5354    /**
5355     * Given a set of options, returns the set of type directive names
5356     *   that should be included for this program automatically.
5357     * This list could either come from the config file,
5358     *   or from enumerating the types root + initial secondary types lookup location.
5359     * More type directives might appear in the program later as a result of loading actual source files;
5360     *   this list is only the set of defaults that are implicitly included.
5361     */
5362    export function getAutomaticTypeDirectiveNames(options: CompilerOptions, host: ModuleResolutionHost): string[];
5363    export interface TypeReferenceDirectiveResolutionCache extends PerDirectoryResolutionCache<ResolvedTypeReferenceDirectiveWithFailedLookupLocations>, PackageJsonInfoCache {
5364    }
5365    export interface ModeAwareCache<T> {
5366        get(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): T | undefined;
5367        set(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined, value: T): this;
5368        delete(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): this;
5369        has(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): boolean;
5370        forEach(cb: (elem: T, key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined) => void): void;
5371        size(): number;
5372    }
5373    /**
5374     * Cached resolutions per containing directory.
5375     * This assumes that any module id will have the same resolution for sibling files located in the same folder.
5376     */
5377    export interface PerDirectoryResolutionCache<T> {
5378        getOrCreateCacheForDirectory(directoryName: string, redirectedReference?: ResolvedProjectReference): ModeAwareCache<T>;
5379        clear(): void;
5380        /**
5381         *  Updates with the current compilerOptions the cache will operate with.
5382         *  This updates the redirects map as well if needed so module resolutions are cached if they can across the projects
5383         */
5384        update(options: CompilerOptions): void;
5385    }
5386    export interface ModuleResolutionCache extends PerDirectoryResolutionCache<ResolvedModuleWithFailedLookupLocations>, NonRelativeModuleNameResolutionCache, PackageJsonInfoCache {
5387        getPackageJsonInfoCache(): PackageJsonInfoCache;
5388    }
5389    /**
5390     * Stored map from non-relative module name to a table: directory -> result of module lookup in this directory
5391     * We support only non-relative module names because resolution of relative module names is usually more deterministic and thus less expensive.
5392     */
5393    export interface NonRelativeModuleNameResolutionCache extends PackageJsonInfoCache {
5394        getOrCreateCacheForModuleName(nonRelativeModuleName: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined, redirectedReference?: ResolvedProjectReference): PerModuleNameCache;
5395    }
5396    export interface PackageJsonInfoCache {
5397        clear(): void;
5398    }
5399    export interface PerModuleNameCache {
5400        get(directory: string): ResolvedModuleWithFailedLookupLocations | undefined;
5401        set(directory: string, result: ResolvedModuleWithFailedLookupLocations): void;
5402    }
5403    export function createModuleResolutionCache(currentDirectory: string, getCanonicalFileName: (s: string) => string, options?: CompilerOptions): ModuleResolutionCache;
5404    export function createTypeReferenceDirectiveResolutionCache(currentDirectory: string, getCanonicalFileName: (s: string) => string, options?: CompilerOptions, packageJsonInfoCache?: PackageJsonInfoCache): TypeReferenceDirectiveResolutionCache;
5405    export function resolveModuleNameFromCache(moduleName: string, containingFile: string, cache: ModuleResolutionCache, mode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations | undefined;
5406    export function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache, redirectedReference?: ResolvedProjectReference, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations;
5407    export function nodeModuleNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache, redirectedReference?: ResolvedProjectReference): ResolvedModuleWithFailedLookupLocations;
5408    /**
5409     * This will be called on the successfully resolved path from `loadModuleFromFile`.
5410     * (Not needed for `loadModuleFromNodeModules` as that looks up the `package.json` or `oh-package.json5` as part of resolution.)
5411     *
5412     * packageDirectory is the directory of the package itself.
5413     *   For `blah/node_modules/foo/index.d.ts` this is packageDirectory: "foo"
5414     *   For `/node_modules/foo/bar.d.ts` this is packageDirectory: "foo"
5415     *   For `/node_modules/@types/foo/bar/index.d.ts` this is packageDirectory: "@types/foo"
5416     *   For `/node_modules/foo/bar/index.d.ts` this is packageDirectory: "foo"
5417     */
5418    export function parseModuleFromPath(resolved: string, packageManagerType?: string): string | undefined;
5419    export function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: NonRelativeModuleNameResolutionCache, redirectedReference?: ResolvedProjectReference): ResolvedModuleWithFailedLookupLocations;
5420    export {};
5421}
5422declare namespace ts {
5423    function concatenateDecoratorsAndModifiers(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined): readonly ModifierLike[] | undefined;
5424    function isEtsFunctionDecorators(name: string | undefined, options: CompilerOptions): boolean;
5425    function isOhpm(packageManagerType: string | undefined): boolean;
5426    const ohModulesPathPart: string;
5427    function isOHModules(modulePath: string): boolean;
5428    function isOhpmAndOhModules(packageManagerType: string | undefined, modulePath: string): boolean;
5429    function getModulePathPartByPMType(packageManagerType: string | undefined): string;
5430    function getModuleByPMType(packageManagerType: string | undefined): string;
5431    function getPackageJsonByPMType(packageManagerType: string | undefined): string;
5432    function isOHModulesDirectory(dirPath: Path): boolean;
5433    function isTargetModulesDerectory(dirPath: Path): boolean;
5434    function pathContainsOHModules(path: string): boolean;
5435    function choosePathContainsModules(packageManagerType: string | undefined, fileName: string): boolean;
5436    function getTypeExportImportAndConstEnumTransformer(context: TransformationContext): (node: SourceFile) => SourceFile;
5437    /**
5438     * Add 'type' flag to import/export when import/export an type member.
5439     * Replace const enum with number and string literal.
5440     */
5441    function transformTypeExportImportAndConstEnumInTypeScript(context: TransformationContext): (node: SourceFile) => SourceFile;
5442    function hasTsNoCheckOrTsIgnoreFlag(node: SourceFile): boolean;
5443    function createObfTextSingleLineWriter(): EmitTextWriter;
5444}
5445declare namespace ts {
5446    /**
5447     * Visits a Node using the supplied visitor, possibly returning a new Node in its place.
5448     *
5449     * @param node The Node to visit.
5450     * @param visitor The callback used to visit the Node.
5451     * @param test A callback to execute to verify the Node is valid.
5452     * @param lift An optional callback to execute to lift a NodeArray into a valid Node.
5453     */
5454    function visitNode<T extends Node>(node: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T;
5455    /**
5456     * Visits a Node using the supplied visitor, possibly returning a new Node in its place.
5457     *
5458     * @param node The Node to visit.
5459     * @param visitor The callback used to visit the Node.
5460     * @param test A callback to execute to verify the Node is valid.
5461     * @param lift An optional callback to execute to lift a NodeArray into a valid Node.
5462     */
5463    function visitNode<T extends Node>(node: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined;
5464    /**
5465     * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place.
5466     *
5467     * @param nodes The NodeArray to visit.
5468     * @param visitor The callback used to visit a Node.
5469     * @param test A node test to execute for each node.
5470     * @param start An optional value indicating the starting offset at which to start visiting.
5471     * @param count An optional value indicating the maximum number of nodes to visit.
5472     */
5473    function visitNodes<T extends Node>(nodes: NodeArray<T>, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T>;
5474    /**
5475     * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place.
5476     *
5477     * @param nodes The NodeArray to visit.
5478     * @param visitor The callback used to visit a Node.
5479     * @param test A node test to execute for each node.
5480     * @param start An optional value indicating the starting offset at which to start visiting.
5481     * @param count An optional value indicating the maximum number of nodes to visit.
5482     */
5483    function visitNodes<T extends Node>(nodes: NodeArray<T> | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T> | undefined;
5484    /**
5485     * Starts a new lexical environment and visits a statement list, ending the lexical environment
5486     * and merging hoisted declarations upon completion.
5487     */
5488    function visitLexicalEnvironment(statements: NodeArray<Statement>, visitor: Visitor, context: TransformationContext, start?: number, ensureUseStrict?: boolean, nodesVisitor?: NodesVisitor): NodeArray<Statement>;
5489    /**
5490     * Starts a new lexical environment and visits a parameter list, suspending the lexical
5491     * environment upon completion.
5492     */
5493    function visitParameterList(nodes: NodeArray<ParameterDeclaration>, visitor: Visitor, context: TransformationContext, nodesVisitor?: NodesVisitor): NodeArray<ParameterDeclaration>;
5494    function visitParameterList(nodes: NodeArray<ParameterDeclaration> | undefined, visitor: Visitor, context: TransformationContext, nodesVisitor?: NodesVisitor): NodeArray<ParameterDeclaration> | undefined;
5495    /**
5496     * Resumes a suspended lexical environment and visits a function body, ending the lexical
5497     * environment and merging hoisted declarations upon completion.
5498     */
5499    function visitFunctionBody(node: FunctionBody, visitor: Visitor, context: TransformationContext): FunctionBody;
5500    /**
5501     * Resumes a suspended lexical environment and visits a function body, ending the lexical
5502     * environment and merging hoisted declarations upon completion.
5503     */
5504    function visitFunctionBody(node: FunctionBody | undefined, visitor: Visitor, context: TransformationContext): FunctionBody | undefined;
5505    /**
5506     * Resumes a suspended lexical environment and visits a concise body, ending the lexical
5507     * environment and merging hoisted declarations upon completion.
5508     */
5509    function visitFunctionBody(node: ConciseBody, visitor: Visitor, context: TransformationContext): ConciseBody;
5510    /**
5511     * Visits an iteration body, adding any block-scoped variables required by the transformation.
5512     */
5513    function visitIterationBody(body: Statement, visitor: Visitor, context: TransformationContext): Statement;
5514    /**
5515     * Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place.
5516     *
5517     * @param node The Node whose children will be visited.
5518     * @param visitor The callback used to visit each child.
5519     * @param context A lexical environment context for the visitor.
5520     */
5521    function visitEachChild<T extends Node>(node: T, visitor: Visitor, context: TransformationContext): T;
5522    /**
5523     * Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place.
5524     *
5525     * @param node The Node whose children will be visited.
5526     * @param visitor The callback used to visit each child.
5527     * @param context A lexical environment context for the visitor.
5528     */
5529    function visitEachChild<T extends Node>(node: T | undefined, visitor: Visitor, context: TransformationContext, nodesVisitor?: typeof visitNodes, tokenVisitor?: Visitor): T | undefined;
5530}
5531declare namespace ts {
5532    interface SourceMapGeneratorOptions {
5533        extendedDiagnostics?: boolean;
5534    }
5535    function createSourceMapGenerator(host: EmitHost, file: string, sourceRoot: string, sourcesDirectoryPath: string, generatorOptions: SourceMapGeneratorOptions): SourceMapGenerator;
5536}
5537declare namespace ts {
5538    function getTsBuildInfoEmitOutputFilePath(options: CompilerOptions): string | undefined;
5539    function getTsBuildInfoEmitOutputFilePathForLinter(tsBuildInfoPath: string): string;
5540    function getOutputFileNames(commandLine: ParsedCommandLine, inputFileName: string, ignoreCase: boolean): readonly string[];
5541    function createPrinter(printerOptions?: PrinterOptions, handlers?: PrintHandlers): Printer;
5542}
5543declare namespace ts {
5544    export function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean, configName?: string): string | undefined;
5545    export function resolveTripleslashReference(moduleName: string, containingFile: string): string;
5546    export function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost;
5547    export function getPreEmitDiagnostics(program: Program, sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
5548    export interface FormatDiagnosticsHost {
5549        getCurrentDirectory(): string;
5550        getCanonicalFileName(fileName: string): string;
5551        getNewLine(): string;
5552    }
5553    export function formatDiagnostics(diagnostics: readonly Diagnostic[], host: FormatDiagnosticsHost): string;
5554    export function formatDiagnostic(diagnostic: Diagnostic, host: FormatDiagnosticsHost): string;
5555    export function formatDiagnosticsWithColorAndContext(diagnostics: readonly Diagnostic[], host: FormatDiagnosticsHost): string;
5556    export function flattenDiagnosticMessageText(diag: string | DiagnosticMessageChain | undefined, newLine: string, indent?: number): string;
5557    /**
5558     * Calculates the resulting resolution mode for some reference in some file - this is generally the explicitly
5559     * provided resolution mode in the reference, unless one is not present, in which case it is the mode of the containing file.
5560     */
5561    export function getModeForFileReference(ref: FileReference | string, containingFileMode: SourceFile["impliedNodeFormat"]): ModuleKind.CommonJS | ModuleKind.ESNext | undefined;
5562    /**
5563     * Calculates the final resolution mode for an import at some index within a file's imports list. This is generally the explicitly
5564     * 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).
5565     * If you have an actual import node, prefer using getModeForUsageLocation on the reference string node.
5566     * @param file File to fetch the resolution mode within
5567     * @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
5568     */
5569    export function getModeForResolutionAtIndex(file: SourceFile, index: number): ModuleKind.CommonJS | ModuleKind.ESNext | undefined;
5570    /**
5571     * Calculates the final resolution mode for a given module reference node. This is generally the explicitly provided resolution mode, if
5572     * one exists, or the mode of the containing source file. (Excepting import=require, which is always commonjs, and dynamic import, which is always esm).
5573     * Notably, this function always returns `undefined` if the containing file has an `undefined` `impliedNodeFormat` - this field is only set when
5574     * `moduleResolution` is `node16`+.
5575     * @param file The file the import or import-like reference is contained within
5576     * @param usage The module reference string
5577     * @returns The final resolution mode of the import
5578     */
5579    export function getModeForUsageLocation(file: {
5580        impliedNodeFormat?: SourceFile["impliedNodeFormat"];
5581    }, usage: StringLiteralLike): ModuleKind.CommonJS | ModuleKind.ESNext | undefined;
5582    export function getConfigFileParsingDiagnostics(configFileParseResult: ParsedCommandLine): readonly Diagnostic[];
5583    /**
5584     * A function for determining if a given file is esm or cjs format, assuming modern node module resolution rules, as configured by the
5585     * `options` parameter.
5586     *
5587     * @param fileName The normalized absolute path to check the format of (it need not exist on disk)
5588     * @param [packageJsonInfoCache] A cache for package file lookups - it's best to have a cache when this function is called often
5589     * @param host The ModuleResolutionHost which can perform the filesystem lookups for package json data
5590     * @param options The compiler options to perform the analysis under - relevant options are `moduleResolution` and `traceResolution`
5591     * @returns `undefined` if the path has no relevant implied format, `ModuleKind.ESNext` for esm format, and `ModuleKind.CommonJS` for cjs format
5592     */
5593    export function getImpliedNodeFormatForFile(fileName: Path, packageJsonInfoCache: PackageJsonInfoCache | undefined, host: ModuleResolutionHost, options: CompilerOptions): ModuleKind.ESNext | ModuleKind.CommonJS | undefined;
5594    /**
5595     * Create a new 'Program' instance. A Program is an immutable collection of 'SourceFile's and a 'CompilerOptions'
5596     * that represent a compilation unit.
5597     *
5598     * Creating a program proceeds from a set of root files, expanding the set of inputs by following imports and
5599     * triple-slash-reference-path directives transitively. '@types' and triple-slash-reference-types are also pulled in.
5600     *
5601     * @param createProgramOptions - The options for creating a program.
5602     * @returns A 'Program' object.
5603     */
5604    export function createProgram(createProgramOptions: CreateProgramOptions): Program;
5605    /**
5606     * Create a new 'Program' instance. A Program is an immutable collection of 'SourceFile's and a 'CompilerOptions'
5607     * that represent a compilation unit.
5608     *
5609     * Creating a program proceeds from a set of root files, expanding the set of inputs by following imports and
5610     * triple-slash-reference-path directives transitively. '@types' and triple-slash-reference-types are also pulled in.
5611     *
5612     * @param rootNames - A set of root files.
5613     * @param options - The compiler options which should be used.
5614     * @param host - The host interacts with the underlying file system.
5615     * @param oldProgram - Reuses an old program structure.
5616     * @param configFileParsingDiagnostics - error during config file parsing
5617     * @returns A 'Program' object.
5618     */
5619    export function createProgram(rootNames: readonly string[], options: CompilerOptions, host?: CompilerHost, oldProgram?: Program, configFileParsingDiagnostics?: readonly Diagnostic[]): Program;
5620    /** @deprecated */ export interface ResolveProjectReferencePathHost {
5621        fileExists(fileName: string): boolean;
5622    }
5623    /**
5624     * Returns the target config filename of a project reference.
5625     * Note: The file might not exist.
5626     */
5627    export function resolveProjectReferencePath(ref: ProjectReference): ResolvedConfigFileName;
5628    /** @deprecated */ export function resolveProjectReferencePath(host: ResolveProjectReferencePathHost, ref: ProjectReference): ResolvedConfigFileName;
5629    export {};
5630}
5631declare namespace ts {
5632    interface EmitOutput {
5633        outputFiles: OutputFile[];
5634        emitSkipped: boolean;
5635    }
5636    interface OutputFile {
5637        name: string;
5638        writeByteOrderMark: boolean;
5639        text: string;
5640    }
5641}
5642declare namespace ts {
5643    type AffectedFileResult<T> = {
5644        result: T;
5645        affected: SourceFile | Program;
5646    } | undefined;
5647    interface BuilderProgramHost {
5648        /**
5649         * return true if file names are treated with case sensitivity
5650         */
5651        useCaseSensitiveFileNames(): boolean;
5652        /**
5653         * If provided this would be used this hash instead of actual file shape text for detecting changes
5654         */
5655        createHash?: (data: string) => string;
5656        /**
5657         * When emit or emitNextAffectedFile are called without writeFile,
5658         * this callback if present would be used to write files
5659         */
5660        writeFile?: WriteFileCallback;
5661    }
5662    /**
5663     * Builder to manage the program state changes
5664     */
5665    interface BuilderProgram {
5666        /**
5667         * Returns current program
5668         */
5669        getProgram(): Program;
5670        /**
5671         * Get compiler options of the program
5672         */
5673        getCompilerOptions(): CompilerOptions;
5674        /**
5675         * Get the source file in the program with file name
5676         */
5677        getSourceFile(fileName: string): SourceFile | undefined;
5678        /**
5679         * Get a list of files in the program
5680         */
5681        getSourceFiles(): readonly SourceFile[];
5682        /**
5683         * Get the diagnostics for compiler options
5684         */
5685        getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
5686        /**
5687         * Get the diagnostics that dont belong to any file
5688         */
5689        getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
5690        /**
5691         * Get the diagnostics from config file parsing
5692         */
5693        getConfigFileParsingDiagnostics(): readonly Diagnostic[];
5694        /**
5695         * Get the syntax diagnostics, for all source files if source file is not supplied
5696         */
5697        getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
5698        /**
5699         * Get the declaration diagnostics, for all source files if source file is not supplied
5700         */
5701        getDeclarationDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[];
5702        /**
5703         * Get all the dependencies of the file
5704         */
5705        getAllDependencies(sourceFile: SourceFile): readonly string[];
5706        /**
5707         * Gets the semantic diagnostics from the program corresponding to this state of file (if provided) or whole program
5708         * The semantic diagnostics are cached and managed here
5709         * Note that it is assumed that when asked about semantic diagnostics through this API,
5710         * the file has been taken out of affected files so it is safe to use cache or get from program and cache the diagnostics
5711         * In case of SemanticDiagnosticsBuilderProgram if the source file is not provided,
5712         * it will iterate through all the affected files, to ensure that cache stays valid and yet provide a way to get all semantic diagnostics
5713         */
5714        getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
5715        /**
5716         * Emits the JavaScript and declaration files.
5717         * When targetSource file is specified, emits the files corresponding to that source file,
5718         * otherwise for the whole program.
5719         * In case of EmitAndSemanticDiagnosticsBuilderProgram, when targetSourceFile is specified,
5720         * it is assumed that that file is handled from affected file list. If targetSourceFile is not specified,
5721         * it will only emit all the affected files instead of whole program
5722         *
5723         * The first of writeFile if provided, writeFile of BuilderProgramHost if provided, writeFile of compiler host
5724         * in that order would be used to write the files
5725         */
5726        emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult;
5727        /**
5728         * Get the current directory of the program
5729         */
5730        getCurrentDirectory(): string;
5731        isFileUpdateInConstEnumCache?(sourceFile: SourceFile): boolean;
5732        builderProgramForLinter?: EmitAndSemanticDiagnosticsBuilderProgram;
5733    }
5734    /**
5735     * The builder that caches the semantic diagnostics for the program and handles the changed files and affected files
5736     */
5737    interface SemanticDiagnosticsBuilderProgram extends BuilderProgram {
5738        /**
5739         * Gets the semantic diagnostics from the program for the next affected file and caches it
5740         * Returns undefined if the iteration is complete
5741         */
5742        getSemanticDiagnosticsOfNextAffectedFile(cancellationToken?: CancellationToken, ignoreSourceFile?: (sourceFile: SourceFile) => boolean): AffectedFileResult<readonly Diagnostic[]>;
5743    }
5744    /**
5745     * The builder that can handle the changes in program and iterate through changed file to emit the files
5746     * The semantic diagnostics are cached per file and managed by clearing for the changed/affected files
5747     */
5748    interface EmitAndSemanticDiagnosticsBuilderProgram extends SemanticDiagnosticsBuilderProgram {
5749        /**
5750         * Emits the next affected file's emit result (EmitResult and sourceFiles emitted) or returns undefined if iteration is complete
5751         * The first of writeFile if provided, writeFile of BuilderProgramHost if provided, writeFile of compiler host
5752         * in that order would be used to write the files
5753         */
5754        emitNextAffectedFile(writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): AffectedFileResult<EmitResult>;
5755    }
5756    /**
5757     * Create the builder to manage semantic diagnostics and cache them
5758     */
5759    function createSemanticDiagnosticsBuilderProgram(newProgram: Program, host: BuilderProgramHost, oldProgram?: SemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): SemanticDiagnosticsBuilderProgram;
5760    function createSemanticDiagnosticsBuilderProgram(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: SemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): SemanticDiagnosticsBuilderProgram;
5761    /**
5762     * Create the builder that can handle the changes in program and iterate through changed files
5763     * to emit the those files and manage semantic diagnostics cache as well
5764     */
5765    function createEmitAndSemanticDiagnosticsBuilderProgram(newProgram: Program, host: BuilderProgramHost, oldProgram?: EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): EmitAndSemanticDiagnosticsBuilderProgram;
5766    function createEmitAndSemanticDiagnosticsBuilderProgram(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): EmitAndSemanticDiagnosticsBuilderProgram;
5767    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;
5768    /**
5769     * Creates a builder thats just abstraction over program and can be used with watch
5770     */
5771    function createAbstractBuilder(newProgram: Program, host: BuilderProgramHost, oldProgram?: BuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): BuilderProgram;
5772    function createAbstractBuilder(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: BuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): BuilderProgram;
5773}
5774declare namespace ts {
5775    interface ReadBuildProgramHost {
5776        useCaseSensitiveFileNames(): boolean;
5777        getCurrentDirectory(): string;
5778        readFile(fileName: string): string | undefined;
5779        getLastCompiledProgram?(): Program;
5780    }
5781    function readBuilderProgram(compilerOptions: CompilerOptions, host: ReadBuildProgramHost, isForLinter?: boolean): EmitAndSemanticDiagnosticsBuilderProgram | undefined;
5782    function createIncrementalCompilerHost(options: CompilerOptions, system?: System): CompilerHost;
5783    interface IncrementalProgramOptions<T extends BuilderProgram> {
5784        rootNames: readonly string[];
5785        options: CompilerOptions;
5786        configFileParsingDiagnostics?: readonly Diagnostic[];
5787        projectReferences?: readonly ProjectReference[];
5788        host?: CompilerHost;
5789        createProgram?: CreateProgram<T>;
5790    }
5791    function createIncrementalProgram<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>({ rootNames, options, configFileParsingDiagnostics, projectReferences, host, createProgram }: IncrementalProgramOptions<T>): T;
5792    function createIncrementalProgramForArkTs({ rootNames, options, configFileParsingDiagnostics, projectReferences, host }: IncrementalProgramOptions<EmitAndSemanticDiagnosticsBuilderProgram>): EmitAndSemanticDiagnosticsBuilderProgram;
5793    type WatchStatusReporter = (diagnostic: Diagnostic, newLine: string, options: CompilerOptions, errorCount?: number) => void;
5794    /** Create the program with rootNames and options, if they are undefined, oldProgram and new configFile diagnostics create new program */
5795    type CreateProgram<T extends BuilderProgram> = (rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: T, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[] | undefined) => T;
5796    /** Host that has watch functionality used in --watch mode */
5797    interface WatchHost {
5798        /** If provided, called with Diagnostic message that informs about change in watch status */
5799        onWatchStatusChange?(diagnostic: Diagnostic, newLine: string, options: CompilerOptions, errorCount?: number): void;
5800        /** Used to watch changes in source files, missing files needed to update the program or config file */
5801        watchFile(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher;
5802        /** Used to watch resolved module's failed lookup locations, config file specs, type roots where auto type reference directives are added */
5803        watchDirectory(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher;
5804        /** If provided, will be used to set delayed compilation, so that multiple changes in short span are compiled together */
5805        setTimeout?(callback: (...args: any[]) => void, ms: number, ...args: any[]): any;
5806        /** If provided, will be used to reset existing delayed compilation */
5807        clearTimeout?(timeoutId: any): void;
5808    }
5809    interface ProgramHost<T extends BuilderProgram> {
5810        /**
5811         * Used to create the program when need for program creation or recreation detected
5812         */
5813        createProgram: CreateProgram<T>;
5814        useCaseSensitiveFileNames(): boolean;
5815        getNewLine(): string;
5816        getCurrentDirectory(): string;
5817        getDefaultLibFileName(options: CompilerOptions): string;
5818        getDefaultLibLocation?(): string;
5819        createHash?(data: string): string;
5820        /**
5821         * Use to check file presence for source files and
5822         * if resolveModuleNames is not provided (complier is in charge of module resolution) then module files as well
5823         */
5824        fileExists(path: string): boolean;
5825        /**
5826         * Use to read file text for source files and
5827         * if resolveModuleNames is not provided (complier is in charge of module resolution) then module files as well
5828         */
5829        readFile(path: string, encoding?: string): string | undefined;
5830        /** If provided, used for module resolution as well as to handle directory structure */
5831        directoryExists?(path: string): boolean;
5832        /** If provided, used in resolutions as well as handling directory structure */
5833        getDirectories?(path: string): string[];
5834        /** If provided, used to cache and handle directory structure modifications */
5835        readDirectory?(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
5836        /** Symbol links resolution */
5837        realpath?(path: string): string;
5838        /** If provided would be used to write log about compilation */
5839        trace?(s: string): void;
5840        /** If provided is used to get the environment variable */
5841        getEnvironmentVariable?(name: string): string | undefined;
5842        /** If provided, used to resolve the module names, otherwise typescript's default module resolution */
5843        resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[];
5844        /** If provided, used to resolve type reference directives, otherwise typescript's default resolution */
5845        resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[] | readonly FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[];
5846        /** If provided along with custom resolveModuleNames or resolveTypeReferenceDirectives, used to determine if unchanged file path needs to re-resolve modules/type reference directives */
5847        hasInvalidatedResolutions?(filePath: Path): boolean;
5848        /**
5849         * 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
5850         */
5851        getModuleResolutionCache?(): ModuleResolutionCache | undefined;
5852    }
5853    interface WatchCompilerHost<T extends BuilderProgram> extends ProgramHost<T>, WatchHost {
5854        /** Instead of using output d.ts file from project reference, use its source file */
5855        useSourceOfProjectReferenceRedirect?(): boolean;
5856        /** If provided, use this method to get parsed command lines for referenced projects */
5857        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
5858        /** If provided, callback to invoke after every new program creation */
5859        afterProgramCreate?(program: T): void;
5860    }
5861    /**
5862     * Host to create watch with root files and options
5863     */
5864    interface WatchCompilerHostOfFilesAndCompilerOptions<T extends BuilderProgram> extends WatchCompilerHost<T> {
5865        /** root files to use to generate program */
5866        rootFiles: string[];
5867        /** Compiler options */
5868        options: CompilerOptions;
5869        watchOptions?: WatchOptions;
5870        /** Project References */
5871        projectReferences?: readonly ProjectReference[];
5872    }
5873    /**
5874     * Host to create watch with config file
5875     */
5876    interface WatchCompilerHostOfConfigFile<T extends BuilderProgram> extends WatchCompilerHost<T>, ConfigFileDiagnosticsReporter {
5877        /** Name of the config file to compile */
5878        configFileName: string;
5879        /** Options to extend */
5880        optionsToExtend?: CompilerOptions;
5881        watchOptionsToExtend?: WatchOptions;
5882        extraFileExtensions?: readonly FileExtensionInfo[];
5883        /**
5884         * Used to generate source file names from the config file and its include, exclude, files rules
5885         * and also to cache the directory stucture
5886         */
5887        readDirectory(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
5888    }
5889    interface Watch<T> {
5890        /** Synchronize with host and get updated program */
5891        getProgram(): T;
5892        /** Closes the watch */
5893        close(): void;
5894    }
5895    /**
5896     * Creates the watch what generates program using the config file
5897     */
5898    interface WatchOfConfigFile<T> extends Watch<T> {
5899    }
5900    /**
5901     * Creates the watch that generates program using the root files and compiler options
5902     */
5903    interface WatchOfFilesAndCompilerOptions<T> extends Watch<T> {
5904        /** Updates the root files in the program, only if this is not config file compilation */
5905        updateRootFileNames(fileNames: string[]): void;
5906    }
5907    /**
5908     * Create the watch compiler host for either configFile or fileNames and its options
5909     */
5910    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>;
5911    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>;
5912    /**
5913     * Creates the watch from the host for root files and compiler options
5914     */
5915    function createWatchProgram<T extends BuilderProgram>(host: WatchCompilerHostOfFilesAndCompilerOptions<T>): WatchOfFilesAndCompilerOptions<T>;
5916    /**
5917     * Creates the watch from the host for config file
5918     */
5919    function createWatchProgram<T extends BuilderProgram>(host: WatchCompilerHostOfConfigFile<T>): WatchOfConfigFile<T>;
5920}
5921declare namespace ts {
5922    interface BuildOptions {
5923        dry?: boolean;
5924        force?: boolean;
5925        verbose?: boolean;
5926        incremental?: boolean;
5927        assumeChangesOnlyAffectDirectDependencies?: boolean;
5928        traceResolution?: boolean;
5929        [option: string]: CompilerOptionsValue | undefined;
5930    }
5931    type ReportEmitErrorSummary = (errorCount: number, filesInError: (ReportFileInError | undefined)[]) => void;
5932    interface ReportFileInError {
5933        fileName: string;
5934        line: number;
5935    }
5936    interface SolutionBuilderHostBase<T extends BuilderProgram> extends ProgramHost<T> {
5937        createDirectory?(path: string): void;
5938        /**
5939         * Should provide create directory and writeFile if done of invalidatedProjects is not invoked with
5940         * writeFileCallback
5941         */
5942        writeFile?(path: string, data: string, writeByteOrderMark?: boolean): void;
5943        getCustomTransformers?: (project: string) => CustomTransformers | undefined;
5944        getModifiedTime(fileName: string): Date | undefined;
5945        setModifiedTime(fileName: string, date: Date): void;
5946        deleteFile(fileName: string): void;
5947        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
5948        reportDiagnostic: DiagnosticReporter;
5949        reportSolutionBuilderStatus: DiagnosticReporter;
5950        afterProgramEmitAndDiagnostics?(program: T): void;
5951    }
5952    interface SolutionBuilderHost<T extends BuilderProgram> extends SolutionBuilderHostBase<T> {
5953        reportErrorSummary?: ReportEmitErrorSummary;
5954    }
5955    interface SolutionBuilderWithWatchHost<T extends BuilderProgram> extends SolutionBuilderHostBase<T>, WatchHost {
5956    }
5957    interface SolutionBuilder<T extends BuilderProgram> {
5958        build(project?: string, cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, getCustomTransformers?: (project: string) => CustomTransformers): ExitStatus;
5959        clean(project?: string): ExitStatus;
5960        buildReferences(project: string, cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, getCustomTransformers?: (project: string) => CustomTransformers): ExitStatus;
5961        cleanReferences(project?: string): ExitStatus;
5962        getNextInvalidatedProject(cancellationToken?: CancellationToken): InvalidatedProject<T> | undefined;
5963    }
5964    /**
5965     * Create a function that reports watch status by writing to the system and handles the formating of the diagnostic
5966     */
5967    function createBuilderStatusReporter(system: System, pretty?: boolean): DiagnosticReporter;
5968    function createSolutionBuilderHost<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>(system?: System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportSolutionBuilderStatus?: DiagnosticReporter, reportErrorSummary?: ReportEmitErrorSummary): SolutionBuilderHost<T>;
5969    function createSolutionBuilderWithWatchHost<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>(system?: System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportSolutionBuilderStatus?: DiagnosticReporter, reportWatchStatus?: WatchStatusReporter): SolutionBuilderWithWatchHost<T>;
5970    function createSolutionBuilder<T extends BuilderProgram>(host: SolutionBuilderHost<T>, rootNames: readonly string[], defaultOptions: BuildOptions): SolutionBuilder<T>;
5971    function createSolutionBuilderWithWatch<T extends BuilderProgram>(host: SolutionBuilderWithWatchHost<T>, rootNames: readonly string[], defaultOptions: BuildOptions, baseWatchOptions?: WatchOptions): SolutionBuilder<T>;
5972    enum InvalidatedProjectKind {
5973        Build = 0,
5974        UpdateBundle = 1,
5975        UpdateOutputFileStamps = 2
5976    }
5977    interface InvalidatedProjectBase {
5978        readonly kind: InvalidatedProjectKind;
5979        readonly project: ResolvedConfigFileName;
5980        /**
5981         *  To dispose this project and ensure that all the necessary actions are taken and state is updated accordingly
5982         */
5983        done(cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): ExitStatus;
5984        getCompilerOptions(): CompilerOptions;
5985        getCurrentDirectory(): string;
5986    }
5987    interface UpdateOutputFileStampsProject extends InvalidatedProjectBase {
5988        readonly kind: InvalidatedProjectKind.UpdateOutputFileStamps;
5989        updateOutputFileStatmps(): void;
5990    }
5991    interface BuildInvalidedProject<T extends BuilderProgram> extends InvalidatedProjectBase {
5992        readonly kind: InvalidatedProjectKind.Build;
5993        getBuilderProgram(): T | undefined;
5994        getProgram(): Program | undefined;
5995        getSourceFile(fileName: string): SourceFile | undefined;
5996        getSourceFiles(): readonly SourceFile[];
5997        getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
5998        getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
5999        getConfigFileParsingDiagnostics(): readonly Diagnostic[];
6000        getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
6001        getAllDependencies(sourceFile: SourceFile): readonly string[];
6002        getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
6003        getSemanticDiagnosticsOfNextAffectedFile(cancellationToken?: CancellationToken, ignoreSourceFile?: (sourceFile: SourceFile) => boolean): AffectedFileResult<readonly Diagnostic[]>;
6004        emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult | undefined;
6005    }
6006    interface UpdateBundleProject<T extends BuilderProgram> extends InvalidatedProjectBase {
6007        readonly kind: InvalidatedProjectKind.UpdateBundle;
6008        emit(writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): EmitResult | BuildInvalidedProject<T> | undefined;
6009    }
6010    type InvalidatedProject<T extends BuilderProgram> = UpdateOutputFileStampsProject | BuildInvalidedProject<T> | UpdateBundleProject<T>;
6011}
6012declare namespace ts.server {
6013    type ActionSet = "action::set";
6014    type ActionInvalidate = "action::invalidate";
6015    type ActionPackageInstalled = "action::packageInstalled";
6016    type EventTypesRegistry = "event::typesRegistry";
6017    type EventBeginInstallTypes = "event::beginInstallTypes";
6018    type EventEndInstallTypes = "event::endInstallTypes";
6019    type EventInitializationFailed = "event::initializationFailed";
6020}
6021declare namespace ts.server {
6022    interface TypingInstallerResponse {
6023        readonly kind: ActionSet | ActionInvalidate | EventTypesRegistry | ActionPackageInstalled | EventBeginInstallTypes | EventEndInstallTypes | EventInitializationFailed;
6024    }
6025    interface TypingInstallerRequestWithProjectName {
6026        readonly projectName: string;
6027    }
6028    interface DiscoverTypings extends TypingInstallerRequestWithProjectName {
6029        readonly fileNames: string[];
6030        readonly projectRootPath: Path;
6031        readonly compilerOptions: CompilerOptions;
6032        readonly watchOptions?: WatchOptions;
6033        readonly typeAcquisition: TypeAcquisition;
6034        readonly unresolvedImports: SortedReadonlyArray<string>;
6035        readonly cachePath?: string;
6036        readonly kind: "discover";
6037    }
6038    interface CloseProject extends TypingInstallerRequestWithProjectName {
6039        readonly kind: "closeProject";
6040    }
6041    interface TypesRegistryRequest {
6042        readonly kind: "typesRegistry";
6043    }
6044    interface InstallPackageRequest extends TypingInstallerRequestWithProjectName {
6045        readonly kind: "installPackage";
6046        readonly fileName: Path;
6047        readonly packageName: string;
6048        readonly projectRootPath: Path;
6049    }
6050    interface PackageInstalledResponse extends ProjectResponse {
6051        readonly kind: ActionPackageInstalled;
6052        readonly success: boolean;
6053        readonly message: string;
6054    }
6055    interface InitializationFailedResponse extends TypingInstallerResponse {
6056        readonly kind: EventInitializationFailed;
6057        readonly message: string;
6058        readonly stack?: string;
6059    }
6060    interface ProjectResponse extends TypingInstallerResponse {
6061        readonly projectName: string;
6062    }
6063    interface InvalidateCachedTypings extends ProjectResponse {
6064        readonly kind: ActionInvalidate;
6065    }
6066    interface InstallTypes extends ProjectResponse {
6067        readonly kind: EventBeginInstallTypes | EventEndInstallTypes;
6068        readonly eventId: number;
6069        readonly typingsInstallerVersion: string;
6070        readonly packagesToInstall: readonly string[];
6071    }
6072    interface BeginInstallTypes extends InstallTypes {
6073        readonly kind: EventBeginInstallTypes;
6074    }
6075    interface EndInstallTypes extends InstallTypes {
6076        readonly kind: EventEndInstallTypes;
6077        readonly installSuccess: boolean;
6078    }
6079    interface SetTypings extends ProjectResponse {
6080        readonly typeAcquisition: TypeAcquisition;
6081        readonly compilerOptions: CompilerOptions;
6082        readonly typings: string[];
6083        readonly unresolvedImports: SortedReadonlyArray<string>;
6084        readonly kind: ActionSet;
6085    }
6086}
6087declare namespace ts {
6088    interface Node {
6089        getSourceFile(): SourceFile;
6090        getChildCount(sourceFile?: SourceFile): number;
6091        getChildAt(index: number, sourceFile?: SourceFile): Node;
6092        getChildren(sourceFile?: SourceFile): Node[];
6093        getStart(sourceFile?: SourceFile, includeJsDocComment?: boolean): number;
6094        getFullStart(): number;
6095        getEnd(): number;
6096        getWidth(sourceFile?: SourceFileLike): number;
6097        getFullWidth(): number;
6098        getLeadingTriviaWidth(sourceFile?: SourceFile): number;
6099        getFullText(sourceFile?: SourceFile): string;
6100        getText(sourceFile?: SourceFile): string;
6101        getFirstToken(sourceFile?: SourceFile): Node | undefined;
6102        getLastToken(sourceFile?: SourceFile): Node | undefined;
6103        forEachChild<T>(cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray<Node>) => T | undefined): T | undefined;
6104    }
6105    interface Identifier {
6106        readonly text: string;
6107    }
6108    interface PrivateIdentifier {
6109        readonly text: string;
6110    }
6111    interface Symbol {
6112        readonly name: string;
6113        getFlags(): SymbolFlags;
6114        getEscapedName(): __String;
6115        getName(): string;
6116        getDeclarations(): Declaration[] | undefined;
6117        getDocumentationComment(typeChecker: TypeChecker | undefined): SymbolDisplayPart[];
6118        getJsDocTags(checker?: TypeChecker): JSDocTagInfo[];
6119    }
6120    interface Type {
6121        getFlags(): TypeFlags;
6122        getSymbol(): Symbol | undefined;
6123        getProperties(): Symbol[];
6124        getProperty(propertyName: string): Symbol | undefined;
6125        getApparentProperties(): Symbol[];
6126        getCallSignatures(): readonly Signature[];
6127        getConstructSignatures(): readonly Signature[];
6128        getStringIndexType(): Type | undefined;
6129        getNumberIndexType(): Type | undefined;
6130        getBaseTypes(): BaseType[] | undefined;
6131        getNonNullableType(): Type;
6132        getConstraint(): Type | undefined;
6133        getDefault(): Type | undefined;
6134        isUnion(): this is UnionType;
6135        isIntersection(): this is IntersectionType;
6136        isUnionOrIntersection(): this is UnionOrIntersectionType;
6137        isLiteral(): this is LiteralType;
6138        isStringLiteral(): this is StringLiteralType;
6139        isNumberLiteral(): this is NumberLiteralType;
6140        isTypeParameter(): this is TypeParameter;
6141        isClassOrInterface(): this is InterfaceType;
6142        isClass(): this is InterfaceType;
6143        isIndexType(): this is IndexType;
6144    }
6145    interface TypeReference {
6146        typeArguments?: readonly Type[];
6147    }
6148    interface Signature {
6149        getDeclaration(): SignatureDeclaration;
6150        getTypeParameters(): TypeParameter[] | undefined;
6151        getParameters(): Symbol[];
6152        getTypeParameterAtPosition(pos: number): Type;
6153        getReturnType(): Type;
6154        getDocumentationComment(typeChecker: TypeChecker | undefined): SymbolDisplayPart[];
6155        getJsDocTags(): JSDocTagInfo[];
6156    }
6157    interface SourceFile {
6158        getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
6159        getLineEndOfPosition(pos: number): number;
6160        getLineStarts(): readonly number[];
6161        getPositionOfLineAndCharacter(line: number, character: number): number;
6162        update(newText: string, textChangeRange: TextChangeRange): SourceFile;
6163    }
6164    interface SourceFileLike {
6165        getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
6166    }
6167    interface SourceMapSource {
6168        getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
6169    }
6170    /**
6171     * Represents an immutable snapshot of a script at a specified time.Once acquired, the
6172     * snapshot is observably immutable. i.e. the same calls with the same parameters will return
6173     * the same values.
6174     */
6175    interface IScriptSnapshot {
6176        /** Gets a portion of the script snapshot specified by [start, end). */
6177        getText(start: number, end: number): string;
6178        /** Gets the length of this script snapshot. */
6179        getLength(): number;
6180        /**
6181         * Gets the TextChangeRange that describe how the text changed between this text and
6182         * an older version.  This information is used by the incremental parser to determine
6183         * what sections of the script need to be re-parsed.  'undefined' can be returned if the
6184         * change range cannot be determined.  However, in that case, incremental parsing will
6185         * not happen and the entire document will be re - parsed.
6186         */
6187        getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange | undefined;
6188        /** Releases all resources held by this script snapshot */
6189        dispose?(): void;
6190    }
6191    namespace ScriptSnapshot {
6192        function fromString(text: string): IScriptSnapshot;
6193    }
6194    interface PreProcessedFileInfo {
6195        referencedFiles: FileReference[];
6196        typeReferenceDirectives: FileReference[];
6197        libReferenceDirectives: FileReference[];
6198        importedFiles: FileReference[];
6199        ambientExternalModules?: string[];
6200        isLibFile: boolean;
6201    }
6202    interface HostCancellationToken {
6203        isCancellationRequested(): boolean;
6204    }
6205    interface InstallPackageOptions {
6206        fileName: Path;
6207        packageName: string;
6208    }
6209    interface PerformanceEvent {
6210        kind: "UpdateGraph" | "CreatePackageJsonAutoImportProvider";
6211        durationMs: number;
6212    }
6213    enum LanguageServiceMode {
6214        Semantic = 0,
6215        PartialSemantic = 1,
6216        Syntactic = 2
6217    }
6218    interface IncompleteCompletionsCache {
6219        get(): CompletionInfo | undefined;
6220        set(response: CompletionInfo): void;
6221        clear(): void;
6222    }
6223    interface LanguageServiceHost extends GetEffectiveTypeRootsHost, MinimalResolutionCacheHost {
6224        getCompilationSettings(): CompilerOptions;
6225        getNewLine?(): string;
6226        getProjectVersion?(): string;
6227        getScriptFileNames(): string[];
6228        getScriptKind?(fileName: string): ScriptKind;
6229        getScriptVersion(fileName: string): string;
6230        getScriptSnapshot(fileName: string): IScriptSnapshot | undefined;
6231        getProjectReferences?(): readonly ProjectReference[] | undefined;
6232        getLocalizedDiagnosticMessages?(): any;
6233        getCancellationToken?(): HostCancellationToken;
6234        getCurrentDirectory(): string;
6235        getDefaultLibFileName(options: CompilerOptions): string;
6236        log?(s: string): void;
6237        trace?(s: string): void;
6238        error?(s: string): void;
6239        useCaseSensitiveFileNames?(): boolean;
6240        readDirectory?(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
6241        realpath?(path: string): string;
6242        readFile(path: string, encoding?: string): string | undefined;
6243        fileExists(path: string): boolean;
6244        getTypeRootsVersion?(): number;
6245        resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[];
6246        getResolvedModuleWithFailedLookupLocationsFromCache?(modulename: string, containingFile: string, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations | undefined;
6247        resolveTypeReferenceDirectives?(typeDirectiveNames: string[] | FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[];
6248        getDirectories?(directoryName: string): string[];
6249        /**
6250         * Gets a set of custom transformers to use during emit.
6251         */
6252        getCustomTransformers?(): CustomTransformers | undefined;
6253        isKnownTypesPackageName?(name: string): boolean;
6254        installPackage?(options: InstallPackageOptions): Promise<ApplyCodeActionCommandResult>;
6255        writeFile?(fileName: string, content: string): void;
6256        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
6257        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
6258        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
6259        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
6260        shouldCompletionSortCustom?: boolean;
6261        uiProps?: string[];
6262        clearProps?(): void;
6263    }
6264    type WithMetadata<T> = T & {
6265        metadata?: unknown;
6266    };
6267    enum SemanticClassificationFormat {
6268        Original = "original",
6269        TwentyTwenty = "2020"
6270    }
6271    interface LanguageService {
6272        /** This is used as a part of restarting the language service. */
6273        cleanupSemanticCache(): void;
6274        /**
6275         * Gets errors indicating invalid syntax in a file.
6276         *
6277         * In English, "this cdeo have, erorrs" is syntactically invalid because it has typos,
6278         * grammatical errors, and misplaced punctuation. Likewise, examples of syntax
6279         * errors in TypeScript are missing parentheses in an `if` statement, mismatched
6280         * curly braces, and using a reserved keyword as a variable name.
6281         *
6282         * These diagnostics are inexpensive to compute and don't require knowledge of
6283         * other files. Note that a non-empty result increases the likelihood of false positives
6284         * from `getSemanticDiagnostics`.
6285         *
6286         * While these represent the majority of syntax-related diagnostics, there are some
6287         * that require the type system, which will be present in `getSemanticDiagnostics`.
6288         *
6289         * @param fileName A path to the file you want syntactic diagnostics for
6290         */
6291        getSyntacticDiagnostics(fileName: string): DiagnosticWithLocation[];
6292        /**
6293         * Gets warnings or errors indicating type system issues in a given file.
6294         * Requesting semantic diagnostics may start up the type system and
6295         * run deferred work, so the first call may take longer than subsequent calls.
6296         *
6297         * Unlike the other get*Diagnostics functions, these diagnostics can potentially not
6298         * include a reference to a source file. Specifically, the first time this is called,
6299         * it will return global diagnostics with no associated location.
6300         *
6301         * To contrast the differences between semantic and syntactic diagnostics, consider the
6302         * sentence: "The sun is green." is syntactically correct; those are real English words with
6303         * correct sentence structure. However, it is semantically invalid, because it is not true.
6304         *
6305         * @param fileName A path to the file you want semantic diagnostics for
6306         */
6307        getSemanticDiagnostics(fileName: string): Diagnostic[];
6308        /**
6309         * Gets suggestion diagnostics for a specific file. These diagnostics tend to
6310         * proactively suggest refactors, as opposed to diagnostics that indicate
6311         * potentially incorrect runtime behavior.
6312         *
6313         * @param fileName A path to the file you want semantic diagnostics for
6314         */
6315        getSuggestionDiagnostics(fileName: string): DiagnosticWithLocation[];
6316        /**
6317         * Gets global diagnostics related to the program configuration and compiler options.
6318         */
6319        getCompilerOptionsDiagnostics(): Diagnostic[];
6320        /** @deprecated Use getEncodedSyntacticClassifications instead. */
6321        getSyntacticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[];
6322        getSyntacticClassifications(fileName: string, span: TextSpan, format: SemanticClassificationFormat): ClassifiedSpan[] | ClassifiedSpan2020[];
6323        /** @deprecated Use getEncodedSemanticClassifications instead. */
6324        getSemanticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[];
6325        getSemanticClassifications(fileName: string, span: TextSpan, format: SemanticClassificationFormat): ClassifiedSpan[] | ClassifiedSpan2020[];
6326        /** Encoded as triples of [start, length, ClassificationType]. */
6327        getEncodedSyntacticClassifications(fileName: string, span: TextSpan): Classifications;
6328        /**
6329         * Gets semantic highlights information for a particular file. Has two formats, an older
6330         * version used by VS and a format used by VS Code.
6331         *
6332         * @param fileName The path to the file
6333         * @param position A text span to return results within
6334         * @param format Which format to use, defaults to "original"
6335         * @returns a number array encoded as triples of [start, length, ClassificationType, ...].
6336         */
6337        getEncodedSemanticClassifications(fileName: string, span: TextSpan, format?: SemanticClassificationFormat): Classifications;
6338        /**
6339         * Gets completion entries at a particular position in a file.
6340         *
6341         * @param fileName The path to the file
6342         * @param position A zero-based index of the character where you want the entries
6343         * @param options An object describing how the request was triggered and what kinds
6344         * of code actions can be returned with the completions.
6345         * @param formattingSettings settings needed for calling formatting functions.
6346         */
6347        getCompletionsAtPosition(fileName: string, position: number, options: GetCompletionsAtPositionOptions | undefined, formattingSettings?: FormatCodeSettings): WithMetadata<CompletionInfo> | undefined;
6348        /**
6349         * Gets the extended details for a completion entry retrieved from `getCompletionsAtPosition`.
6350         *
6351         * @param fileName The path to the file
6352         * @param position A zero based index of the character where you want the entries
6353         * @param entryName The `name` from an existing completion which came from `getCompletionsAtPosition`
6354         * @param formatOptions How should code samples in the completions be formatted, can be undefined for backwards compatibility
6355         * @param source `source` property from the completion entry
6356         * @param preferences User settings, can be undefined for backwards compatibility
6357         * @param data `data` property from the completion entry
6358         */
6359        getCompletionEntryDetails(fileName: string, position: number, entryName: string, formatOptions: FormatCodeOptions | FormatCodeSettings | undefined, source: string | undefined, preferences: UserPreferences | undefined, data: CompletionEntryData | undefined): CompletionEntryDetails | undefined;
6360        getCompletionEntrySymbol(fileName: string, position: number, name: string, source: string | undefined): Symbol | undefined;
6361        /**
6362         * Gets semantic information about the identifier at a particular position in a
6363         * file. Quick info is what you typically see when you hover in an editor.
6364         *
6365         * @param fileName The path to the file
6366         * @param position A zero-based index of the character where you want the quick info
6367         */
6368        getQuickInfoAtPosition(fileName: string, position: number): QuickInfo | undefined;
6369        getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): TextSpan | undefined;
6370        getBreakpointStatementAtPosition(fileName: string, position: number): TextSpan | undefined;
6371        getSignatureHelpItems(fileName: string, position: number, options: SignatureHelpItemsOptions | undefined): SignatureHelpItems | undefined;
6372        getRenameInfo(fileName: string, position: number, preferences: UserPreferences): RenameInfo;
6373        /** @deprecated Use the signature with `UserPreferences` instead. */
6374        getRenameInfo(fileName: string, position: number, options?: RenameInfoOptions): RenameInfo;
6375        findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean, providePrefixAndSuffixTextForRename?: boolean): readonly RenameLocation[] | undefined;
6376        getSmartSelectionRange(fileName: string, position: number): SelectionRange;
6377        getDefinitionAtPosition(fileName: string, position: number): readonly DefinitionInfo[] | undefined;
6378        getDefinitionAndBoundSpan(fileName: string, position: number): DefinitionInfoAndBoundSpan | undefined;
6379        getTypeDefinitionAtPosition(fileName: string, position: number): readonly DefinitionInfo[] | undefined;
6380        getImplementationAtPosition(fileName: string, position: number): readonly ImplementationLocation[] | undefined;
6381        getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[] | undefined;
6382        findReferences(fileName: string, position: number): ReferencedSymbol[] | undefined;
6383        getDocumentHighlights(fileName: string, position: number, filesToSearch: string[]): DocumentHighlights[] | undefined;
6384        getFileReferences(fileName: string): ReferenceEntry[];
6385        /** @deprecated */
6386        getOccurrencesAtPosition(fileName: string, position: number): readonly ReferenceEntry[] | undefined;
6387        getNavigateToItems(searchValue: string, maxResultCount?: number, fileName?: string, excludeDtsFiles?: boolean): NavigateToItem[];
6388        getNavigationBarItems(fileName: string): NavigationBarItem[];
6389        getNavigationTree(fileName: string): NavigationTree;
6390        prepareCallHierarchy(fileName: string, position: number): CallHierarchyItem | CallHierarchyItem[] | undefined;
6391        provideCallHierarchyIncomingCalls(fileName: string, position: number): CallHierarchyIncomingCall[];
6392        provideCallHierarchyOutgoingCalls(fileName: string, position: number): CallHierarchyOutgoingCall[];
6393        provideInlayHints(fileName: string, span: TextSpan, preferences: UserPreferences | undefined): InlayHint[];
6394        getOutliningSpans(fileName: string): OutliningSpan[];
6395        getTodoComments(fileName: string, descriptors: TodoCommentDescriptor[]): TodoComment[];
6396        getBraceMatchingAtPosition(fileName: string, position: number): TextSpan[];
6397        getIndentationAtPosition(fileName: string, position: number, options: EditorOptions | EditorSettings): number;
6398        getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
6399        getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
6400        getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
6401        getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined;
6402        isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean;
6403        /**
6404         * 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.
6405         * Editors should call this after `>` is typed.
6406         */
6407        getJsxClosingTagAtPosition(fileName: string, position: number): JsxClosingTagInfo | undefined;
6408        getSpanOfEnclosingComment(fileName: string, position: number, onlyMultiLine: boolean): TextSpan | undefined;
6409        toLineColumnOffset?(fileName: string, position: number): LineAndCharacter;
6410        getCodeFixesAtPosition(fileName: string, start: number, end: number, errorCodes: readonly number[], formatOptions: FormatCodeSettings, preferences: UserPreferences): readonly CodeFixAction[];
6411        getCombinedCodeFix(scope: CombinedCodeFixScope, fixId: {}, formatOptions: FormatCodeSettings, preferences: UserPreferences): CombinedCodeActions;
6412        applyCodeActionCommand(action: CodeActionCommand, formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult>;
6413        applyCodeActionCommand(action: CodeActionCommand[], formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult[]>;
6414        applyCodeActionCommand(action: CodeActionCommand | CodeActionCommand[], formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>;
6415        /** @deprecated `fileName` will be ignored */
6416        applyCodeActionCommand(fileName: string, action: CodeActionCommand): Promise<ApplyCodeActionCommandResult>;
6417        /** @deprecated `fileName` will be ignored */
6418        applyCodeActionCommand(fileName: string, action: CodeActionCommand[]): Promise<ApplyCodeActionCommandResult[]>;
6419        /** @deprecated `fileName` will be ignored */
6420        applyCodeActionCommand(fileName: string, action: CodeActionCommand | CodeActionCommand[]): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>;
6421        getApplicableRefactors(fileName: string, positionOrRange: number | TextRange, preferences: UserPreferences | undefined, triggerReason?: RefactorTriggerReason, kind?: string): ApplicableRefactorInfo[];
6422        getEditsForRefactor(fileName: string, formatOptions: FormatCodeSettings, positionOrRange: number | TextRange, refactorName: string, actionName: string, preferences: UserPreferences | undefined): RefactorEditInfo | undefined;
6423        organizeImports(args: OrganizeImportsArgs, formatOptions: FormatCodeSettings, preferences: UserPreferences | undefined): readonly FileTextChanges[];
6424        getEditsForFileRename(oldFilePath: string, newFilePath: string, formatOptions: FormatCodeSettings, preferences: UserPreferences | undefined): readonly FileTextChanges[];
6425        getEmitOutput(fileName: string, emitOnlyDtsFiles?: boolean, forceDtsEmit?: boolean): EmitOutput;
6426        getProgram(): Program | undefined;
6427        getBuilderProgram(): BuilderProgram | undefined;
6428        toggleLineComment(fileName: string, textRange: TextRange): TextChange[];
6429        toggleMultilineComment(fileName: string, textRange: TextRange): TextChange[];
6430        commentSelection(fileName: string, textRange: TextRange): TextChange[];
6431        uncommentSelection(fileName: string, textRange: TextRange): TextChange[];
6432        dispose(): void;
6433        updateRootFiles?(rootFiles: string[]): void;
6434        getProps?(): string[];
6435    }
6436    interface JsxClosingTagInfo {
6437        readonly newText: string;
6438    }
6439    interface CombinedCodeFixScope {
6440        type: "file";
6441        fileName: string;
6442    }
6443    enum OrganizeImportsMode {
6444        All = "All",
6445        SortAndCombine = "SortAndCombine",
6446        RemoveUnused = "RemoveUnused"
6447    }
6448    interface OrganizeImportsArgs extends CombinedCodeFixScope {
6449        /** @deprecated Use `mode` instead */
6450        skipDestructiveCodeActions?: boolean;
6451        mode?: OrganizeImportsMode;
6452    }
6453    type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<" | "#" | " ";
6454    enum CompletionTriggerKind {
6455        /** Completion was triggered by typing an identifier, manual invocation (e.g Ctrl+Space) or via API. */
6456        Invoked = 1,
6457        /** Completion was triggered by a trigger character. */
6458        TriggerCharacter = 2,
6459        /** Completion was re-triggered as the current completion list is incomplete. */
6460        TriggerForIncompleteCompletions = 3
6461    }
6462    interface GetCompletionsAtPositionOptions extends UserPreferences {
6463        /**
6464         * If the editor is asking for completions because a certain character was typed
6465         * (as opposed to when the user explicitly requested them) this should be set.
6466         */
6467        triggerCharacter?: CompletionsTriggerCharacter;
6468        triggerKind?: CompletionTriggerKind;
6469        /** @deprecated Use includeCompletionsForModuleExports */
6470        includeExternalModuleExports?: boolean;
6471        /** @deprecated Use includeCompletionsWithInsertText */
6472        includeInsertTextCompletions?: boolean;
6473    }
6474    type SignatureHelpTriggerCharacter = "," | "(" | "<";
6475    type SignatureHelpRetriggerCharacter = SignatureHelpTriggerCharacter | ")";
6476    interface SignatureHelpItemsOptions {
6477        triggerReason?: SignatureHelpTriggerReason;
6478    }
6479    type SignatureHelpTriggerReason = SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason | SignatureHelpRetriggeredReason;
6480    /**
6481     * Signals that the user manually requested signature help.
6482     * The language service will unconditionally attempt to provide a result.
6483     */
6484    interface SignatureHelpInvokedReason {
6485        kind: "invoked";
6486        triggerCharacter?: undefined;
6487    }
6488    /**
6489     * Signals that the signature help request came from a user typing a character.
6490     * Depending on the character and the syntactic context, the request may or may not be served a result.
6491     */
6492    interface SignatureHelpCharacterTypedReason {
6493        kind: "characterTyped";
6494        /**
6495         * Character that was responsible for triggering signature help.
6496         */
6497        triggerCharacter: SignatureHelpTriggerCharacter;
6498    }
6499    /**
6500     * Signals that this signature help request came from typing a character or moving the cursor.
6501     * This should only occur if a signature help session was already active and the editor needs to see if it should adjust.
6502     * The language service will unconditionally attempt to provide a result.
6503     * `triggerCharacter` can be `undefined` for a retrigger caused by a cursor move.
6504     */
6505    interface SignatureHelpRetriggeredReason {
6506        kind: "retrigger";
6507        /**
6508         * Character that was responsible for triggering signature help.
6509         */
6510        triggerCharacter?: SignatureHelpRetriggerCharacter;
6511    }
6512    interface ApplyCodeActionCommandResult {
6513        successMessage: string;
6514    }
6515    interface Classifications {
6516        spans: number[];
6517        endOfLineState: EndOfLineState;
6518    }
6519    interface ClassifiedSpan {
6520        textSpan: TextSpan;
6521        classificationType: ClassificationTypeNames;
6522    }
6523    interface ClassifiedSpan2020 {
6524        textSpan: TextSpan;
6525        classificationType: number;
6526    }
6527    /**
6528     * Navigation bar interface designed for visual studio's dual-column layout.
6529     * This does not form a proper tree.
6530     * The navbar is returned as a list of top-level items, each of which has a list of child items.
6531     * Child items always have an empty array for their `childItems`.
6532     */
6533    interface NavigationBarItem {
6534        text: string;
6535        kind: ScriptElementKind;
6536        kindModifiers: string;
6537        spans: TextSpan[];
6538        childItems: NavigationBarItem[];
6539        indent: number;
6540        bolded: boolean;
6541        grayed: boolean;
6542    }
6543    /**
6544     * Node in a tree of nested declarations in a file.
6545     * The top node is always a script or module node.
6546     */
6547    interface NavigationTree {
6548        /** Name of the declaration, or a short description, e.g. "<class>". */
6549        text: string;
6550        kind: ScriptElementKind;
6551        /** ScriptElementKindModifier separated by commas, e.g. "public,abstract" */
6552        kindModifiers: string;
6553        /**
6554         * Spans of the nodes that generated this declaration.
6555         * There will be more than one if this is the result of merging.
6556         */
6557        spans: TextSpan[];
6558        nameSpan: TextSpan | undefined;
6559        /** Present if non-empty */
6560        childItems?: NavigationTree[];
6561    }
6562    interface CallHierarchyItem {
6563        name: string;
6564        kind: ScriptElementKind;
6565        kindModifiers?: string;
6566        file: string;
6567        span: TextSpan;
6568        selectionSpan: TextSpan;
6569        containerName?: string;
6570    }
6571    interface CallHierarchyIncomingCall {
6572        from: CallHierarchyItem;
6573        fromSpans: TextSpan[];
6574    }
6575    interface CallHierarchyOutgoingCall {
6576        to: CallHierarchyItem;
6577        fromSpans: TextSpan[];
6578    }
6579    enum InlayHintKind {
6580        Type = "Type",
6581        Parameter = "Parameter",
6582        Enum = "Enum"
6583    }
6584    interface InlayHint {
6585        text: string;
6586        position: number;
6587        kind: InlayHintKind;
6588        whitespaceBefore?: boolean;
6589        whitespaceAfter?: boolean;
6590    }
6591    interface TodoCommentDescriptor {
6592        text: string;
6593        priority: number;
6594    }
6595    interface TodoComment {
6596        descriptor: TodoCommentDescriptor;
6597        message: string;
6598        position: number;
6599    }
6600    interface TextChange {
6601        span: TextSpan;
6602        newText: string;
6603    }
6604    interface FileTextChanges {
6605        fileName: string;
6606        textChanges: readonly TextChange[];
6607        isNewFile?: boolean;
6608    }
6609    interface CodeAction {
6610        /** Description of the code action to display in the UI of the editor */
6611        description: string;
6612        /** Text changes to apply to each file as part of the code action */
6613        changes: FileTextChanges[];
6614        /**
6615         * If the user accepts the code fix, the editor should send the action back in a `applyAction` request.
6616         * This allows the language service to have side effects (e.g. installing dependencies) upon a code fix.
6617         */
6618        commands?: CodeActionCommand[];
6619    }
6620    interface CodeFixAction extends CodeAction {
6621        /** Short name to identify the fix, for use by telemetry. */
6622        fixName: string;
6623        /**
6624         * If present, one may call 'getCombinedCodeFix' with this fixId.
6625         * This may be omitted to indicate that the code fix can't be applied in a group.
6626         */
6627        fixId?: {};
6628        fixAllDescription?: string;
6629    }
6630    interface CombinedCodeActions {
6631        changes: readonly FileTextChanges[];
6632        commands?: readonly CodeActionCommand[];
6633    }
6634    type CodeActionCommand = InstallPackageAction;
6635    interface InstallPackageAction {
6636    }
6637    /**
6638     * A set of one or more available refactoring actions, grouped under a parent refactoring.
6639     */
6640    interface ApplicableRefactorInfo {
6641        /**
6642         * The programmatic name of the refactoring
6643         */
6644        name: string;
6645        /**
6646         * A description of this refactoring category to show to the user.
6647         * If the refactoring gets inlined (see below), this text will not be visible.
6648         */
6649        description: string;
6650        /**
6651         * Inlineable refactorings can have their actions hoisted out to the top level
6652         * of a context menu. Non-inlineanable refactorings should always be shown inside
6653         * their parent grouping.
6654         *
6655         * If not specified, this value is assumed to be 'true'
6656         */
6657        inlineable?: boolean;
6658        actions: RefactorActionInfo[];
6659    }
6660    /**
6661     * Represents a single refactoring action - for example, the "Extract Method..." refactor might
6662     * offer several actions, each corresponding to a surround class or closure to extract into.
6663     */
6664    interface RefactorActionInfo {
6665        /**
6666         * The programmatic name of the refactoring action
6667         */
6668        name: string;
6669        /**
6670         * A description of this refactoring action to show to the user.
6671         * If the parent refactoring is inlined away, this will be the only text shown,
6672         * so this description should make sense by itself if the parent is inlineable=true
6673         */
6674        description: string;
6675        /**
6676         * A message to show to the user if the refactoring cannot be applied in
6677         * the current context.
6678         */
6679        notApplicableReason?: string;
6680        /**
6681         * The hierarchical dotted name of the refactor action.
6682         */
6683        kind?: string;
6684    }
6685    /**
6686     * A set of edits to make in response to a refactor action, plus an optional
6687     * location where renaming should be invoked from
6688     */
6689    interface RefactorEditInfo {
6690        edits: FileTextChanges[];
6691        renameFilename?: string;
6692        renameLocation?: number;
6693        commands?: CodeActionCommand[];
6694    }
6695    type RefactorTriggerReason = "implicit" | "invoked";
6696    interface TextInsertion {
6697        newText: string;
6698        /** The position in newText the caret should point to after the insertion. */
6699        caretOffset: number;
6700    }
6701    interface DocumentSpan {
6702        textSpan: TextSpan;
6703        fileName: string;
6704        /**
6705         * If the span represents a location that was remapped (e.g. via a .d.ts.map file),
6706         * then the original filename and span will be specified here
6707         */
6708        originalTextSpan?: TextSpan;
6709        originalFileName?: string;
6710        /**
6711         * If DocumentSpan.textSpan is the span for name of the declaration,
6712         * then this is the span for relevant declaration
6713         */
6714        contextSpan?: TextSpan;
6715        originalContextSpan?: TextSpan;
6716    }
6717    interface RenameLocation extends DocumentSpan {
6718        readonly prefixText?: string;
6719        readonly suffixText?: string;
6720    }
6721    interface ReferenceEntry extends DocumentSpan {
6722        isWriteAccess: boolean;
6723        isInString?: true;
6724    }
6725    interface ImplementationLocation extends DocumentSpan {
6726        kind: ScriptElementKind;
6727        displayParts: SymbolDisplayPart[];
6728    }
6729    enum HighlightSpanKind {
6730        none = "none",
6731        definition = "definition",
6732        reference = "reference",
6733        writtenReference = "writtenReference"
6734    }
6735    interface HighlightSpan {
6736        fileName?: string;
6737        isInString?: true;
6738        textSpan: TextSpan;
6739        contextSpan?: TextSpan;
6740        kind: HighlightSpanKind;
6741    }
6742    interface NavigateToItem {
6743        name: string;
6744        kind: ScriptElementKind;
6745        kindModifiers: string;
6746        matchKind: "exact" | "prefix" | "substring" | "camelCase";
6747        isCaseSensitive: boolean;
6748        fileName: string;
6749        textSpan: TextSpan;
6750        containerName: string;
6751        containerKind: ScriptElementKind;
6752    }
6753    enum IndentStyle {
6754        None = 0,
6755        Block = 1,
6756        Smart = 2
6757    }
6758    enum SemicolonPreference {
6759        Ignore = "ignore",
6760        Insert = "insert",
6761        Remove = "remove"
6762    }
6763    /** @deprecated - consider using EditorSettings instead */
6764    interface EditorOptions {
6765        BaseIndentSize?: number;
6766        IndentSize: number;
6767        TabSize: number;
6768        NewLineCharacter: string;
6769        ConvertTabsToSpaces: boolean;
6770        IndentStyle: IndentStyle;
6771    }
6772    interface EditorSettings {
6773        baseIndentSize?: number;
6774        indentSize?: number;
6775        tabSize?: number;
6776        newLineCharacter?: string;
6777        convertTabsToSpaces?: boolean;
6778        indentStyle?: IndentStyle;
6779        trimTrailingWhitespace?: boolean;
6780    }
6781    /** @deprecated - consider using FormatCodeSettings instead */
6782    interface FormatCodeOptions extends EditorOptions {
6783        InsertSpaceAfterCommaDelimiter: boolean;
6784        InsertSpaceAfterSemicolonInForStatements: boolean;
6785        InsertSpaceBeforeAndAfterBinaryOperators: boolean;
6786        InsertSpaceAfterConstructor?: boolean;
6787        InsertSpaceAfterKeywordsInControlFlowStatements: boolean;
6788        InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean;
6789        InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean;
6790        InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean;
6791        InsertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
6792        InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean;
6793        InsertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
6794        InsertSpaceAfterTypeAssertion?: boolean;
6795        InsertSpaceBeforeFunctionParenthesis?: boolean;
6796        PlaceOpenBraceOnNewLineForFunctions: boolean;
6797        PlaceOpenBraceOnNewLineForControlBlocks: boolean;
6798        insertSpaceBeforeTypeAnnotation?: boolean;
6799    }
6800    interface FormatCodeSettings extends EditorSettings {
6801        readonly insertSpaceAfterCommaDelimiter?: boolean;
6802        readonly insertSpaceAfterSemicolonInForStatements?: boolean;
6803        readonly insertSpaceBeforeAndAfterBinaryOperators?: boolean;
6804        readonly insertSpaceAfterConstructor?: boolean;
6805        readonly insertSpaceAfterKeywordsInControlFlowStatements?: boolean;
6806        readonly insertSpaceAfterFunctionKeywordForAnonymousFunctions?: boolean;
6807        readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean;
6808        readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?: boolean;
6809        readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
6810        readonly insertSpaceAfterOpeningAndBeforeClosingEmptyBraces?: boolean;
6811        readonly insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?: boolean;
6812        readonly insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
6813        readonly insertSpaceAfterTypeAssertion?: boolean;
6814        readonly insertSpaceBeforeFunctionParenthesis?: boolean;
6815        readonly placeOpenBraceOnNewLineForFunctions?: boolean;
6816        readonly placeOpenBraceOnNewLineForControlBlocks?: boolean;
6817        readonly insertSpaceBeforeTypeAnnotation?: boolean;
6818        readonly indentMultiLineObjectLiteralBeginningOnBlankLine?: boolean;
6819        readonly semicolons?: SemicolonPreference;
6820    }
6821    function getDefaultFormatCodeSettings(newLineCharacter?: string): FormatCodeSettings;
6822    interface DefinitionInfo extends DocumentSpan {
6823        kind: ScriptElementKind;
6824        name: string;
6825        containerKind: ScriptElementKind;
6826        containerName: string;
6827        unverified?: boolean;
6828    }
6829    interface DefinitionInfoAndBoundSpan {
6830        definitions?: readonly DefinitionInfo[];
6831        textSpan: TextSpan;
6832    }
6833    interface ReferencedSymbolDefinitionInfo extends DefinitionInfo {
6834        displayParts: SymbolDisplayPart[];
6835    }
6836    interface ReferencedSymbol {
6837        definition: ReferencedSymbolDefinitionInfo;
6838        references: ReferencedSymbolEntry[];
6839    }
6840    interface ReferencedSymbolEntry extends ReferenceEntry {
6841        isDefinition?: boolean;
6842    }
6843    enum SymbolDisplayPartKind {
6844        aliasName = 0,
6845        className = 1,
6846        enumName = 2,
6847        fieldName = 3,
6848        interfaceName = 4,
6849        keyword = 5,
6850        lineBreak = 6,
6851        numericLiteral = 7,
6852        stringLiteral = 8,
6853        localName = 9,
6854        methodName = 10,
6855        moduleName = 11,
6856        operator = 12,
6857        parameterName = 13,
6858        propertyName = 14,
6859        punctuation = 15,
6860        space = 16,
6861        text = 17,
6862        typeParameterName = 18,
6863        enumMemberName = 19,
6864        functionName = 20,
6865        regularExpressionLiteral = 21,
6866        link = 22,
6867        linkName = 23,
6868        linkText = 24
6869    }
6870    interface SymbolDisplayPart {
6871        text: string;
6872        kind: string;
6873    }
6874    interface JSDocLinkDisplayPart extends SymbolDisplayPart {
6875        target: DocumentSpan;
6876    }
6877    interface JSDocTagInfo {
6878        name: string;
6879        text?: SymbolDisplayPart[] | string;
6880        index?: number;
6881    }
6882    interface QuickInfo {
6883        kind: ScriptElementKind;
6884        kindModifiers: string;
6885        textSpan: TextSpan;
6886        displayParts?: SymbolDisplayPart[];
6887        documentation?: SymbolDisplayPart[];
6888        tags?: JSDocTagInfo[];
6889    }
6890    type RenameInfo = RenameInfoSuccess | RenameInfoFailure;
6891    interface RenameInfoSuccess {
6892        canRename: true;
6893        /**
6894         * File or directory to rename.
6895         * If set, `getEditsForFileRename` should be called instead of `findRenameLocations`.
6896         */
6897        fileToRename?: string;
6898        displayName: string;
6899        fullDisplayName: string;
6900        kind: ScriptElementKind;
6901        kindModifiers: string;
6902        triggerSpan: TextSpan;
6903    }
6904    interface RenameInfoFailure {
6905        canRename: false;
6906        localizedErrorMessage: string;
6907    }
6908    /**
6909     * @deprecated Use `UserPreferences` instead.
6910     */
6911    interface RenameInfoOptions {
6912        readonly allowRenameOfImportPath?: boolean;
6913    }
6914    interface DocCommentTemplateOptions {
6915        readonly generateReturnInDocTemplate?: boolean;
6916    }
6917    interface SignatureHelpParameter {
6918        name: string;
6919        documentation: SymbolDisplayPart[];
6920        displayParts: SymbolDisplayPart[];
6921        isOptional: boolean;
6922        isRest?: boolean;
6923    }
6924    interface SelectionRange {
6925        textSpan: TextSpan;
6926        parent?: SelectionRange;
6927    }
6928    /**
6929     * Represents a single signature to show in signature help.
6930     * The id is used for subsequent calls into the language service to ask questions about the
6931     * signature help item in the context of any documents that have been updated.  i.e. after
6932     * an edit has happened, while signature help is still active, the host can ask important
6933     * questions like 'what parameter is the user currently contained within?'.
6934     */
6935    interface SignatureHelpItem {
6936        isVariadic: boolean;
6937        prefixDisplayParts: SymbolDisplayPart[];
6938        suffixDisplayParts: SymbolDisplayPart[];
6939        separatorDisplayParts: SymbolDisplayPart[];
6940        parameters: SignatureHelpParameter[];
6941        documentation: SymbolDisplayPart[];
6942        tags: JSDocTagInfo[];
6943    }
6944    /**
6945     * Represents a set of signature help items, and the preferred item that should be selected.
6946     */
6947    interface SignatureHelpItems {
6948        items: SignatureHelpItem[];
6949        applicableSpan: TextSpan;
6950        selectedItemIndex: number;
6951        argumentIndex: number;
6952        argumentCount: number;
6953    }
6954    enum CompletionInfoFlags {
6955        None = 0,
6956        MayIncludeAutoImports = 1,
6957        IsImportStatementCompletion = 2,
6958        IsContinuation = 4,
6959        ResolvedModuleSpecifiers = 8,
6960        ResolvedModuleSpecifiersBeyondLimit = 16,
6961        MayIncludeMethodSnippets = 32
6962    }
6963    interface CompletionInfo {
6964        /** For performance telemetry. */
6965        flags?: CompletionInfoFlags;
6966        /** Not true for all global completions. This will be true if the enclosing scope matches a few syntax kinds. See `isSnippetScope`. */
6967        isGlobalCompletion: boolean;
6968        isMemberCompletion: boolean;
6969        /**
6970         * In the absence of `CompletionEntry["replacementSpan"]`, the editor may choose whether to use
6971         * this span or its default one. If `CompletionEntry["replacementSpan"]` is defined, that span
6972         * must be used to commit that completion entry.
6973         */
6974        optionalReplacementSpan?: TextSpan;
6975        /**
6976         * true when the current location also allows for a new identifier
6977         */
6978        isNewIdentifierLocation: boolean;
6979        /**
6980         * Indicates to client to continue requesting completions on subsequent keystrokes.
6981         */
6982        isIncomplete?: true;
6983        entries: CompletionEntry[];
6984    }
6985    interface CompletionEntryDataAutoImport {
6986        /**
6987         * The name of the property or export in the module's symbol table. Differs from the completion name
6988         * in the case of InternalSymbolName.ExportEquals and InternalSymbolName.Default.
6989         */
6990        exportName: string;
6991        moduleSpecifier?: string;
6992        /** The file name declaring the export's module symbol, if it was an external module */
6993        fileName?: string;
6994        /** The module name (with quotes stripped) of the export's module symbol, if it was an ambient module */
6995        ambientModuleName?: string;
6996        /** True if the export was found in the package.json AutoImportProvider */
6997        isPackageJsonImport?: true;
6998    }
6999    interface CompletionEntryDataUnresolved extends CompletionEntryDataAutoImport {
7000        /** The key in the `ExportMapCache` where the completion entry's `SymbolExportInfo[]` is found */
7001        exportMapKey: string;
7002    }
7003    interface CompletionEntryDataResolved extends CompletionEntryDataAutoImport {
7004        moduleSpecifier: string;
7005    }
7006    type CompletionEntryData = CompletionEntryDataUnresolved | CompletionEntryDataResolved;
7007    interface CompletionEntry {
7008        name: string;
7009        kind: ScriptElementKind;
7010        kindModifiers?: string;
7011        sortText: string;
7012        insertText?: string;
7013        isSnippet?: true;
7014        /**
7015         * An optional span that indicates the text to be replaced by this completion item.
7016         * If present, this span should be used instead of the default one.
7017         * It will be set if the required span differs from the one generated by the default replacement behavior.
7018         */
7019        replacementSpan?: TextSpan;
7020        hasAction?: true;
7021        source?: string;
7022        sourceDisplay?: SymbolDisplayPart[];
7023        labelDetails?: CompletionEntryLabelDetails;
7024        isRecommended?: true;
7025        isFromUncheckedFile?: true;
7026        isPackageJsonImport?: true;
7027        isImportStatementCompletion?: true;
7028        /**
7029         * A property to be sent back to TS Server in the CompletionDetailsRequest, along with `name`,
7030         * that allows TS Server to look up the symbol represented by the completion item, disambiguating
7031         * items with the same name. Currently only defined for auto-import completions, but the type is
7032         * `unknown` in the protocol, so it can be changed as needed to support other kinds of completions.
7033         * The presence of this property should generally not be used to assume that this completion entry
7034         * is an auto-import.
7035         */
7036        data?: CompletionEntryData;
7037        jsDoc?: JSDocTagInfo[];
7038        displayParts?: SymbolDisplayPart[];
7039    }
7040    interface CompletionEntryLabelDetails {
7041        detail?: string;
7042        description?: string;
7043    }
7044    interface CompletionEntryDetails {
7045        name: string;
7046        kind: ScriptElementKind;
7047        kindModifiers: string;
7048        displayParts: SymbolDisplayPart[];
7049        documentation?: SymbolDisplayPart[];
7050        tags?: JSDocTagInfo[];
7051        codeActions?: CodeAction[];
7052        /** @deprecated Use `sourceDisplay` instead. */
7053        source?: SymbolDisplayPart[];
7054        sourceDisplay?: SymbolDisplayPart[];
7055    }
7056    interface OutliningSpan {
7057        /** The span of the document to actually collapse. */
7058        textSpan: TextSpan;
7059        /** The span of the document to display when the user hovers over the collapsed span. */
7060        hintSpan: TextSpan;
7061        /** The text to display in the editor for the collapsed region. */
7062        bannerText: string;
7063        /**
7064         * Whether or not this region should be automatically collapsed when
7065         * the 'Collapse to Definitions' command is invoked.
7066         */
7067        autoCollapse: boolean;
7068        /**
7069         * Classification of the contents of the span
7070         */
7071        kind: OutliningSpanKind;
7072    }
7073    enum OutliningSpanKind {
7074        /** Single or multi-line comments */
7075        Comment = "comment",
7076        /** Sections marked by '// #region' and '// #endregion' comments */
7077        Region = "region",
7078        /** Declarations and expressions */
7079        Code = "code",
7080        /** Contiguous blocks of import declarations */
7081        Imports = "imports"
7082    }
7083    enum OutputFileType {
7084        JavaScript = 0,
7085        SourceMap = 1,
7086        Declaration = 2
7087    }
7088    enum EndOfLineState {
7089        None = 0,
7090        InMultiLineCommentTrivia = 1,
7091        InSingleQuoteStringLiteral = 2,
7092        InDoubleQuoteStringLiteral = 3,
7093        InTemplateHeadOrNoSubstitutionTemplate = 4,
7094        InTemplateMiddleOrTail = 5,
7095        InTemplateSubstitutionPosition = 6
7096    }
7097    enum TokenClass {
7098        Punctuation = 0,
7099        Keyword = 1,
7100        Operator = 2,
7101        Comment = 3,
7102        Whitespace = 4,
7103        Identifier = 5,
7104        NumberLiteral = 6,
7105        BigIntLiteral = 7,
7106        StringLiteral = 8,
7107        RegExpLiteral = 9
7108    }
7109    interface ClassificationResult {
7110        finalLexState: EndOfLineState;
7111        entries: ClassificationInfo[];
7112    }
7113    interface ClassificationInfo {
7114        length: number;
7115        classification: TokenClass;
7116    }
7117    interface Classifier {
7118        /**
7119         * Gives lexical classifications of tokens on a line without any syntactic context.
7120         * For instance, a token consisting of the text 'string' can be either an identifier
7121         * named 'string' or the keyword 'string', however, because this classifier is not aware,
7122         * it relies on certain heuristics to give acceptable results. For classifications where
7123         * speed trumps accuracy, this function is preferable; however, for true accuracy, the
7124         * syntactic classifier is ideal. In fact, in certain editing scenarios, combining the
7125         * lexical, syntactic, and semantic classifiers may issue the best user experience.
7126         *
7127         * @param text                      The text of a line to classify.
7128         * @param lexState                  The state of the lexical classifier at the end of the previous line.
7129         * @param syntacticClassifierAbsent Whether the client is *not* using a syntactic classifier.
7130         *                                  If there is no syntactic classifier (syntacticClassifierAbsent=true),
7131         *                                  certain heuristics may be used in its place; however, if there is a
7132         *                                  syntactic classifier (syntacticClassifierAbsent=false), certain
7133         *                                  classifications which may be incorrectly categorized will be given
7134         *                                  back as Identifiers in order to allow the syntactic classifier to
7135         *                                  subsume the classification.
7136         * @deprecated Use getLexicalClassifications instead.
7137         */
7138        getClassificationsForLine(text: string, lexState: EndOfLineState, syntacticClassifierAbsent: boolean): ClassificationResult;
7139        getEncodedLexicalClassifications(text: string, endOfLineState: EndOfLineState, syntacticClassifierAbsent: boolean): Classifications;
7140    }
7141    enum ScriptElementKind {
7142        unknown = "",
7143        warning = "warning",
7144        /** predefined type (void) or keyword (class) */
7145        keyword = "keyword",
7146        /** top level script node */
7147        scriptElement = "script",
7148        /** module foo {} */
7149        moduleElement = "module",
7150        /** class X {} */
7151        classElement = "class",
7152        /** var x = class X {} */
7153        localClassElement = "local class",
7154        /** struct X {} */
7155        structElement = "struct",
7156        /** interface Y {} */
7157        interfaceElement = "interface",
7158        /** type T = ... */
7159        typeElement = "type",
7160        /** enum E */
7161        enumElement = "enum",
7162        enumMemberElement = "enum member",
7163        /**
7164         * Inside module and script only
7165         * const v = ..
7166         */
7167        variableElement = "var",
7168        /** Inside function */
7169        localVariableElement = "local var",
7170        /**
7171         * Inside module and script only
7172         * function f() { }
7173         */
7174        functionElement = "function",
7175        /** Inside function */
7176        localFunctionElement = "local function",
7177        /** class X { [public|private]* foo() {} } */
7178        memberFunctionElement = "method",
7179        /** class X { [public|private]* [get|set] foo:number; } */
7180        memberGetAccessorElement = "getter",
7181        memberSetAccessorElement = "setter",
7182        /**
7183         * class X { [public|private]* foo:number; }
7184         * interface Y { foo:number; }
7185         */
7186        memberVariableElement = "property",
7187        /** class X { [public|private]* accessor foo: number; } */
7188        memberAccessorVariableElement = "accessor",
7189        /**
7190         * class X { constructor() { } }
7191         * class X { static { } }
7192         */
7193        constructorImplementationElement = "constructor",
7194        /** interface Y { ():number; } */
7195        callSignatureElement = "call",
7196        /** interface Y { []:number; } */
7197        indexSignatureElement = "index",
7198        /** interface Y { new():Y; } */
7199        constructSignatureElement = "construct",
7200        /** function foo(*Y*: string) */
7201        parameterElement = "parameter",
7202        typeParameterElement = "type parameter",
7203        primitiveType = "primitive type",
7204        label = "label",
7205        alias = "alias",
7206        constElement = "const",
7207        letElement = "let",
7208        directory = "directory",
7209        externalModuleName = "external module name",
7210        /**
7211         * <JsxTagName attribute1 attribute2={0} />
7212         * @deprecated
7213         */
7214        jsxAttribute = "JSX attribute",
7215        /** String literal */
7216        string = "string",
7217        /** Jsdoc @link: in `{@link C link text}`, the before and after text "{@link " and "}" */
7218        link = "link",
7219        /** Jsdoc @link: in `{@link C link text}`, the entity name "C" */
7220        linkName = "link name",
7221        /** Jsdoc @link: in `{@link C link text}`, the link text "link text" */
7222        linkText = "link text"
7223    }
7224    enum ScriptElementKindModifier {
7225        none = "",
7226        publicMemberModifier = "public",
7227        privateMemberModifier = "private",
7228        protectedMemberModifier = "protected",
7229        exportedModifier = "export",
7230        ambientModifier = "declare",
7231        staticModifier = "static",
7232        abstractModifier = "abstract",
7233        optionalModifier = "optional",
7234        deprecatedModifier = "deprecated",
7235        dtsModifier = ".d.ts",
7236        tsModifier = ".ts",
7237        tsxModifier = ".tsx",
7238        jsModifier = ".js",
7239        jsxModifier = ".jsx",
7240        jsonModifier = ".json",
7241        dmtsModifier = ".d.mts",
7242        mtsModifier = ".mts",
7243        mjsModifier = ".mjs",
7244        dctsModifier = ".d.cts",
7245        ctsModifier = ".cts",
7246        cjsModifier = ".cjs",
7247        etsModifier = ".ets",
7248        detsModifier = ".d.ets"
7249    }
7250    enum ClassificationTypeNames {
7251        comment = "comment",
7252        identifier = "identifier",
7253        keyword = "keyword",
7254        numericLiteral = "number",
7255        bigintLiteral = "bigint",
7256        operator = "operator",
7257        stringLiteral = "string",
7258        whiteSpace = "whitespace",
7259        text = "text",
7260        punctuation = "punctuation",
7261        className = "class name",
7262        enumName = "enum name",
7263        interfaceName = "interface name",
7264        moduleName = "module name",
7265        typeParameterName = "type parameter name",
7266        typeAliasName = "type alias name",
7267        parameterName = "parameter name",
7268        docCommentTagName = "doc comment tag name",
7269        jsxOpenTagName = "jsx open tag name",
7270        jsxCloseTagName = "jsx close tag name",
7271        jsxSelfClosingTagName = "jsx self closing tag name",
7272        jsxAttribute = "jsx attribute",
7273        jsxText = "jsx text",
7274        jsxAttributeStringLiteralValue = "jsx attribute string literal value"
7275    }
7276    enum ClassificationType {
7277        comment = 1,
7278        identifier = 2,
7279        keyword = 3,
7280        numericLiteral = 4,
7281        operator = 5,
7282        stringLiteral = 6,
7283        regularExpressionLiteral = 7,
7284        whiteSpace = 8,
7285        text = 9,
7286        punctuation = 10,
7287        className = 11,
7288        enumName = 12,
7289        interfaceName = 13,
7290        moduleName = 14,
7291        typeParameterName = 15,
7292        typeAliasName = 16,
7293        parameterName = 17,
7294        docCommentTagName = 18,
7295        jsxOpenTagName = 19,
7296        jsxCloseTagName = 20,
7297        jsxSelfClosingTagName = 21,
7298        jsxAttribute = 22,
7299        jsxText = 23,
7300        jsxAttributeStringLiteralValue = 24,
7301        bigintLiteral = 25
7302    }
7303    interface InlayHintsContext {
7304        file: SourceFile;
7305        program: Program;
7306        cancellationToken: CancellationToken;
7307        host: LanguageServiceHost;
7308        span: TextSpan;
7309        preferences: UserPreferences;
7310    }
7311}
7312declare namespace ts {
7313    /** The classifier is used for syntactic highlighting in editors via the TSServer */
7314    function createClassifier(): Classifier;
7315}
7316declare namespace ts {
7317    interface DocumentHighlights {
7318        fileName: string;
7319        highlightSpans: HighlightSpan[];
7320    }
7321}
7322declare namespace ts {
7323    /**
7324     * The document registry represents a store of SourceFile objects that can be shared between
7325     * multiple LanguageService instances. A LanguageService instance holds on the SourceFile (AST)
7326     * of files in the context.
7327     * SourceFile objects account for most of the memory usage by the language service. Sharing
7328     * the same DocumentRegistry instance between different instances of LanguageService allow
7329     * for more efficient memory utilization since all projects will share at least the library
7330     * file (lib.d.ts).
7331     *
7332     * A more advanced use of the document registry is to serialize sourceFile objects to disk
7333     * and re-hydrate them when needed.
7334     *
7335     * To create a default DocumentRegistry, use createDocumentRegistry to create one, and pass it
7336     * to all subsequent createLanguageService calls.
7337     */
7338    interface DocumentRegistry {
7339        /**
7340         * Request a stored SourceFile with a given fileName and compilationSettings.
7341         * The first call to acquire will call createLanguageServiceSourceFile to generate
7342         * the SourceFile if was not found in the registry.
7343         *
7344         * @param fileName The name of the file requested
7345         * @param compilationSettingsOrHost Some compilation settings like target affects the
7346         * shape of a the resulting SourceFile. This allows the DocumentRegistry to store
7347         * multiple copies of the same file for different compilation settings. A minimal
7348         * resolution cache is needed to fully define a source file's shape when
7349         * the compilation settings include `module: node16`+, so providing a cache host
7350         * object should be preferred. A common host is a language service `ConfiguredProject`.
7351         * @param scriptSnapshot Text of the file. Only used if the file was not found
7352         * in the registry and a new one was created.
7353         * @param version Current version of the file. Only used if the file was not found
7354         * in the registry and a new one was created.
7355         */
7356        acquireDocument(fileName: string, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
7357        acquireDocumentWithKey(fileName: string, path: Path, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, key: DocumentRegistryBucketKey, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
7358        /**
7359         * Request an updated version of an already existing SourceFile with a given fileName
7360         * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile
7361         * to get an updated SourceFile.
7362         *
7363         * @param fileName The name of the file requested
7364         * @param compilationSettingsOrHost Some compilation settings like target affects the
7365         * shape of a the resulting SourceFile. This allows the DocumentRegistry to store
7366         * multiple copies of the same file for different compilation settings. A minimal
7367         * resolution cache is needed to fully define a source file's shape when
7368         * the compilation settings include `module: node16`+, so providing a cache host
7369         * object should be preferred. A common host is a language service `ConfiguredProject`.
7370         * @param scriptSnapshot Text of the file.
7371         * @param version Current version of the file.
7372         */
7373        updateDocument(fileName: string, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
7374        updateDocumentWithKey(fileName: string, path: Path, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, key: DocumentRegistryBucketKey, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
7375        getKeyForCompilationSettings(settings: CompilerOptions): DocumentRegistryBucketKey;
7376        /**
7377         * Informs the DocumentRegistry that a file is not needed any longer.
7378         *
7379         * Note: It is not allowed to call release on a SourceFile that was not acquired from
7380         * this registry originally.
7381         *
7382         * @param fileName The name of the file to be released
7383         * @param compilationSettings The compilation settings used to acquire the file
7384         * @param scriptKind The script kind of the file to be released
7385         */
7386        /**@deprecated pass scriptKind and impliedNodeFormat for correctness */
7387        releaseDocument(fileName: string, compilationSettings: CompilerOptions, scriptKind?: ScriptKind): void;
7388        /**
7389         * Informs the DocumentRegistry that a file is not needed any longer.
7390         *
7391         * Note: It is not allowed to call release on a SourceFile that was not acquired from
7392         * this registry originally.
7393         *
7394         * @param fileName The name of the file to be released
7395         * @param compilationSettings The compilation settings used to acquire the file
7396         * @param scriptKind The script kind of the file to be released
7397         * @param impliedNodeFormat The implied source file format of the file to be released
7398         */
7399        releaseDocument(fileName: string, compilationSettings: CompilerOptions, scriptKind: ScriptKind, impliedNodeFormat: SourceFile["impliedNodeFormat"]): void;
7400        /**
7401         * @deprecated pass scriptKind for and impliedNodeFormat correctness */
7402        releaseDocumentWithKey(path: Path, key: DocumentRegistryBucketKey, scriptKind?: ScriptKind): void;
7403        releaseDocumentWithKey(path: Path, key: DocumentRegistryBucketKey, scriptKind: ScriptKind, impliedNodeFormat: SourceFile["impliedNodeFormat"]): void;
7404        reportStats(): string;
7405    }
7406    type DocumentRegistryBucketKey = string & {
7407        __bucketKey: any;
7408    };
7409    function createDocumentRegistry(useCaseSensitiveFileNames?: boolean, currentDirectory?: string): DocumentRegistry;
7410}
7411declare namespace ts {
7412    function preProcessFile(sourceText: string, readImportFiles?: boolean, detectJavaScriptImports?: boolean): PreProcessedFileInfo;
7413}
7414declare namespace ts {
7415    interface TranspileOptions {
7416        compilerOptions?: CompilerOptions;
7417        fileName?: string;
7418        reportDiagnostics?: boolean;
7419        moduleName?: string;
7420        renamedDependencies?: MapLike<string>;
7421        transformers?: CustomTransformers;
7422    }
7423    interface TranspileOutput {
7424        outputText: string;
7425        diagnostics?: Diagnostic[];
7426        sourceMapText?: string;
7427    }
7428    function transpileModule(input: string, transpileOptions: TranspileOptions): TranspileOutput;
7429    function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[], moduleName?: string): string;
7430}
7431declare namespace ts {
7432    /** The version of the language service API */
7433    const servicesVersion = "0.8";
7434    function toEditorSettings(options: EditorOptions | EditorSettings): EditorSettings;
7435    function displayPartsToString(displayParts: SymbolDisplayPart[] | undefined): string;
7436    function getDefaultCompilerOptions(): CompilerOptions;
7437    function getSupportedCodeFixes(): string[];
7438    function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTargetOrOptions: ScriptTarget | CreateSourceFileOptions, version: string, setNodeParents: boolean, scriptKind?: ScriptKind, option?: CompilerOptions): SourceFile;
7439    function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange | undefined, aggressiveChecks?: boolean, option?: CompilerOptions): SourceFile;
7440    function createLanguageService(host: LanguageServiceHost, documentRegistry?: DocumentRegistry, syntaxOnlyOrLanguageServiceMode?: boolean | LanguageServiceMode): LanguageService;
7441    /**
7442     * Get the path of the default library files (lib.d.ts) as distributed with the typescript
7443     * node package.
7444     * The functionality is not supported if the ts module is consumed outside of a node module.
7445     */
7446    function getDefaultLibFilePath(options: CompilerOptions): string;
7447}
7448declare namespace ts {
7449    /**
7450     * Transform one or more nodes using the supplied transformers.
7451     * @param source A single `Node` or an array of `Node` objects.
7452     * @param transformers An array of `TransformerFactory` callbacks used to process the transformation.
7453     * @param compilerOptions Optional compiler options.
7454     */
7455    function transform<T extends Node>(source: T | T[], transformers: TransformerFactory<T>[], compilerOptions?: CompilerOptions): TransformationResult<T>;
7456}
7457declare namespace ts.server {
7458    interface CompressedData {
7459        length: number;
7460        compressionKind: string;
7461        data: any;
7462    }
7463    type ModuleImportResult = {
7464        module: {};
7465        error: undefined;
7466    } | {
7467        module: undefined;
7468        error: {
7469            stack?: string;
7470            message?: string;
7471        };
7472    };
7473    /** @deprecated Use {@link ModuleImportResult} instead. */
7474    type RequireResult = ModuleImportResult;
7475    interface ServerHost extends System {
7476        watchFile(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher;
7477        watchDirectory(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher;
7478        setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): any;
7479        clearTimeout(timeoutId: any): void;
7480        setImmediate(callback: (...args: any[]) => void, ...args: any[]): any;
7481        clearImmediate(timeoutId: any): void;
7482        gc?(): void;
7483        trace?(s: string): void;
7484        require?(initialPath: string, moduleName: string): ModuleImportResult;
7485        getJsDocNodeCheckedConfig?(fileCheckedInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
7486        getJsDocNodeConditionCheckedResult?(fileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
7487        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
7488    }
7489}
7490declare namespace ts.server {
7491    enum LogLevel {
7492        terse = 0,
7493        normal = 1,
7494        requestTime = 2,
7495        verbose = 3
7496    }
7497    const emptyArray: SortedReadonlyArray<never>;
7498    interface Logger {
7499        close(): void;
7500        hasLevel(level: LogLevel): boolean;
7501        loggingEnabled(): boolean;
7502        perftrc(s: string): void;
7503        info(s: string): void;
7504        startGroup(): void;
7505        endGroup(): void;
7506        msg(s: string, type?: Msg): void;
7507        getLogFileName(): string | undefined;
7508    }
7509    enum Msg {
7510        Err = "Err",
7511        Info = "Info",
7512        Perf = "Perf"
7513    }
7514    namespace Msg {
7515        /** @deprecated Only here for backwards-compatibility. Prefer just `Msg`. */
7516        type Types = Msg;
7517    }
7518    function createInstallTypingsRequest(project: Project, typeAcquisition: TypeAcquisition, unresolvedImports: SortedReadonlyArray<string>, cachePath?: string): DiscoverTypings;
7519    namespace Errors {
7520        function ThrowNoProject(): never;
7521        function ThrowProjectLanguageServiceDisabled(): never;
7522        function ThrowProjectDoesNotContainDocument(fileName: string, project: Project): never;
7523    }
7524    type NormalizedPath = string & {
7525        __normalizedPathTag: any;
7526    };
7527    function toNormalizedPath(fileName: string): NormalizedPath;
7528    function normalizedPathToPath(normalizedPath: NormalizedPath, currentDirectory: string, getCanonicalFileName: (f: string) => string): Path;
7529    function asNormalizedPath(fileName: string): NormalizedPath;
7530    interface NormalizedPathMap<T> {
7531        get(path: NormalizedPath): T | undefined;
7532        set(path: NormalizedPath, value: T): void;
7533        contains(path: NormalizedPath): boolean;
7534        remove(path: NormalizedPath): void;
7535    }
7536    function createNormalizedPathMap<T>(): NormalizedPathMap<T>;
7537    function isInferredProjectName(name: string): boolean;
7538    function makeInferredProjectName(counter: number): string;
7539    function createSortedArray<T>(): SortedArray<T>;
7540}
7541/**
7542 * Declaration module describing the TypeScript Server protocol
7543 */
7544declare namespace ts.server.protocol {
7545    enum CommandTypes {
7546        JsxClosingTag = "jsxClosingTag",
7547        Brace = "brace",
7548        BraceCompletion = "braceCompletion",
7549        GetSpanOfEnclosingComment = "getSpanOfEnclosingComment",
7550        Change = "change",
7551        Close = "close",
7552        /** @deprecated Prefer CompletionInfo -- see comment on CompletionsResponse */
7553        Completions = "completions",
7554        CompletionInfo = "completionInfo",
7555        CompletionDetails = "completionEntryDetails",
7556        CompileOnSaveAffectedFileList = "compileOnSaveAffectedFileList",
7557        CompileOnSaveEmitFile = "compileOnSaveEmitFile",
7558        Configure = "configure",
7559        Definition = "definition",
7560        DefinitionAndBoundSpan = "definitionAndBoundSpan",
7561        Implementation = "implementation",
7562        Exit = "exit",
7563        FileReferences = "fileReferences",
7564        Format = "format",
7565        Formatonkey = "formatonkey",
7566        Geterr = "geterr",
7567        GeterrForProject = "geterrForProject",
7568        SemanticDiagnosticsSync = "semanticDiagnosticsSync",
7569        SyntacticDiagnosticsSync = "syntacticDiagnosticsSync",
7570        SuggestionDiagnosticsSync = "suggestionDiagnosticsSync",
7571        NavBar = "navbar",
7572        Navto = "navto",
7573        NavTree = "navtree",
7574        NavTreeFull = "navtree-full",
7575        /** @deprecated */
7576        Occurrences = "occurrences",
7577        DocumentHighlights = "documentHighlights",
7578        Open = "open",
7579        Quickinfo = "quickinfo",
7580        References = "references",
7581        Reload = "reload",
7582        Rename = "rename",
7583        Saveto = "saveto",
7584        SignatureHelp = "signatureHelp",
7585        FindSourceDefinition = "findSourceDefinition",
7586        Status = "status",
7587        TypeDefinition = "typeDefinition",
7588        ProjectInfo = "projectInfo",
7589        ReloadProjects = "reloadProjects",
7590        Unknown = "unknown",
7591        OpenExternalProject = "openExternalProject",
7592        OpenExternalProjects = "openExternalProjects",
7593        CloseExternalProject = "closeExternalProject",
7594        UpdateOpen = "updateOpen",
7595        GetOutliningSpans = "getOutliningSpans",
7596        TodoComments = "todoComments",
7597        Indentation = "indentation",
7598        DocCommentTemplate = "docCommentTemplate",
7599        CompilerOptionsForInferredProjects = "compilerOptionsForInferredProjects",
7600        GetCodeFixes = "getCodeFixes",
7601        GetCombinedCodeFix = "getCombinedCodeFix",
7602        ApplyCodeActionCommand = "applyCodeActionCommand",
7603        GetSupportedCodeFixes = "getSupportedCodeFixes",
7604        GetApplicableRefactors = "getApplicableRefactors",
7605        GetEditsForRefactor = "getEditsForRefactor",
7606        OrganizeImports = "organizeImports",
7607        GetEditsForFileRename = "getEditsForFileRename",
7608        ConfigurePlugin = "configurePlugin",
7609        SelectionRange = "selectionRange",
7610        ToggleLineComment = "toggleLineComment",
7611        ToggleMultilineComment = "toggleMultilineComment",
7612        CommentSelection = "commentSelection",
7613        UncommentSelection = "uncommentSelection",
7614        PrepareCallHierarchy = "prepareCallHierarchy",
7615        ProvideCallHierarchyIncomingCalls = "provideCallHierarchyIncomingCalls",
7616        ProvideCallHierarchyOutgoingCalls = "provideCallHierarchyOutgoingCalls",
7617        ProvideInlayHints = "provideInlayHints"
7618    }
7619    /**
7620     * A TypeScript Server message
7621     */
7622    interface Message {
7623        /**
7624         * Sequence number of the message
7625         */
7626        seq: number;
7627        /**
7628         * One of "request", "response", or "event"
7629         */
7630        type: "request" | "response" | "event";
7631    }
7632    /**
7633     * Client-initiated request message
7634     */
7635    interface Request extends Message {
7636        type: "request";
7637        /**
7638         * The command to execute
7639         */
7640        command: string;
7641        /**
7642         * Object containing arguments for the command
7643         */
7644        arguments?: any;
7645    }
7646    /**
7647     * Request to reload the project structure for all the opened files
7648     */
7649    interface ReloadProjectsRequest extends Message {
7650        command: CommandTypes.ReloadProjects;
7651    }
7652    /**
7653     * Server-initiated event message
7654     */
7655    interface Event extends Message {
7656        type: "event";
7657        /**
7658         * Name of event
7659         */
7660        event: string;
7661        /**
7662         * Event-specific information
7663         */
7664        body?: any;
7665    }
7666    /**
7667     * Response by server to client request message.
7668     */
7669    interface Response extends Message {
7670        type: "response";
7671        /**
7672         * Sequence number of the request message.
7673         */
7674        request_seq: number;
7675        /**
7676         * Outcome of the request.
7677         */
7678        success: boolean;
7679        /**
7680         * The command requested.
7681         */
7682        command: string;
7683        /**
7684         * If success === false, this should always be provided.
7685         * Otherwise, may (or may not) contain a success message.
7686         */
7687        message?: string;
7688        /**
7689         * Contains message body if success === true.
7690         */
7691        body?: any;
7692        /**
7693         * Contains extra information that plugin can include to be passed on
7694         */
7695        metadata?: unknown;
7696        /**
7697         * Exposes information about the performance of this request-response pair.
7698         */
7699        performanceData?: PerformanceData;
7700    }
7701    interface PerformanceData {
7702        /**
7703         * Time spent updating the program graph, in milliseconds.
7704         */
7705        updateGraphDurationMs?: number;
7706        /**
7707         * The time spent creating or updating the auto-import program, in milliseconds.
7708         */
7709        createAutoImportProviderProgramDurationMs?: number;
7710    }
7711    /**
7712     * Arguments for FileRequest messages.
7713     */
7714    interface FileRequestArgs {
7715        /**
7716         * The file for the request (absolute pathname required).
7717         */
7718        file: string;
7719        projectFileName?: string;
7720    }
7721    interface StatusRequest extends Request {
7722        command: CommandTypes.Status;
7723    }
7724    interface StatusResponseBody {
7725        /**
7726         * The TypeScript version (`ts.version`).
7727         */
7728        version: string;
7729    }
7730    /**
7731     * Response to StatusRequest
7732     */
7733    interface StatusResponse extends Response {
7734        body: StatusResponseBody;
7735    }
7736    /**
7737     * Requests a JS Doc comment template for a given position
7738     */
7739    interface DocCommentTemplateRequest extends FileLocationRequest {
7740        command: CommandTypes.DocCommentTemplate;
7741    }
7742    /**
7743     * Response to DocCommentTemplateRequest
7744     */
7745    interface DocCommandTemplateResponse extends Response {
7746        body?: TextInsertion;
7747    }
7748    /**
7749     * A request to get TODO comments from the file
7750     */
7751    interface TodoCommentRequest extends FileRequest {
7752        command: CommandTypes.TodoComments;
7753        arguments: TodoCommentRequestArgs;
7754    }
7755    /**
7756     * Arguments for TodoCommentRequest request.
7757     */
7758    interface TodoCommentRequestArgs extends FileRequestArgs {
7759        /**
7760         * Array of target TodoCommentDescriptors that describes TODO comments to be found
7761         */
7762        descriptors: TodoCommentDescriptor[];
7763    }
7764    /**
7765     * Response for TodoCommentRequest request.
7766     */
7767    interface TodoCommentsResponse extends Response {
7768        body?: TodoComment[];
7769    }
7770    /**
7771     * A request to determine if the caret is inside a comment.
7772     */
7773    interface SpanOfEnclosingCommentRequest extends FileLocationRequest {
7774        command: CommandTypes.GetSpanOfEnclosingComment;
7775        arguments: SpanOfEnclosingCommentRequestArgs;
7776    }
7777    interface SpanOfEnclosingCommentRequestArgs extends FileLocationRequestArgs {
7778        /**
7779         * Requires that the enclosing span be a multi-line comment, or else the request returns undefined.
7780         */
7781        onlyMultiLine: boolean;
7782    }
7783    /**
7784     * Request to obtain outlining spans in file.
7785     */
7786    interface OutliningSpansRequest extends FileRequest {
7787        command: CommandTypes.GetOutliningSpans;
7788    }
7789    interface OutliningSpan {
7790        /** The span of the document to actually collapse. */
7791        textSpan: TextSpan;
7792        /** The span of the document to display when the user hovers over the collapsed span. */
7793        hintSpan: TextSpan;
7794        /** The text to display in the editor for the collapsed region. */
7795        bannerText: string;
7796        /**
7797         * Whether or not this region should be automatically collapsed when
7798         * the 'Collapse to Definitions' command is invoked.
7799         */
7800        autoCollapse: boolean;
7801        /**
7802         * Classification of the contents of the span
7803         */
7804        kind: OutliningSpanKind;
7805    }
7806    /**
7807     * Response to OutliningSpansRequest request.
7808     */
7809    interface OutliningSpansResponse extends Response {
7810        body?: OutliningSpan[];
7811    }
7812    /**
7813     * A request to get indentation for a location in file
7814     */
7815    interface IndentationRequest extends FileLocationRequest {
7816        command: CommandTypes.Indentation;
7817        arguments: IndentationRequestArgs;
7818    }
7819    /**
7820     * Response for IndentationRequest request.
7821     */
7822    interface IndentationResponse extends Response {
7823        body?: IndentationResult;
7824    }
7825    /**
7826     * Indentation result representing where indentation should be placed
7827     */
7828    interface IndentationResult {
7829        /**
7830         * The base position in the document that the indent should be relative to
7831         */
7832        position: number;
7833        /**
7834         * The number of columns the indent should be at relative to the position's column.
7835         */
7836        indentation: number;
7837    }
7838    /**
7839     * Arguments for IndentationRequest request.
7840     */
7841    interface IndentationRequestArgs extends FileLocationRequestArgs {
7842        /**
7843         * An optional set of settings to be used when computing indentation.
7844         * If argument is omitted - then it will use settings for file that were previously set via 'configure' request or global settings.
7845         */
7846        options?: EditorSettings;
7847    }
7848    /**
7849     * Arguments for ProjectInfoRequest request.
7850     */
7851    interface ProjectInfoRequestArgs extends FileRequestArgs {
7852        /**
7853         * Indicate if the file name list of the project is needed
7854         */
7855        needFileNameList: boolean;
7856    }
7857    /**
7858     * A request to get the project information of the current file.
7859     */
7860    interface ProjectInfoRequest extends Request {
7861        command: CommandTypes.ProjectInfo;
7862        arguments: ProjectInfoRequestArgs;
7863    }
7864    /**
7865     * A request to retrieve compiler options diagnostics for a project
7866     */
7867    interface CompilerOptionsDiagnosticsRequest extends Request {
7868        arguments: CompilerOptionsDiagnosticsRequestArgs;
7869    }
7870    /**
7871     * Arguments for CompilerOptionsDiagnosticsRequest request.
7872     */
7873    interface CompilerOptionsDiagnosticsRequestArgs {
7874        /**
7875         * Name of the project to retrieve compiler options diagnostics.
7876         */
7877        projectFileName: string;
7878    }
7879    /**
7880     * Response message body for "projectInfo" request
7881     */
7882    interface ProjectInfo {
7883        /**
7884         * For configured project, this is the normalized path of the 'tsconfig.json' file
7885         * For inferred project, this is undefined
7886         */
7887        configFileName: string;
7888        /**
7889         * The list of normalized file name in the project, including 'lib.d.ts'
7890         */
7891        fileNames?: string[];
7892        /**
7893         * Indicates if the project has a active language service instance
7894         */
7895        languageServiceDisabled?: boolean;
7896    }
7897    /**
7898     * Represents diagnostic info that includes location of diagnostic in two forms
7899     * - start position and length of the error span
7900     * - startLocation and endLocation - a pair of Location objects that store start/end line and offset of the error span.
7901     */
7902    interface DiagnosticWithLinePosition {
7903        message: string;
7904        start: number;
7905        length: number;
7906        startLocation: Location;
7907        endLocation: Location;
7908        category: string;
7909        code: number;
7910        /** May store more in future. For now, this will simply be `true` to indicate when a diagnostic is an unused-identifier diagnostic. */
7911        reportsUnnecessary?: {};
7912        reportsDeprecated?: {};
7913        relatedInformation?: DiagnosticRelatedInformation[];
7914    }
7915    /**
7916     * Response message for "projectInfo" request
7917     */
7918    interface ProjectInfoResponse extends Response {
7919        body?: ProjectInfo;
7920    }
7921    /**
7922     * Request whose sole parameter is a file name.
7923     */
7924    interface FileRequest extends Request {
7925        arguments: FileRequestArgs;
7926    }
7927    /**
7928     * Instances of this interface specify a location in a source file:
7929     * (file, line, character offset), where line and character offset are 1-based.
7930     */
7931    interface FileLocationRequestArgs extends FileRequestArgs {
7932        /**
7933         * The line number for the request (1-based).
7934         */
7935        line: number;
7936        /**
7937         * The character offset (on the line) for the request (1-based).
7938         */
7939        offset: number;
7940    }
7941    type FileLocationOrRangeRequestArgs = FileLocationRequestArgs | FileRangeRequestArgs;
7942    /**
7943     * Request refactorings at a given position or selection area.
7944     */
7945    interface GetApplicableRefactorsRequest extends Request {
7946        command: CommandTypes.GetApplicableRefactors;
7947        arguments: GetApplicableRefactorsRequestArgs;
7948    }
7949    type GetApplicableRefactorsRequestArgs = FileLocationOrRangeRequestArgs & {
7950        triggerReason?: RefactorTriggerReason;
7951        kind?: string;
7952    };
7953    type RefactorTriggerReason = "implicit" | "invoked";
7954    /**
7955     * Response is a list of available refactorings.
7956     * Each refactoring exposes one or more "Actions"; a user selects one action to invoke a refactoring
7957     */
7958    interface GetApplicableRefactorsResponse extends Response {
7959        body?: ApplicableRefactorInfo[];
7960    }
7961    /**
7962     * A set of one or more available refactoring actions, grouped under a parent refactoring.
7963     */
7964    interface ApplicableRefactorInfo {
7965        /**
7966         * The programmatic name of the refactoring
7967         */
7968        name: string;
7969        /**
7970         * A description of this refactoring category to show to the user.
7971         * If the refactoring gets inlined (see below), this text will not be visible.
7972         */
7973        description: string;
7974        /**
7975         * Inlineable refactorings can have their actions hoisted out to the top level
7976         * of a context menu. Non-inlineanable refactorings should always be shown inside
7977         * their parent grouping.
7978         *
7979         * If not specified, this value is assumed to be 'true'
7980         */
7981        inlineable?: boolean;
7982        actions: RefactorActionInfo[];
7983    }
7984    /**
7985     * Represents a single refactoring action - for example, the "Extract Method..." refactor might
7986     * offer several actions, each corresponding to a surround class or closure to extract into.
7987     */
7988    interface RefactorActionInfo {
7989        /**
7990         * The programmatic name of the refactoring action
7991         */
7992        name: string;
7993        /**
7994         * A description of this refactoring action to show to the user.
7995         * If the parent refactoring is inlined away, this will be the only text shown,
7996         * so this description should make sense by itself if the parent is inlineable=true
7997         */
7998        description: string;
7999        /**
8000         * A message to show to the user if the refactoring cannot be applied in
8001         * the current context.
8002         */
8003        notApplicableReason?: string;
8004        /**
8005         * The hierarchical dotted name of the refactor action.
8006         */
8007        kind?: string;
8008    }
8009    interface GetEditsForRefactorRequest extends Request {
8010        command: CommandTypes.GetEditsForRefactor;
8011        arguments: GetEditsForRefactorRequestArgs;
8012    }
8013    /**
8014     * Request the edits that a particular refactoring action produces.
8015     * Callers must specify the name of the refactor and the name of the action.
8016     */
8017    type GetEditsForRefactorRequestArgs = FileLocationOrRangeRequestArgs & {
8018        refactor: string;
8019        action: string;
8020    };
8021    interface GetEditsForRefactorResponse extends Response {
8022        body?: RefactorEditInfo;
8023    }
8024    interface RefactorEditInfo {
8025        edits: FileCodeEdits[];
8026        /**
8027         * An optional location where the editor should start a rename operation once
8028         * the refactoring edits have been applied
8029         */
8030        renameLocation?: Location;
8031        renameFilename?: string;
8032    }
8033    /**
8034     * Organize imports by:
8035     *   1) Removing unused imports
8036     *   2) Coalescing imports from the same module
8037     *   3) Sorting imports
8038     */
8039    interface OrganizeImportsRequest extends Request {
8040        command: CommandTypes.OrganizeImports;
8041        arguments: OrganizeImportsRequestArgs;
8042    }
8043    type OrganizeImportsScope = GetCombinedCodeFixScope;
8044    enum OrganizeImportsMode {
8045        All = "All",
8046        SortAndCombine = "SortAndCombine",
8047        RemoveUnused = "RemoveUnused"
8048    }
8049    interface OrganizeImportsRequestArgs {
8050        scope: OrganizeImportsScope;
8051        /** @deprecated Use `mode` instead */
8052        skipDestructiveCodeActions?: boolean;
8053        mode?: OrganizeImportsMode;
8054    }
8055    interface OrganizeImportsResponse extends Response {
8056        body: readonly FileCodeEdits[];
8057    }
8058    interface GetEditsForFileRenameRequest extends Request {
8059        command: CommandTypes.GetEditsForFileRename;
8060        arguments: GetEditsForFileRenameRequestArgs;
8061    }
8062    /** Note: Paths may also be directories. */
8063    interface GetEditsForFileRenameRequestArgs {
8064        readonly oldFilePath: string;
8065        readonly newFilePath: string;
8066    }
8067    interface GetEditsForFileRenameResponse extends Response {
8068        body: readonly FileCodeEdits[];
8069    }
8070    /**
8071     * Request for the available codefixes at a specific position.
8072     */
8073    interface CodeFixRequest extends Request {
8074        command: CommandTypes.GetCodeFixes;
8075        arguments: CodeFixRequestArgs;
8076    }
8077    interface GetCombinedCodeFixRequest extends Request {
8078        command: CommandTypes.GetCombinedCodeFix;
8079        arguments: GetCombinedCodeFixRequestArgs;
8080    }
8081    interface GetCombinedCodeFixResponse extends Response {
8082        body: CombinedCodeActions;
8083    }
8084    interface ApplyCodeActionCommandRequest extends Request {
8085        command: CommandTypes.ApplyCodeActionCommand;
8086        arguments: ApplyCodeActionCommandRequestArgs;
8087    }
8088    interface ApplyCodeActionCommandResponse extends Response {
8089    }
8090    interface FileRangeRequestArgs extends FileRequestArgs {
8091        /**
8092         * The line number for the request (1-based).
8093         */
8094        startLine: number;
8095        /**
8096         * The character offset (on the line) for the request (1-based).
8097         */
8098        startOffset: number;
8099        /**
8100         * The line number for the request (1-based).
8101         */
8102        endLine: number;
8103        /**
8104         * The character offset (on the line) for the request (1-based).
8105         */
8106        endOffset: number;
8107    }
8108    /**
8109     * Instances of this interface specify errorcodes on a specific location in a sourcefile.
8110     */
8111    interface CodeFixRequestArgs extends FileRangeRequestArgs {
8112        /**
8113         * Errorcodes we want to get the fixes for.
8114         */
8115        errorCodes: readonly number[];
8116    }
8117    interface GetCombinedCodeFixRequestArgs {
8118        scope: GetCombinedCodeFixScope;
8119        fixId: {};
8120    }
8121    interface GetCombinedCodeFixScope {
8122        type: "file";
8123        args: FileRequestArgs;
8124    }
8125    interface ApplyCodeActionCommandRequestArgs {
8126        /** May also be an array of commands. */
8127        command: {};
8128    }
8129    /**
8130     * Response for GetCodeFixes request.
8131     */
8132    interface GetCodeFixesResponse extends Response {
8133        body?: CodeAction[];
8134    }
8135    /**
8136     * A request whose arguments specify a file location (file, line, col).
8137     */
8138    interface FileLocationRequest extends FileRequest {
8139        arguments: FileLocationRequestArgs;
8140    }
8141    /**
8142     * A request to get codes of supported code fixes.
8143     */
8144    interface GetSupportedCodeFixesRequest extends Request {
8145        command: CommandTypes.GetSupportedCodeFixes;
8146    }
8147    /**
8148     * A response for GetSupportedCodeFixesRequest request.
8149     */
8150    interface GetSupportedCodeFixesResponse extends Response {
8151        /**
8152         * List of error codes supported by the server.
8153         */
8154        body?: string[];
8155    }
8156    /**
8157     * A request to get encoded semantic classifications for a span in the file
8158     */
8159    interface EncodedSemanticClassificationsRequest extends FileRequest {
8160        arguments: EncodedSemanticClassificationsRequestArgs;
8161    }
8162    /**
8163     * Arguments for EncodedSemanticClassificationsRequest request.
8164     */
8165    interface EncodedSemanticClassificationsRequestArgs extends FileRequestArgs {
8166        /**
8167         * Start position of the span.
8168         */
8169        start: number;
8170        /**
8171         * Length of the span.
8172         */
8173        length: number;
8174        /**
8175         * Optional parameter for the semantic highlighting response, if absent it
8176         * defaults to "original".
8177         */
8178        format?: "original" | "2020";
8179    }
8180    /** The response for a EncodedSemanticClassificationsRequest */
8181    interface EncodedSemanticClassificationsResponse extends Response {
8182        body?: EncodedSemanticClassificationsResponseBody;
8183    }
8184    /**
8185     * Implementation response message. Gives series of text spans depending on the format ar.
8186     */
8187    interface EncodedSemanticClassificationsResponseBody {
8188        endOfLineState: EndOfLineState;
8189        spans: number[];
8190    }
8191    /**
8192     * Arguments in document highlight request; include: filesToSearch, file,
8193     * line, offset.
8194     */
8195    interface DocumentHighlightsRequestArgs extends FileLocationRequestArgs {
8196        /**
8197         * List of files to search for document highlights.
8198         */
8199        filesToSearch: string[];
8200    }
8201    /**
8202     * Go to definition request; value of command field is
8203     * "definition". Return response giving the file locations that
8204     * define the symbol found in file at location line, col.
8205     */
8206    interface DefinitionRequest extends FileLocationRequest {
8207        command: CommandTypes.Definition;
8208    }
8209    interface DefinitionAndBoundSpanRequest extends FileLocationRequest {
8210        readonly command: CommandTypes.DefinitionAndBoundSpan;
8211    }
8212    interface FindSourceDefinitionRequest extends FileLocationRequest {
8213        readonly command: CommandTypes.FindSourceDefinition;
8214    }
8215    interface DefinitionAndBoundSpanResponse extends Response {
8216        readonly body: DefinitionInfoAndBoundSpan;
8217    }
8218    /**
8219     * Go to type request; value of command field is
8220     * "typeDefinition". Return response giving the file locations that
8221     * define the type for the symbol found in file at location line, col.
8222     */
8223    interface TypeDefinitionRequest extends FileLocationRequest {
8224        command: CommandTypes.TypeDefinition;
8225    }
8226    /**
8227     * Go to implementation request; value of command field is
8228     * "implementation". Return response giving the file locations that
8229     * implement the symbol found in file at location line, col.
8230     */
8231    interface ImplementationRequest extends FileLocationRequest {
8232        command: CommandTypes.Implementation;
8233    }
8234    /**
8235     * Location in source code expressed as (one-based) line and (one-based) column offset.
8236     */
8237    interface Location {
8238        line: number;
8239        offset: number;
8240    }
8241    /**
8242     * Object found in response messages defining a span of text in source code.
8243     */
8244    interface TextSpan {
8245        /**
8246         * First character of the definition.
8247         */
8248        start: Location;
8249        /**
8250         * One character past last character of the definition.
8251         */
8252        end: Location;
8253    }
8254    /**
8255     * Object found in response messages defining a span of text in a specific source file.
8256     */
8257    interface FileSpan extends TextSpan {
8258        /**
8259         * File containing text span.
8260         */
8261        file: string;
8262    }
8263    interface JSDocTagInfo {
8264        /** Name of the JSDoc tag */
8265        name: string;
8266        /**
8267         * Comment text after the JSDoc tag -- the text after the tag name until the next tag or end of comment
8268         * Display parts when UserPreferences.displayPartsForJSDoc is true, flattened to string otherwise.
8269         */
8270        text?: string | SymbolDisplayPart[];
8271    }
8272    interface TextSpanWithContext extends TextSpan {
8273        contextStart?: Location;
8274        contextEnd?: Location;
8275    }
8276    interface FileSpanWithContext extends FileSpan, TextSpanWithContext {
8277    }
8278    interface DefinitionInfo extends FileSpanWithContext {
8279        /**
8280         * When true, the file may or may not exist.
8281         */
8282        unverified?: boolean;
8283    }
8284    interface DefinitionInfoAndBoundSpan {
8285        definitions: readonly DefinitionInfo[];
8286        textSpan: TextSpan;
8287    }
8288    /**
8289     * Definition response message.  Gives text range for definition.
8290     */
8291    interface DefinitionResponse extends Response {
8292        body?: DefinitionInfo[];
8293    }
8294    interface DefinitionInfoAndBoundSpanResponse extends Response {
8295        body?: DefinitionInfoAndBoundSpan;
8296    }
8297    /** @deprecated Use `DefinitionInfoAndBoundSpanResponse` instead. */
8298    type DefinitionInfoAndBoundSpanReponse = DefinitionInfoAndBoundSpanResponse;
8299    /**
8300     * Definition response message.  Gives text range for definition.
8301     */
8302    interface TypeDefinitionResponse extends Response {
8303        body?: FileSpanWithContext[];
8304    }
8305    /**
8306     * Implementation response message.  Gives text range for implementations.
8307     */
8308    interface ImplementationResponse extends Response {
8309        body?: FileSpanWithContext[];
8310    }
8311    /**
8312     * Request to get brace completion for a location in the file.
8313     */
8314    interface BraceCompletionRequest extends FileLocationRequest {
8315        command: CommandTypes.BraceCompletion;
8316        arguments: BraceCompletionRequestArgs;
8317    }
8318    /**
8319     * Argument for BraceCompletionRequest request.
8320     */
8321    interface BraceCompletionRequestArgs extends FileLocationRequestArgs {
8322        /**
8323         * Kind of opening brace
8324         */
8325        openingBrace: string;
8326    }
8327    interface JsxClosingTagRequest extends FileLocationRequest {
8328        readonly command: CommandTypes.JsxClosingTag;
8329        readonly arguments: JsxClosingTagRequestArgs;
8330    }
8331    interface JsxClosingTagRequestArgs extends FileLocationRequestArgs {
8332    }
8333    interface JsxClosingTagResponse extends Response {
8334        readonly body: TextInsertion;
8335    }
8336    /**
8337     * @deprecated
8338     * Get occurrences request; value of command field is
8339     * "occurrences". Return response giving spans that are relevant
8340     * in the file at a given line and column.
8341     */
8342    interface OccurrencesRequest extends FileLocationRequest {
8343        command: CommandTypes.Occurrences;
8344    }
8345    /** @deprecated */
8346    interface OccurrencesResponseItem extends FileSpanWithContext {
8347        /**
8348         * True if the occurrence is a write location, false otherwise.
8349         */
8350        isWriteAccess: boolean;
8351        /**
8352         * True if the occurrence is in a string, undefined otherwise;
8353         */
8354        isInString?: true;
8355    }
8356    /** @deprecated */
8357    interface OccurrencesResponse extends Response {
8358        body?: OccurrencesResponseItem[];
8359    }
8360    /**
8361     * Get document highlights request; value of command field is
8362     * "documentHighlights". Return response giving spans that are relevant
8363     * in the file at a given line and column.
8364     */
8365    interface DocumentHighlightsRequest extends FileLocationRequest {
8366        command: CommandTypes.DocumentHighlights;
8367        arguments: DocumentHighlightsRequestArgs;
8368    }
8369    /**
8370     * Span augmented with extra information that denotes the kind of the highlighting to be used for span.
8371     */
8372    interface HighlightSpan extends TextSpanWithContext {
8373        kind: HighlightSpanKind;
8374    }
8375    /**
8376     * Represents a set of highligh spans for a give name
8377     */
8378    interface DocumentHighlightsItem {
8379        /**
8380         * File containing highlight spans.
8381         */
8382        file: string;
8383        /**
8384         * Spans to highlight in file.
8385         */
8386        highlightSpans: HighlightSpan[];
8387    }
8388    /**
8389     * Response for a DocumentHighlightsRequest request.
8390     */
8391    interface DocumentHighlightsResponse extends Response {
8392        body?: DocumentHighlightsItem[];
8393    }
8394    /**
8395     * Find references request; value of command field is
8396     * "references". Return response giving the file locations that
8397     * reference the symbol found in file at location line, col.
8398     */
8399    interface ReferencesRequest extends FileLocationRequest {
8400        command: CommandTypes.References;
8401    }
8402    interface ReferencesResponseItem extends FileSpanWithContext {
8403        /**
8404         * Text of line containing the reference. Including this
8405         * with the response avoids latency of editor loading files
8406         * to show text of reference line (the server already has loaded the referencing files).
8407         *
8408         * If {@link UserPreferences.disableLineTextInReferences} is enabled, the property won't be filled
8409         */
8410        lineText?: string;
8411        /**
8412         * True if reference is a write location, false otherwise.
8413         */
8414        isWriteAccess: boolean;
8415        /**
8416         * Present only if the search was triggered from a declaration.
8417         * True indicates that the references refers to the same symbol
8418         * (i.e. has the same meaning) as the declaration that began the
8419         * search.
8420         */
8421        isDefinition?: boolean;
8422    }
8423    /**
8424     * The body of a "references" response message.
8425     */
8426    interface ReferencesResponseBody {
8427        /**
8428         * The file locations referencing the symbol.
8429         */
8430        refs: readonly ReferencesResponseItem[];
8431        /**
8432         * The name of the symbol.
8433         */
8434        symbolName: string;
8435        /**
8436         * The start character offset of the symbol (on the line provided by the references request).
8437         */
8438        symbolStartOffset: number;
8439        /**
8440         * The full display name of the symbol.
8441         */
8442        symbolDisplayString: string;
8443    }
8444    /**
8445     * Response to "references" request.
8446     */
8447    interface ReferencesResponse extends Response {
8448        body?: ReferencesResponseBody;
8449    }
8450    interface FileReferencesRequest extends FileRequest {
8451        command: CommandTypes.FileReferences;
8452    }
8453    interface FileReferencesResponseBody {
8454        /**
8455         * The file locations referencing the symbol.
8456         */
8457        refs: readonly ReferencesResponseItem[];
8458        /**
8459         * The name of the symbol.
8460         */
8461        symbolName: string;
8462    }
8463    interface FileReferencesResponse extends Response {
8464        body?: FileReferencesResponseBody;
8465    }
8466    /**
8467     * Argument for RenameRequest request.
8468     */
8469    interface RenameRequestArgs extends FileLocationRequestArgs {
8470        /**
8471         * Should text at specified location be found/changed in comments?
8472         */
8473        findInComments?: boolean;
8474        /**
8475         * Should text at specified location be found/changed in strings?
8476         */
8477        findInStrings?: boolean;
8478    }
8479    /**
8480     * Rename request; value of command field is "rename". Return
8481     * response giving the file locations that reference the symbol
8482     * found in file at location line, col. Also return full display
8483     * name of the symbol so that client can print it unambiguously.
8484     */
8485    interface RenameRequest extends FileLocationRequest {
8486        command: CommandTypes.Rename;
8487        arguments: RenameRequestArgs;
8488    }
8489    /**
8490     * Information about the item to be renamed.
8491     */
8492    type RenameInfo = RenameInfoSuccess | RenameInfoFailure;
8493    interface RenameInfoSuccess {
8494        /**
8495         * True if item can be renamed.
8496         */
8497        canRename: true;
8498        /**
8499         * File or directory to rename.
8500         * If set, `getEditsForFileRename` should be called instead of `findRenameLocations`.
8501         */
8502        fileToRename?: string;
8503        /**
8504         * Display name of the item to be renamed.
8505         */
8506        displayName: string;
8507        /**
8508         * Full display name of item to be renamed.
8509         */
8510        fullDisplayName: string;
8511        /**
8512         * The items's kind (such as 'className' or 'parameterName' or plain 'text').
8513         */
8514        kind: ScriptElementKind;
8515        /**
8516         * Optional modifiers for the kind (such as 'public').
8517         */
8518        kindModifiers: string;
8519        /** Span of text to rename. */
8520        triggerSpan: TextSpan;
8521    }
8522    interface RenameInfoFailure {
8523        canRename: false;
8524        /**
8525         * Error message if item can not be renamed.
8526         */
8527        localizedErrorMessage: string;
8528    }
8529    /**
8530     *  A group of text spans, all in 'file'.
8531     */
8532    interface SpanGroup {
8533        /** The file to which the spans apply */
8534        file: string;
8535        /** The text spans in this group */
8536        locs: RenameTextSpan[];
8537    }
8538    interface RenameTextSpan extends TextSpanWithContext {
8539        readonly prefixText?: string;
8540        readonly suffixText?: string;
8541    }
8542    interface RenameResponseBody {
8543        /**
8544         * Information about the item to be renamed.
8545         */
8546        info: RenameInfo;
8547        /**
8548         * An array of span groups (one per file) that refer to the item to be renamed.
8549         */
8550        locs: readonly SpanGroup[];
8551    }
8552    /**
8553     * Rename response message.
8554     */
8555    interface RenameResponse extends Response {
8556        body?: RenameResponseBody;
8557    }
8558    /**
8559     * Represents a file in external project.
8560     * External project is project whose set of files, compilation options and open\close state
8561     * is maintained by the client (i.e. if all this data come from .csproj file in Visual Studio).
8562     * External project will exist even if all files in it are closed and should be closed explicitly.
8563     * If external project includes one or more tsconfig.json/jsconfig.json files then tsserver will
8564     * create configured project for every config file but will maintain a link that these projects were created
8565     * as a result of opening external project so they should be removed once external project is closed.
8566     */
8567    interface ExternalFile {
8568        /**
8569         * Name of file file
8570         */
8571        fileName: string;
8572        /**
8573         * Script kind of the file
8574         */
8575        scriptKind?: ScriptKindName | ts.ScriptKind;
8576        /**
8577         * Whether file has mixed content (i.e. .cshtml file that combines html markup with C#/JavaScript)
8578         */
8579        hasMixedContent?: boolean;
8580        /**
8581         * Content of the file
8582         */
8583        content?: string;
8584    }
8585    /**
8586     * Represent an external project
8587     */
8588    interface ExternalProject {
8589        /**
8590         * Project name
8591         */
8592        projectFileName: string;
8593        /**
8594         * List of root files in project
8595         */
8596        rootFiles: ExternalFile[];
8597        /**
8598         * Compiler options for the project
8599         */
8600        options: ExternalProjectCompilerOptions;
8601        /**
8602         * @deprecated typingOptions. Use typeAcquisition instead
8603         */
8604        typingOptions?: TypeAcquisition;
8605        /**
8606         * Explicitly specified type acquisition for the project
8607         */
8608        typeAcquisition?: TypeAcquisition;
8609    }
8610    interface CompileOnSaveMixin {
8611        /**
8612         * If compile on save is enabled for the project
8613         */
8614        compileOnSave?: boolean;
8615    }
8616    /**
8617     * For external projects, some of the project settings are sent together with
8618     * compiler settings.
8619     */
8620    type ExternalProjectCompilerOptions = CompilerOptions & CompileOnSaveMixin & WatchOptions;
8621    interface FileWithProjectReferenceRedirectInfo {
8622        /**
8623         * Name of file
8624         */
8625        fileName: string;
8626        /**
8627         * True if the file is primarily included in a referenced project
8628         */
8629        isSourceOfProjectReferenceRedirect: boolean;
8630    }
8631    /**
8632     * Represents a set of changes that happen in project
8633     */
8634    interface ProjectChanges {
8635        /**
8636         * List of added files
8637         */
8638        added: string[] | FileWithProjectReferenceRedirectInfo[];
8639        /**
8640         * List of removed files
8641         */
8642        removed: string[] | FileWithProjectReferenceRedirectInfo[];
8643        /**
8644         * List of updated files
8645         */
8646        updated: string[] | FileWithProjectReferenceRedirectInfo[];
8647        /**
8648         * List of files that have had their project reference redirect status updated
8649         * Only provided when the synchronizeProjectList request has includeProjectReferenceRedirectInfo set to true
8650         */
8651        updatedRedirects?: FileWithProjectReferenceRedirectInfo[];
8652    }
8653    /**
8654     * Information found in a configure request.
8655     */
8656    interface ConfigureRequestArguments {
8657        /**
8658         * Information about the host, for example 'Emacs 24.4' or
8659         * 'Sublime Text version 3075'
8660         */
8661        hostInfo?: string;
8662        /**
8663         * If present, tab settings apply only to this file.
8664         */
8665        file?: string;
8666        /**
8667         * The format options to use during formatting and other code editing features.
8668         */
8669        formatOptions?: FormatCodeSettings;
8670        preferences?: UserPreferences;
8671        /**
8672         * The host's additional supported .js file extensions
8673         */
8674        extraFileExtensions?: FileExtensionInfo[];
8675        watchOptions?: WatchOptions;
8676    }
8677    enum WatchFileKind {
8678        FixedPollingInterval = "FixedPollingInterval",
8679        PriorityPollingInterval = "PriorityPollingInterval",
8680        DynamicPriorityPolling = "DynamicPriorityPolling",
8681        FixedChunkSizePolling = "FixedChunkSizePolling",
8682        UseFsEvents = "UseFsEvents",
8683        UseFsEventsOnParentDirectory = "UseFsEventsOnParentDirectory"
8684    }
8685    enum WatchDirectoryKind {
8686        UseFsEvents = "UseFsEvents",
8687        FixedPollingInterval = "FixedPollingInterval",
8688        DynamicPriorityPolling = "DynamicPriorityPolling",
8689        FixedChunkSizePolling = "FixedChunkSizePolling"
8690    }
8691    enum PollingWatchKind {
8692        FixedInterval = "FixedInterval",
8693        PriorityInterval = "PriorityInterval",
8694        DynamicPriority = "DynamicPriority",
8695        FixedChunkSize = "FixedChunkSize"
8696    }
8697    interface WatchOptions {
8698        watchFile?: WatchFileKind | ts.WatchFileKind;
8699        watchDirectory?: WatchDirectoryKind | ts.WatchDirectoryKind;
8700        fallbackPolling?: PollingWatchKind | ts.PollingWatchKind;
8701        synchronousWatchDirectory?: boolean;
8702        excludeDirectories?: string[];
8703        excludeFiles?: string[];
8704        [option: string]: CompilerOptionsValue | undefined;
8705    }
8706    /**
8707     *  Configure request; value of command field is "configure".  Specifies
8708     *  host information, such as host type, tab size, and indent size.
8709     */
8710    interface ConfigureRequest extends Request {
8711        command: CommandTypes.Configure;
8712        arguments: ConfigureRequestArguments;
8713    }
8714    /**
8715     * Response to "configure" request.  This is just an acknowledgement, so
8716     * no body field is required.
8717     */
8718    interface ConfigureResponse extends Response {
8719    }
8720    interface ConfigurePluginRequestArguments {
8721        pluginName: string;
8722        configuration: any;
8723    }
8724    interface ConfigurePluginRequest extends Request {
8725        command: CommandTypes.ConfigurePlugin;
8726        arguments: ConfigurePluginRequestArguments;
8727    }
8728    interface ConfigurePluginResponse extends Response {
8729    }
8730    interface SelectionRangeRequest extends FileRequest {
8731        command: CommandTypes.SelectionRange;
8732        arguments: SelectionRangeRequestArgs;
8733    }
8734    interface SelectionRangeRequestArgs extends FileRequestArgs {
8735        locations: Location[];
8736    }
8737    interface SelectionRangeResponse extends Response {
8738        body?: SelectionRange[];
8739    }
8740    interface SelectionRange {
8741        textSpan: TextSpan;
8742        parent?: SelectionRange;
8743    }
8744    interface ToggleLineCommentRequest extends FileRequest {
8745        command: CommandTypes.ToggleLineComment;
8746        arguments: FileRangeRequestArgs;
8747    }
8748    interface ToggleMultilineCommentRequest extends FileRequest {
8749        command: CommandTypes.ToggleMultilineComment;
8750        arguments: FileRangeRequestArgs;
8751    }
8752    interface CommentSelectionRequest extends FileRequest {
8753        command: CommandTypes.CommentSelection;
8754        arguments: FileRangeRequestArgs;
8755    }
8756    interface UncommentSelectionRequest extends FileRequest {
8757        command: CommandTypes.UncommentSelection;
8758        arguments: FileRangeRequestArgs;
8759    }
8760    /**
8761     *  Information found in an "open" request.
8762     */
8763    interface OpenRequestArgs extends FileRequestArgs {
8764        /**
8765         * Used when a version of the file content is known to be more up to date than the one on disk.
8766         * Then the known content will be used upon opening instead of the disk copy
8767         */
8768        fileContent?: string;
8769        /**
8770         * Used to specify the script kind of the file explicitly. It could be one of the following:
8771         *      "TS", "JS", "TSX", "JSX"
8772         */
8773        scriptKindName?: ScriptKindName;
8774        /**
8775         * Used to limit the searching for project config file. If given the searching will stop at this
8776         * root path; otherwise it will go all the way up to the dist root path.
8777         */
8778        projectRootPath?: string;
8779    }
8780    type ScriptKindName = "TS" | "JS" | "TSX" | "JSX" | "ETS";
8781    /**
8782     * Open request; value of command field is "open". Notify the
8783     * server that the client has file open.  The server will not
8784     * monitor the filesystem for changes in this file and will assume
8785     * that the client is updating the server (using the change and/or
8786     * reload messages) when the file changes. Server does not currently
8787     * send a response to an open request.
8788     */
8789    interface OpenRequest extends Request {
8790        command: CommandTypes.Open;
8791        arguments: OpenRequestArgs;
8792    }
8793    /**
8794     * Request to open or update external project
8795     */
8796    interface OpenExternalProjectRequest extends Request {
8797        command: CommandTypes.OpenExternalProject;
8798        arguments: OpenExternalProjectArgs;
8799    }
8800    /**
8801     * Arguments to OpenExternalProjectRequest request
8802     */
8803    type OpenExternalProjectArgs = ExternalProject;
8804    /**
8805     * Request to open multiple external projects
8806     */
8807    interface OpenExternalProjectsRequest extends Request {
8808        command: CommandTypes.OpenExternalProjects;
8809        arguments: OpenExternalProjectsArgs;
8810    }
8811    /**
8812     * Arguments to OpenExternalProjectsRequest
8813     */
8814    interface OpenExternalProjectsArgs {
8815        /**
8816         * List of external projects to open or update
8817         */
8818        projects: ExternalProject[];
8819    }
8820    /**
8821     * Response to OpenExternalProjectRequest request. This is just an acknowledgement, so
8822     * no body field is required.
8823     */
8824    interface OpenExternalProjectResponse extends Response {
8825    }
8826    /**
8827     * Response to OpenExternalProjectsRequest request. This is just an acknowledgement, so
8828     * no body field is required.
8829     */
8830    interface OpenExternalProjectsResponse extends Response {
8831    }
8832    /**
8833     * Request to close external project.
8834     */
8835    interface CloseExternalProjectRequest extends Request {
8836        command: CommandTypes.CloseExternalProject;
8837        arguments: CloseExternalProjectRequestArgs;
8838    }
8839    /**
8840     * Arguments to CloseExternalProjectRequest request
8841     */
8842    interface CloseExternalProjectRequestArgs {
8843        /**
8844         * Name of the project to close
8845         */
8846        projectFileName: string;
8847    }
8848    /**
8849     * Response to CloseExternalProjectRequest request. This is just an acknowledgement, so
8850     * no body field is required.
8851     */
8852    interface CloseExternalProjectResponse extends Response {
8853    }
8854    /**
8855     * Request to synchronize list of open files with the client
8856     */
8857    interface UpdateOpenRequest extends Request {
8858        command: CommandTypes.UpdateOpen;
8859        arguments: UpdateOpenRequestArgs;
8860    }
8861    /**
8862     * Arguments to UpdateOpenRequest
8863     */
8864    interface UpdateOpenRequestArgs {
8865        /**
8866         * List of newly open files
8867         */
8868        openFiles?: OpenRequestArgs[];
8869        /**
8870         * List of open files files that were changes
8871         */
8872        changedFiles?: FileCodeEdits[];
8873        /**
8874         * List of files that were closed
8875         */
8876        closedFiles?: string[];
8877    }
8878    /**
8879     * External projects have a typeAcquisition option so they need to be added separately to compiler options for inferred projects.
8880     */
8881    type InferredProjectCompilerOptions = ExternalProjectCompilerOptions & TypeAcquisition;
8882    /**
8883     * Request to set compiler options for inferred projects.
8884     * External projects are opened / closed explicitly.
8885     * Configured projects are opened when user opens loose file that has 'tsconfig.json' or 'jsconfig.json' anywhere in one of containing folders.
8886     * This configuration file will be used to obtain a list of files and configuration settings for the project.
8887     * Inferred projects are created when user opens a loose file that is not the part of external project
8888     * or configured project and will contain only open file and transitive closure of referenced files if 'useOneInferredProject' is false,
8889     * or all open loose files and its transitive closure of referenced files if 'useOneInferredProject' is true.
8890     */
8891    interface SetCompilerOptionsForInferredProjectsRequest extends Request {
8892        command: CommandTypes.CompilerOptionsForInferredProjects;
8893        arguments: SetCompilerOptionsForInferredProjectsArgs;
8894    }
8895    /**
8896     * Argument for SetCompilerOptionsForInferredProjectsRequest request.
8897     */
8898    interface SetCompilerOptionsForInferredProjectsArgs {
8899        /**
8900         * Compiler options to be used with inferred projects.
8901         */
8902        options: InferredProjectCompilerOptions;
8903        /**
8904         * Specifies the project root path used to scope compiler options.
8905         * It is an error to provide this property if the server has not been started with
8906         * `useInferredProjectPerProjectRoot` enabled.
8907         */
8908        projectRootPath?: string;
8909    }
8910    /**
8911     * Response to SetCompilerOptionsForInferredProjectsResponse request. This is just an acknowledgement, so
8912     * no body field is required.
8913     */
8914    interface SetCompilerOptionsForInferredProjectsResponse extends Response {
8915    }
8916    /**
8917     *  Exit request; value of command field is "exit".  Ask the server process
8918     *  to exit.
8919     */
8920    interface ExitRequest extends Request {
8921        command: CommandTypes.Exit;
8922    }
8923    /**
8924     * Close request; value of command field is "close". Notify the
8925     * server that the client has closed a previously open file.  If
8926     * file is still referenced by open files, the server will resume
8927     * monitoring the filesystem for changes to file.  Server does not
8928     * currently send a response to a close request.
8929     */
8930    interface CloseRequest extends FileRequest {
8931        command: CommandTypes.Close;
8932    }
8933    /**
8934     * Request to obtain the list of files that should be regenerated if target file is recompiled.
8935     * NOTE: this us query-only operation and does not generate any output on disk.
8936     */
8937    interface CompileOnSaveAffectedFileListRequest extends FileRequest {
8938        command: CommandTypes.CompileOnSaveAffectedFileList;
8939    }
8940    /**
8941     * Contains a list of files that should be regenerated in a project
8942     */
8943    interface CompileOnSaveAffectedFileListSingleProject {
8944        /**
8945         * Project name
8946         */
8947        projectFileName: string;
8948        /**
8949         * List of files names that should be recompiled
8950         */
8951        fileNames: string[];
8952        /**
8953         * true if project uses outFile or out compiler option
8954         */
8955        projectUsesOutFile: boolean;
8956    }
8957    /**
8958     * Response for CompileOnSaveAffectedFileListRequest request;
8959     */
8960    interface CompileOnSaveAffectedFileListResponse extends Response {
8961        body: CompileOnSaveAffectedFileListSingleProject[];
8962    }
8963    /**
8964     * Request to recompile the file. All generated outputs (.js, .d.ts or .js.map files) is written on disk.
8965     */
8966    interface CompileOnSaveEmitFileRequest extends FileRequest {
8967        command: CommandTypes.CompileOnSaveEmitFile;
8968        arguments: CompileOnSaveEmitFileRequestArgs;
8969    }
8970    /**
8971     * Arguments for CompileOnSaveEmitFileRequest
8972     */
8973    interface CompileOnSaveEmitFileRequestArgs extends FileRequestArgs {
8974        /**
8975         * if true - then file should be recompiled even if it does not have any changes.
8976         */
8977        forced?: boolean;
8978        includeLinePosition?: boolean;
8979        /** if true - return response as object with emitSkipped and diagnostics */
8980        richResponse?: boolean;
8981    }
8982    interface CompileOnSaveEmitFileResponse extends Response {
8983        body: boolean | EmitResult;
8984    }
8985    interface EmitResult {
8986        emitSkipped: boolean;
8987        diagnostics: Diagnostic[] | DiagnosticWithLinePosition[];
8988    }
8989    /**
8990     * Quickinfo request; value of command field is
8991     * "quickinfo". Return response giving a quick type and
8992     * documentation string for the symbol found in file at location
8993     * line, col.
8994     */
8995    interface QuickInfoRequest extends FileLocationRequest {
8996        command: CommandTypes.Quickinfo;
8997        arguments: FileLocationRequestArgs;
8998    }
8999    /**
9000     * Body of QuickInfoResponse.
9001     */
9002    interface QuickInfoResponseBody {
9003        /**
9004         * The symbol's kind (such as 'className' or 'parameterName' or plain 'text').
9005         */
9006        kind: ScriptElementKind;
9007        /**
9008         * Optional modifiers for the kind (such as 'public').
9009         */
9010        kindModifiers: string;
9011        /**
9012         * Starting file location of symbol.
9013         */
9014        start: Location;
9015        /**
9016         * One past last character of symbol.
9017         */
9018        end: Location;
9019        /**
9020         * Type and kind of symbol.
9021         */
9022        displayString: string;
9023        /**
9024         * Documentation associated with symbol.
9025         * Display parts when UserPreferences.displayPartsForJSDoc is true, flattened to string otherwise.
9026         */
9027        documentation: string | SymbolDisplayPart[];
9028        /**
9029         * JSDoc tags associated with symbol.
9030         */
9031        tags: JSDocTagInfo[];
9032    }
9033    /**
9034     * Quickinfo response message.
9035     */
9036    interface QuickInfoResponse extends Response {
9037        body?: QuickInfoResponseBody;
9038    }
9039    /**
9040     * Arguments for format messages.
9041     */
9042    interface FormatRequestArgs extends FileLocationRequestArgs {
9043        /**
9044         * Last line of range for which to format text in file.
9045         */
9046        endLine: number;
9047        /**
9048         * Character offset on last line of range for which to format text in file.
9049         */
9050        endOffset: number;
9051        /**
9052         * Format options to be used.
9053         */
9054        options?: FormatCodeSettings;
9055    }
9056    /**
9057     * Format request; value of command field is "format".  Return
9058     * response giving zero or more edit instructions.  The edit
9059     * instructions will be sorted in file order.  Applying the edit
9060     * instructions in reverse to file will result in correctly
9061     * reformatted text.
9062     */
9063    interface FormatRequest extends FileLocationRequest {
9064        command: CommandTypes.Format;
9065        arguments: FormatRequestArgs;
9066    }
9067    /**
9068     * Object found in response messages defining an editing
9069     * instruction for a span of text in source code.  The effect of
9070     * this instruction is to replace the text starting at start and
9071     * ending one character before end with newText. For an insertion,
9072     * the text span is empty.  For a deletion, newText is empty.
9073     */
9074    interface CodeEdit {
9075        /**
9076         * First character of the text span to edit.
9077         */
9078        start: Location;
9079        /**
9080         * One character past last character of the text span to edit.
9081         */
9082        end: Location;
9083        /**
9084         * Replace the span defined above with this string (may be
9085         * the empty string).
9086         */
9087        newText: string;
9088    }
9089    interface FileCodeEdits {
9090        fileName: string;
9091        textChanges: CodeEdit[];
9092    }
9093    interface CodeFixResponse extends Response {
9094        /** The code actions that are available */
9095        body?: CodeFixAction[];
9096    }
9097    interface CodeAction {
9098        /** Description of the code action to display in the UI of the editor */
9099        description: string;
9100        /** Text changes to apply to each file as part of the code action */
9101        changes: FileCodeEdits[];
9102        /** A command is an opaque object that should be passed to `ApplyCodeActionCommandRequestArgs` without modification.  */
9103        commands?: {}[];
9104    }
9105    interface CombinedCodeActions {
9106        changes: readonly FileCodeEdits[];
9107        commands?: readonly {}[];
9108    }
9109    interface CodeFixAction extends CodeAction {
9110        /** Short name to identify the fix, for use by telemetry. */
9111        fixName: string;
9112        /**
9113         * If present, one may call 'getCombinedCodeFix' with this fixId.
9114         * This may be omitted to indicate that the code fix can't be applied in a group.
9115         */
9116        fixId?: {};
9117        /** Should be present if and only if 'fixId' is. */
9118        fixAllDescription?: string;
9119    }
9120    /**
9121     * Format and format on key response message.
9122     */
9123    interface FormatResponse extends Response {
9124        body?: CodeEdit[];
9125    }
9126    /**
9127     * Arguments for format on key messages.
9128     */
9129    interface FormatOnKeyRequestArgs extends FileLocationRequestArgs {
9130        /**
9131         * Key pressed (';', '\n', or '}').
9132         */
9133        key: string;
9134        options?: FormatCodeSettings;
9135    }
9136    /**
9137     * Format on key request; value of command field is
9138     * "formatonkey". Given file location and key typed (as string),
9139     * return response giving zero or more edit instructions.  The
9140     * edit instructions will be sorted in file order.  Applying the
9141     * edit instructions in reverse to file will result in correctly
9142     * reformatted text.
9143     */
9144    interface FormatOnKeyRequest extends FileLocationRequest {
9145        command: CommandTypes.Formatonkey;
9146        arguments: FormatOnKeyRequestArgs;
9147    }
9148    type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<" | "#" | " ";
9149    enum CompletionTriggerKind {
9150        /** Completion was triggered by typing an identifier, manual invocation (e.g Ctrl+Space) or via API. */
9151        Invoked = 1,
9152        /** Completion was triggered by a trigger character. */
9153        TriggerCharacter = 2,
9154        /** Completion was re-triggered as the current completion list is incomplete. */
9155        TriggerForIncompleteCompletions = 3
9156    }
9157    /**
9158     * Arguments for completions messages.
9159     */
9160    interface CompletionsRequestArgs extends FileLocationRequestArgs {
9161        /**
9162         * Optional prefix to apply to possible completions.
9163         */
9164        prefix?: string;
9165        /**
9166         * Character that was responsible for triggering completion.
9167         * Should be `undefined` if a user manually requested completion.
9168         */
9169        triggerCharacter?: CompletionsTriggerCharacter;
9170        triggerKind?: CompletionTriggerKind;
9171        /**
9172         * @deprecated Use UserPreferences.includeCompletionsForModuleExports
9173         */
9174        includeExternalModuleExports?: boolean;
9175        /**
9176         * @deprecated Use UserPreferences.includeCompletionsWithInsertText
9177         */
9178        includeInsertTextCompletions?: boolean;
9179    }
9180    interface EtsOptions {
9181        render: {
9182            method: string[];
9183            decorator: string[];
9184        };
9185        components: string[];
9186        libs: string[];
9187        extend: {
9188            decorator: string[];
9189            components: {
9190                name: string;
9191                type: string;
9192                instance: string;
9193            }[];
9194        };
9195        styles: {
9196            decorator: string;
9197            component: {
9198                name: string;
9199                type: string;
9200                instance: string;
9201            };
9202            property: string;
9203        };
9204        concurrent: {
9205            decorator: string;
9206        };
9207        customComponent?: string;
9208        propertyDecorators: {
9209            name: string;
9210            needInitialization: boolean;
9211        }[];
9212        emitDecorators: {
9213            name: string;
9214            emitParameters: boolean;
9215        }[];
9216        syntaxComponents: {
9217            paramsUICallback: string[];
9218            attrUICallback: {
9219                name: string;
9220                attributes: string[];
9221            }[];
9222        };
9223    }
9224    /**
9225     * Completions request; value of command field is "completions".
9226     * Given a file location (file, line, col) and a prefix (which may
9227     * be the empty string), return the possible completions that
9228     * begin with prefix.
9229     */
9230    interface CompletionsRequest extends FileLocationRequest {
9231        command: CommandTypes.Completions | CommandTypes.CompletionInfo;
9232        arguments: CompletionsRequestArgs;
9233    }
9234    /**
9235     * Arguments for completion details request.
9236     */
9237    interface CompletionDetailsRequestArgs extends FileLocationRequestArgs {
9238        /**
9239         * Names of one or more entries for which to obtain details.
9240         */
9241        entryNames: (string | CompletionEntryIdentifier)[];
9242    }
9243    interface CompletionEntryIdentifier {
9244        name: string;
9245        source?: string;
9246        data?: unknown;
9247    }
9248    /**
9249     * Completion entry details request; value of command field is
9250     * "completionEntryDetails".  Given a file location (file, line,
9251     * col) and an array of completion entry names return more
9252     * detailed information for each completion entry.
9253     */
9254    interface CompletionDetailsRequest extends FileLocationRequest {
9255        command: CommandTypes.CompletionDetails;
9256        arguments: CompletionDetailsRequestArgs;
9257    }
9258    /**
9259     * Part of a symbol description.
9260     */
9261    interface SymbolDisplayPart {
9262        /**
9263         * Text of an item describing the symbol.
9264         */
9265        text: string;
9266        /**
9267         * The symbol's kind (such as 'className' or 'parameterName' or plain 'text').
9268         */
9269        kind: string;
9270    }
9271    /** A part of a symbol description that links from a jsdoc @link tag to a declaration */
9272    interface JSDocLinkDisplayPart extends SymbolDisplayPart {
9273        /** The location of the declaration that the @link tag links to. */
9274        target: FileSpan;
9275    }
9276    /**
9277     * An item found in a completion response.
9278     */
9279    interface CompletionEntry {
9280        /**
9281         * The symbol's name.
9282         */
9283        name: string;
9284        /**
9285         * The symbol's kind (such as 'className' or 'parameterName').
9286         */
9287        kind: ScriptElementKind;
9288        /**
9289         * Optional modifiers for the kind (such as 'public').
9290         */
9291        kindModifiers?: string;
9292        /**
9293         * A string that is used for comparing completion items so that they can be ordered.  This
9294         * is often the same as the name but may be different in certain circumstances.
9295         */
9296        sortText: string;
9297        /**
9298         * Text to insert instead of `name`.
9299         * This is used to support bracketed completions; If `name` might be "a-b" but `insertText` would be `["a-b"]`,
9300         * coupled with `replacementSpan` to replace a dotted access with a bracket access.
9301         */
9302        insertText?: string;
9303        /**
9304         * `insertText` should be interpreted as a snippet if true.
9305         */
9306        isSnippet?: true;
9307        /**
9308         * An optional span that indicates the text to be replaced by this completion item.
9309         * If present, this span should be used instead of the default one.
9310         * It will be set if the required span differs from the one generated by the default replacement behavior.
9311         */
9312        replacementSpan?: TextSpan;
9313        /**
9314         * Indicates whether commiting this completion entry will require additional code actions to be
9315         * made to avoid errors. The CompletionEntryDetails will have these actions.
9316         */
9317        hasAction?: true;
9318        /**
9319         * Identifier (not necessarily human-readable) identifying where this completion came from.
9320         */
9321        source?: string;
9322        /**
9323         * Human-readable description of the `source`.
9324         */
9325        sourceDisplay?: SymbolDisplayPart[];
9326        /**
9327         * Additional details for the label.
9328         */
9329        labelDetails?: CompletionEntryLabelDetails;
9330        /**
9331         * If true, this completion should be highlighted as recommended. There will only be one of these.
9332         * This will be set when we know the user should write an expression with a certain type and that type is an enum or constructable class.
9333         * Then either that enum/class or a namespace containing it will be the recommended symbol.
9334         */
9335        isRecommended?: true;
9336        /**
9337         * If true, this completion was generated from traversing the name table of an unchecked JS file,
9338         * and therefore may not be accurate.
9339         */
9340        isFromUncheckedFile?: true;
9341        /**
9342         * If true, this completion was for an auto-import of a module not yet in the program, but listed
9343         * in the project package.json. Used for telemetry reporting.
9344         */
9345        isPackageJsonImport?: true;
9346        /**
9347         * If true, this completion was an auto-import-style completion of an import statement (i.e., the
9348         * module specifier was inserted along with the imported identifier). Used for telemetry reporting.
9349         */
9350        isImportStatementCompletion?: true;
9351        /**
9352         * A property to be sent back to TS Server in the CompletionDetailsRequest, along with `name`,
9353         * that allows TS Server to look up the symbol represented by the completion item, disambiguating
9354         * items with the same name.
9355         */
9356        data?: unknown;
9357        /**
9358         * Js Doc info with symbol.
9359         */
9360        jsDoc?: JsDocTagInfo[];
9361        /**
9362         * Displayparts info with symbol.
9363         */
9364        displayParts?: SymbolDisplayPart[];
9365    }
9366    interface CompletionEntryLabelDetails {
9367        /**
9368         * An optional string which is rendered less prominently directly after
9369         * {@link CompletionEntry.name name}, without any spacing. Should be
9370         * used for function signatures or type annotations.
9371         */
9372        detail?: string;
9373        /**
9374         * An optional string which is rendered less prominently after
9375         * {@link CompletionEntryLabelDetails.detail}. Should be used for fully qualified
9376         * names or file path.
9377         */
9378        description?: string;
9379    }
9380    /**
9381     * Additional completion entry details, available on demand
9382     */
9383    interface CompletionEntryDetails {
9384        /**
9385         * The symbol's name.
9386         */
9387        name: string;
9388        /**
9389         * The symbol's kind (such as 'className' or 'parameterName').
9390         */
9391        kind: ScriptElementKind;
9392        /**
9393         * Optional modifiers for the kind (such as 'public').
9394         */
9395        kindModifiers: string;
9396        /**
9397         * Display parts of the symbol (similar to quick info).
9398         */
9399        displayParts: SymbolDisplayPart[];
9400        /**
9401         * Documentation strings for the symbol.
9402         */
9403        documentation?: SymbolDisplayPart[];
9404        /**
9405         * JSDoc tags for the symbol.
9406         */
9407        tags?: JSDocTagInfo[];
9408        /**
9409         * The associated code actions for this entry
9410         */
9411        codeActions?: CodeAction[];
9412        /**
9413         * @deprecated Use `sourceDisplay` instead.
9414         */
9415        source?: SymbolDisplayPart[];
9416        /**
9417         * Human-readable description of the `source` from the CompletionEntry.
9418         */
9419        sourceDisplay?: SymbolDisplayPart[];
9420    }
9421    /** @deprecated Prefer CompletionInfoResponse, which supports several top-level fields in addition to the array of entries. */
9422    interface CompletionsResponse extends Response {
9423        body?: CompletionEntry[];
9424    }
9425    interface CompletionInfoResponse extends Response {
9426        body?: CompletionInfo;
9427    }
9428    interface CompletionInfo {
9429        readonly flags?: number;
9430        readonly isGlobalCompletion: boolean;
9431        readonly isMemberCompletion: boolean;
9432        readonly isNewIdentifierLocation: boolean;
9433        /**
9434         * In the absence of `CompletionEntry["replacementSpan"]`, the editor may choose whether to use
9435         * this span or its default one. If `CompletionEntry["replacementSpan"]` is defined, that span
9436         * must be used to commit that completion entry.
9437         */
9438        readonly optionalReplacementSpan?: TextSpan;
9439        readonly isIncomplete?: boolean;
9440        readonly entries: readonly CompletionEntry[];
9441    }
9442    interface CompletionDetailsResponse extends Response {
9443        body?: CompletionEntryDetails[];
9444    }
9445    /**
9446     * Signature help information for a single parameter
9447     */
9448    interface SignatureHelpParameter {
9449        /**
9450         * The parameter's name
9451         */
9452        name: string;
9453        /**
9454         * Documentation of the parameter.
9455         */
9456        documentation: SymbolDisplayPart[];
9457        /**
9458         * Display parts of the parameter.
9459         */
9460        displayParts: SymbolDisplayPart[];
9461        /**
9462         * Whether the parameter is optional or not.
9463         */
9464        isOptional: boolean;
9465    }
9466    /**
9467     * Represents a single signature to show in signature help.
9468     */
9469    interface SignatureHelpItem {
9470        /**
9471         * Whether the signature accepts a variable number of arguments.
9472         */
9473        isVariadic: boolean;
9474        /**
9475         * The prefix display parts.
9476         */
9477        prefixDisplayParts: SymbolDisplayPart[];
9478        /**
9479         * The suffix display parts.
9480         */
9481        suffixDisplayParts: SymbolDisplayPart[];
9482        /**
9483         * The separator display parts.
9484         */
9485        separatorDisplayParts: SymbolDisplayPart[];
9486        /**
9487         * The signature helps items for the parameters.
9488         */
9489        parameters: SignatureHelpParameter[];
9490        /**
9491         * The signature's documentation
9492         */
9493        documentation: SymbolDisplayPart[];
9494        /**
9495         * The signature's JSDoc tags
9496         */
9497        tags: JSDocTagInfo[];
9498    }
9499    /**
9500     * Signature help items found in the response of a signature help request.
9501     */
9502    interface SignatureHelpItems {
9503        /**
9504         * The signature help items.
9505         */
9506        items: SignatureHelpItem[];
9507        /**
9508         * The span for which signature help should appear on a signature
9509         */
9510        applicableSpan: TextSpan;
9511        /**
9512         * The item selected in the set of available help items.
9513         */
9514        selectedItemIndex: number;
9515        /**
9516         * The argument selected in the set of parameters.
9517         */
9518        argumentIndex: number;
9519        /**
9520         * The argument count
9521         */
9522        argumentCount: number;
9523    }
9524    type SignatureHelpTriggerCharacter = "," | "(" | "<";
9525    type SignatureHelpRetriggerCharacter = SignatureHelpTriggerCharacter | ")";
9526    /**
9527     * Arguments of a signature help request.
9528     */
9529    interface SignatureHelpRequestArgs extends FileLocationRequestArgs {
9530        /**
9531         * Reason why signature help was invoked.
9532         * See each individual possible
9533         */
9534        triggerReason?: SignatureHelpTriggerReason;
9535    }
9536    type SignatureHelpTriggerReason = SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason | SignatureHelpRetriggeredReason;
9537    /**
9538     * Signals that the user manually requested signature help.
9539     * The language service will unconditionally attempt to provide a result.
9540     */
9541    interface SignatureHelpInvokedReason {
9542        kind: "invoked";
9543        triggerCharacter?: undefined;
9544    }
9545    /**
9546     * Signals that the signature help request came from a user typing a character.
9547     * Depending on the character and the syntactic context, the request may or may not be served a result.
9548     */
9549    interface SignatureHelpCharacterTypedReason {
9550        kind: "characterTyped";
9551        /**
9552         * Character that was responsible for triggering signature help.
9553         */
9554        triggerCharacter: SignatureHelpTriggerCharacter;
9555    }
9556    /**
9557     * Signals that this signature help request came from typing a character or moving the cursor.
9558     * This should only occur if a signature help session was already active and the editor needs to see if it should adjust.
9559     * The language service will unconditionally attempt to provide a result.
9560     * `triggerCharacter` can be `undefined` for a retrigger caused by a cursor move.
9561     */
9562    interface SignatureHelpRetriggeredReason {
9563        kind: "retrigger";
9564        /**
9565         * Character that was responsible for triggering signature help.
9566         */
9567        triggerCharacter?: SignatureHelpRetriggerCharacter;
9568    }
9569    /**
9570     * Signature help request; value of command field is "signatureHelp".
9571     * Given a file location (file, line, col), return the signature
9572     * help.
9573     */
9574    interface SignatureHelpRequest extends FileLocationRequest {
9575        command: CommandTypes.SignatureHelp;
9576        arguments: SignatureHelpRequestArgs;
9577    }
9578    /**
9579     * Response object for a SignatureHelpRequest.
9580     */
9581    interface SignatureHelpResponse extends Response {
9582        body?: SignatureHelpItems;
9583    }
9584    type InlayHintKind = "Type" | "Parameter" | "Enum";
9585    interface InlayHintsRequestArgs extends FileRequestArgs {
9586        /**
9587         * Start position of the span.
9588         */
9589        start: number;
9590        /**
9591         * Length of the span.
9592         */
9593        length: number;
9594    }
9595    interface InlayHintsRequest extends Request {
9596        command: CommandTypes.ProvideInlayHints;
9597        arguments: InlayHintsRequestArgs;
9598    }
9599    interface InlayHintItem {
9600        text: string;
9601        position: Location;
9602        kind: InlayHintKind;
9603        whitespaceBefore?: boolean;
9604        whitespaceAfter?: boolean;
9605    }
9606    interface InlayHintsResponse extends Response {
9607        body?: InlayHintItem[];
9608    }
9609    /**
9610     * Synchronous request for semantic diagnostics of one file.
9611     */
9612    interface SemanticDiagnosticsSyncRequest extends FileRequest {
9613        command: CommandTypes.SemanticDiagnosticsSync;
9614        arguments: SemanticDiagnosticsSyncRequestArgs;
9615    }
9616    interface SemanticDiagnosticsSyncRequestArgs extends FileRequestArgs {
9617        includeLinePosition?: boolean;
9618    }
9619    /**
9620     * Response object for synchronous sematic diagnostics request.
9621     */
9622    interface SemanticDiagnosticsSyncResponse extends Response {
9623        body?: Diagnostic[] | DiagnosticWithLinePosition[];
9624    }
9625    interface SuggestionDiagnosticsSyncRequest extends FileRequest {
9626        command: CommandTypes.SuggestionDiagnosticsSync;
9627        arguments: SuggestionDiagnosticsSyncRequestArgs;
9628    }
9629    type SuggestionDiagnosticsSyncRequestArgs = SemanticDiagnosticsSyncRequestArgs;
9630    type SuggestionDiagnosticsSyncResponse = SemanticDiagnosticsSyncResponse;
9631    /**
9632     * Synchronous request for syntactic diagnostics of one file.
9633     */
9634    interface SyntacticDiagnosticsSyncRequest extends FileRequest {
9635        command: CommandTypes.SyntacticDiagnosticsSync;
9636        arguments: SyntacticDiagnosticsSyncRequestArgs;
9637    }
9638    interface SyntacticDiagnosticsSyncRequestArgs extends FileRequestArgs {
9639        includeLinePosition?: boolean;
9640    }
9641    /**
9642     * Response object for synchronous syntactic diagnostics request.
9643     */
9644    interface SyntacticDiagnosticsSyncResponse extends Response {
9645        body?: Diagnostic[] | DiagnosticWithLinePosition[];
9646    }
9647    /**
9648     * Arguments for GeterrForProject request.
9649     */
9650    interface GeterrForProjectRequestArgs {
9651        /**
9652         * the file requesting project error list
9653         */
9654        file: string;
9655        /**
9656         * Delay in milliseconds to wait before starting to compute
9657         * errors for the files in the file list
9658         */
9659        delay: number;
9660    }
9661    /**
9662     * GeterrForProjectRequest request; value of command field is
9663     * "geterrForProject". It works similarly with 'Geterr', only
9664     * it request for every file in this project.
9665     */
9666    interface GeterrForProjectRequest extends Request {
9667        command: CommandTypes.GeterrForProject;
9668        arguments: GeterrForProjectRequestArgs;
9669    }
9670    /**
9671     * Arguments for geterr messages.
9672     */
9673    interface GeterrRequestArgs {
9674        /**
9675         * List of file names for which to compute compiler errors.
9676         * The files will be checked in list order.
9677         */
9678        files: string[];
9679        /**
9680         * Delay in milliseconds to wait before starting to compute
9681         * errors for the files in the file list
9682         */
9683        delay: number;
9684    }
9685    /**
9686     * Geterr request; value of command field is "geterr". Wait for
9687     * delay milliseconds and then, if during the wait no change or
9688     * reload messages have arrived for the first file in the files
9689     * list, get the syntactic errors for the file, field requests,
9690     * and then get the semantic errors for the file.  Repeat with a
9691     * smaller delay for each subsequent file on the files list.  Best
9692     * practice for an editor is to send a file list containing each
9693     * file that is currently visible, in most-recently-used order.
9694     */
9695    interface GeterrRequest extends Request {
9696        command: CommandTypes.Geterr;
9697        arguments: GeterrRequestArgs;
9698    }
9699    type RequestCompletedEventName = "requestCompleted";
9700    /**
9701     * Event that is sent when server have finished processing request with specified id.
9702     */
9703    interface RequestCompletedEvent extends Event {
9704        event: RequestCompletedEventName;
9705        body: RequestCompletedEventBody;
9706    }
9707    interface RequestCompletedEventBody {
9708        request_seq: number;
9709    }
9710    /**
9711     * Item of diagnostic information found in a DiagnosticEvent message.
9712     */
9713    interface Diagnostic {
9714        /**
9715         * Starting file location at which text applies.
9716         */
9717        start: Location;
9718        /**
9719         * The last file location at which the text applies.
9720         */
9721        end: Location;
9722        /**
9723         * Text of diagnostic message.
9724         */
9725        text: string;
9726        /**
9727         * The category of the diagnostic message, e.g. "error", "warning", or "suggestion".
9728         */
9729        category: string;
9730        reportsUnnecessary?: {};
9731        reportsDeprecated?: {};
9732        /**
9733         * Any related spans the diagnostic may have, such as other locations relevant to an error, such as declarartion sites
9734         */
9735        relatedInformation?: DiagnosticRelatedInformation[];
9736        /**
9737         * The error code of the diagnostic message.
9738         */
9739        code?: number;
9740        /**
9741         * The name of the plugin reporting the message.
9742         */
9743        source?: string;
9744    }
9745    interface DiagnosticWithFileName extends Diagnostic {
9746        /**
9747         * Name of the file the diagnostic is in
9748         */
9749        fileName: string;
9750    }
9751    /**
9752     * Represents additional spans returned with a diagnostic which are relevant to it
9753     */
9754    interface DiagnosticRelatedInformation {
9755        /**
9756         * The category of the related information message, e.g. "error", "warning", or "suggestion".
9757         */
9758        category: string;
9759        /**
9760         * The code used ot identify the related information
9761         */
9762        code: number;
9763        /**
9764         * Text of related or additional information.
9765         */
9766        message: string;
9767        /**
9768         * Associated location
9769         */
9770        span?: FileSpan;
9771    }
9772    interface DiagnosticEventBody {
9773        /**
9774         * The file for which diagnostic information is reported.
9775         */
9776        file: string;
9777        /**
9778         * An array of diagnostic information items.
9779         */
9780        diagnostics: Diagnostic[];
9781    }
9782    type DiagnosticEventKind = "semanticDiag" | "syntaxDiag" | "suggestionDiag";
9783    /**
9784     * Event message for DiagnosticEventKind event types.
9785     * These events provide syntactic and semantic errors for a file.
9786     */
9787    interface DiagnosticEvent extends Event {
9788        body?: DiagnosticEventBody;
9789        event: DiagnosticEventKind;
9790    }
9791    interface ConfigFileDiagnosticEventBody {
9792        /**
9793         * The file which trigged the searching and error-checking of the config file
9794         */
9795        triggerFile: string;
9796        /**
9797         * The name of the found config file.
9798         */
9799        configFile: string;
9800        /**
9801         * An arry of diagnostic information items for the found config file.
9802         */
9803        diagnostics: DiagnosticWithFileName[];
9804    }
9805    /**
9806     * Event message for "configFileDiag" event type.
9807     * This event provides errors for a found config file.
9808     */
9809    interface ConfigFileDiagnosticEvent extends Event {
9810        body?: ConfigFileDiagnosticEventBody;
9811        event: "configFileDiag";
9812    }
9813    type ProjectLanguageServiceStateEventName = "projectLanguageServiceState";
9814    interface ProjectLanguageServiceStateEvent extends Event {
9815        event: ProjectLanguageServiceStateEventName;
9816        body?: ProjectLanguageServiceStateEventBody;
9817    }
9818    interface ProjectLanguageServiceStateEventBody {
9819        /**
9820         * Project name that has changes in the state of language service.
9821         * For configured projects this will be the config file path.
9822         * For external projects this will be the name of the projects specified when project was open.
9823         * For inferred projects this event is not raised.
9824         */
9825        projectName: string;
9826        /**
9827         * True if language service state switched from disabled to enabled
9828         * and false otherwise.
9829         */
9830        languageServiceEnabled: boolean;
9831    }
9832    type ProjectsUpdatedInBackgroundEventName = "projectsUpdatedInBackground";
9833    interface ProjectsUpdatedInBackgroundEvent extends Event {
9834        event: ProjectsUpdatedInBackgroundEventName;
9835        body: ProjectsUpdatedInBackgroundEventBody;
9836    }
9837    interface ProjectsUpdatedInBackgroundEventBody {
9838        /**
9839         * Current set of open files
9840         */
9841        openFiles: string[];
9842    }
9843    type ProjectLoadingStartEventName = "projectLoadingStart";
9844    interface ProjectLoadingStartEvent extends Event {
9845        event: ProjectLoadingStartEventName;
9846        body: ProjectLoadingStartEventBody;
9847    }
9848    interface ProjectLoadingStartEventBody {
9849        /** name of the project */
9850        projectName: string;
9851        /** reason for loading */
9852        reason: string;
9853    }
9854    type ProjectLoadingFinishEventName = "projectLoadingFinish";
9855    interface ProjectLoadingFinishEvent extends Event {
9856        event: ProjectLoadingFinishEventName;
9857        body: ProjectLoadingFinishEventBody;
9858    }
9859    interface ProjectLoadingFinishEventBody {
9860        /** name of the project */
9861        projectName: string;
9862    }
9863    type SurveyReadyEventName = "surveyReady";
9864    interface SurveyReadyEvent extends Event {
9865        event: SurveyReadyEventName;
9866        body: SurveyReadyEventBody;
9867    }
9868    interface SurveyReadyEventBody {
9869        /** Name of the survey. This is an internal machine- and programmer-friendly name */
9870        surveyId: string;
9871    }
9872    type LargeFileReferencedEventName = "largeFileReferenced";
9873    interface LargeFileReferencedEvent extends Event {
9874        event: LargeFileReferencedEventName;
9875        body: LargeFileReferencedEventBody;
9876    }
9877    interface LargeFileReferencedEventBody {
9878        /**
9879         * name of the large file being loaded
9880         */
9881        file: string;
9882        /**
9883         * size of the file
9884         */
9885        fileSize: number;
9886        /**
9887         * max file size allowed on the server
9888         */
9889        maxFileSize: number;
9890    }
9891    /**
9892     * Arguments for reload request.
9893     */
9894    interface ReloadRequestArgs extends FileRequestArgs {
9895        /**
9896         * Name of temporary file from which to reload file
9897         * contents. May be same as file.
9898         */
9899        tmpfile: string;
9900    }
9901    /**
9902     * Reload request message; value of command field is "reload".
9903     * Reload contents of file with name given by the 'file' argument
9904     * from temporary file with name given by the 'tmpfile' argument.
9905     * The two names can be identical.
9906     */
9907    interface ReloadRequest extends FileRequest {
9908        command: CommandTypes.Reload;
9909        arguments: ReloadRequestArgs;
9910    }
9911    /**
9912     * Response to "reload" request. This is just an acknowledgement, so
9913     * no body field is required.
9914     */
9915    interface ReloadResponse extends Response {
9916    }
9917    /**
9918     * Arguments for saveto request.
9919     */
9920    interface SavetoRequestArgs extends FileRequestArgs {
9921        /**
9922         * Name of temporary file into which to save server's view of
9923         * file contents.
9924         */
9925        tmpfile: string;
9926    }
9927    /**
9928     * Saveto request message; value of command field is "saveto".
9929     * For debugging purposes, save to a temporaryfile (named by
9930     * argument 'tmpfile') the contents of file named by argument
9931     * 'file'.  The server does not currently send a response to a
9932     * "saveto" request.
9933     */
9934    interface SavetoRequest extends FileRequest {
9935        command: CommandTypes.Saveto;
9936        arguments: SavetoRequestArgs;
9937    }
9938    /**
9939     * Arguments for navto request message.
9940     */
9941    interface NavtoRequestArgs {
9942        /**
9943         * Search term to navigate to from current location; term can
9944         * be '.*' or an identifier prefix.
9945         */
9946        searchValue: string;
9947        /**
9948         *  Optional limit on the number of items to return.
9949         */
9950        maxResultCount?: number;
9951        /**
9952         * The file for the request (absolute pathname required).
9953         */
9954        file?: string;
9955        /**
9956         * Optional flag to indicate we want results for just the current file
9957         * or the entire project.
9958         */
9959        currentFileOnly?: boolean;
9960        projectFileName?: string;
9961    }
9962    /**
9963     * Navto request message; value of command field is "navto".
9964     * Return list of objects giving file locations and symbols that
9965     * match the search term given in argument 'searchTerm'.  The
9966     * context for the search is given by the named file.
9967     */
9968    interface NavtoRequest extends Request {
9969        command: CommandTypes.Navto;
9970        arguments: NavtoRequestArgs;
9971    }
9972    /**
9973     * An item found in a navto response.
9974     */
9975    interface NavtoItem extends FileSpan {
9976        /**
9977         * The symbol's name.
9978         */
9979        name: string;
9980        /**
9981         * The symbol's kind (such as 'className' or 'parameterName').
9982         */
9983        kind: ScriptElementKind;
9984        /**
9985         * exact, substring, or prefix.
9986         */
9987        matchKind: string;
9988        /**
9989         * If this was a case sensitive or insensitive match.
9990         */
9991        isCaseSensitive: boolean;
9992        /**
9993         * Optional modifiers for the kind (such as 'public').
9994         */
9995        kindModifiers?: string;
9996        /**
9997         * Name of symbol's container symbol (if any); for example,
9998         * the class name if symbol is a class member.
9999         */
10000        containerName?: string;
10001        /**
10002         * Kind of symbol's container symbol (if any).
10003         */
10004        containerKind?: ScriptElementKind;
10005    }
10006    /**
10007     * Navto response message. Body is an array of navto items.  Each
10008     * item gives a symbol that matched the search term.
10009     */
10010    interface NavtoResponse extends Response {
10011        body?: NavtoItem[];
10012    }
10013    /**
10014     * Arguments for change request message.
10015     */
10016    interface ChangeRequestArgs extends FormatRequestArgs {
10017        /**
10018         * Optional string to insert at location (file, line, offset).
10019         */
10020        insertString?: string;
10021    }
10022    /**
10023     * Change request message; value of command field is "change".
10024     * Update the server's view of the file named by argument 'file'.
10025     * Server does not currently send a response to a change request.
10026     */
10027    interface ChangeRequest extends FileLocationRequest {
10028        command: CommandTypes.Change;
10029        arguments: ChangeRequestArgs;
10030    }
10031    /**
10032     * Response to "brace" request.
10033     */
10034    interface BraceResponse extends Response {
10035        body?: TextSpan[];
10036    }
10037    /**
10038     * Brace matching request; value of command field is "brace".
10039     * Return response giving the file locations of matching braces
10040     * found in file at location line, offset.
10041     */
10042    interface BraceRequest extends FileLocationRequest {
10043        command: CommandTypes.Brace;
10044    }
10045    /**
10046     * NavBar items request; value of command field is "navbar".
10047     * Return response giving the list of navigation bar entries
10048     * extracted from the requested file.
10049     */
10050    interface NavBarRequest extends FileRequest {
10051        command: CommandTypes.NavBar;
10052    }
10053    /**
10054     * NavTree request; value of command field is "navtree".
10055     * Return response giving the navigation tree of the requested file.
10056     */
10057    interface NavTreeRequest extends FileRequest {
10058        command: CommandTypes.NavTree;
10059    }
10060    interface NavigationBarItem {
10061        /**
10062         * The item's display text.
10063         */
10064        text: string;
10065        /**
10066         * The symbol's kind (such as 'className' or 'parameterName').
10067         */
10068        kind: ScriptElementKind;
10069        /**
10070         * Optional modifiers for the kind (such as 'public').
10071         */
10072        kindModifiers?: string;
10073        /**
10074         * The definition locations of the item.
10075         */
10076        spans: TextSpan[];
10077        /**
10078         * Optional children.
10079         */
10080        childItems?: NavigationBarItem[];
10081        /**
10082         * Number of levels deep this item should appear.
10083         */
10084        indent: number;
10085    }
10086    /** protocol.NavigationTree is identical to ts.NavigationTree, except using protocol.TextSpan instead of ts.TextSpan */
10087    interface NavigationTree {
10088        text: string;
10089        kind: ScriptElementKind;
10090        kindModifiers: string;
10091        spans: TextSpan[];
10092        nameSpan: TextSpan | undefined;
10093        childItems?: NavigationTree[];
10094    }
10095    type TelemetryEventName = "telemetry";
10096    interface TelemetryEvent extends Event {
10097        event: TelemetryEventName;
10098        body: TelemetryEventBody;
10099    }
10100    interface TelemetryEventBody {
10101        telemetryEventName: string;
10102        payload: any;
10103    }
10104    type TypesInstallerInitializationFailedEventName = "typesInstallerInitializationFailed";
10105    interface TypesInstallerInitializationFailedEvent extends Event {
10106        event: TypesInstallerInitializationFailedEventName;
10107        body: TypesInstallerInitializationFailedEventBody;
10108    }
10109    interface TypesInstallerInitializationFailedEventBody {
10110        message: string;
10111    }
10112    type TypingsInstalledTelemetryEventName = "typingsInstalled";
10113    interface TypingsInstalledTelemetryEventBody extends TelemetryEventBody {
10114        telemetryEventName: TypingsInstalledTelemetryEventName;
10115        payload: TypingsInstalledTelemetryEventPayload;
10116    }
10117    interface TypingsInstalledTelemetryEventPayload {
10118        /**
10119         * Comma separated list of installed typing packages
10120         */
10121        installedPackages: string;
10122        /**
10123         * true if install request succeeded, otherwise - false
10124         */
10125        installSuccess: boolean;
10126        /**
10127         * version of typings installer
10128         */
10129        typingsInstallerVersion: string;
10130    }
10131    type BeginInstallTypesEventName = "beginInstallTypes";
10132    type EndInstallTypesEventName = "endInstallTypes";
10133    interface BeginInstallTypesEvent extends Event {
10134        event: BeginInstallTypesEventName;
10135        body: BeginInstallTypesEventBody;
10136    }
10137    interface EndInstallTypesEvent extends Event {
10138        event: EndInstallTypesEventName;
10139        body: EndInstallTypesEventBody;
10140    }
10141    interface InstallTypesEventBody {
10142        /**
10143         * correlation id to match begin and end events
10144         */
10145        eventId: number;
10146        /**
10147         * list of packages to install
10148         */
10149        packages: readonly string[];
10150    }
10151    interface BeginInstallTypesEventBody extends InstallTypesEventBody {
10152    }
10153    interface EndInstallTypesEventBody extends InstallTypesEventBody {
10154        /**
10155         * true if installation succeeded, otherwise false
10156         */
10157        success: boolean;
10158    }
10159    interface NavBarResponse extends Response {
10160        body?: NavigationBarItem[];
10161    }
10162    interface NavTreeResponse extends Response {
10163        body?: NavigationTree;
10164    }
10165    interface CallHierarchyItem {
10166        name: string;
10167        kind: ScriptElementKind;
10168        kindModifiers?: string;
10169        file: string;
10170        span: TextSpan;
10171        selectionSpan: TextSpan;
10172        containerName?: string;
10173    }
10174    interface CallHierarchyIncomingCall {
10175        from: CallHierarchyItem;
10176        fromSpans: TextSpan[];
10177    }
10178    interface CallHierarchyOutgoingCall {
10179        to: CallHierarchyItem;
10180        fromSpans: TextSpan[];
10181    }
10182    interface PrepareCallHierarchyRequest extends FileLocationRequest {
10183        command: CommandTypes.PrepareCallHierarchy;
10184    }
10185    interface PrepareCallHierarchyResponse extends Response {
10186        readonly body: CallHierarchyItem | CallHierarchyItem[];
10187    }
10188    interface ProvideCallHierarchyIncomingCallsRequest extends FileLocationRequest {
10189        command: CommandTypes.ProvideCallHierarchyIncomingCalls;
10190    }
10191    interface ProvideCallHierarchyIncomingCallsResponse extends Response {
10192        readonly body: CallHierarchyIncomingCall[];
10193    }
10194    interface ProvideCallHierarchyOutgoingCallsRequest extends FileLocationRequest {
10195        command: CommandTypes.ProvideCallHierarchyOutgoingCalls;
10196    }
10197    interface ProvideCallHierarchyOutgoingCallsResponse extends Response {
10198        readonly body: CallHierarchyOutgoingCall[];
10199    }
10200    enum IndentStyle {
10201        None = "None",
10202        Block = "Block",
10203        Smart = "Smart"
10204    }
10205    enum SemicolonPreference {
10206        Ignore = "ignore",
10207        Insert = "insert",
10208        Remove = "remove"
10209    }
10210    interface EditorSettings {
10211        baseIndentSize?: number;
10212        indentSize?: number;
10213        tabSize?: number;
10214        newLineCharacter?: string;
10215        convertTabsToSpaces?: boolean;
10216        indentStyle?: IndentStyle | ts.IndentStyle;
10217        trimTrailingWhitespace?: boolean;
10218    }
10219    interface FormatCodeSettings extends EditorSettings {
10220        insertSpaceAfterCommaDelimiter?: boolean;
10221        insertSpaceAfterSemicolonInForStatements?: boolean;
10222        insertSpaceBeforeAndAfterBinaryOperators?: boolean;
10223        insertSpaceAfterConstructor?: boolean;
10224        insertSpaceAfterKeywordsInControlFlowStatements?: boolean;
10225        insertSpaceAfterFunctionKeywordForAnonymousFunctions?: boolean;
10226        insertSpaceAfterOpeningAndBeforeClosingEmptyBraces?: boolean;
10227        insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean;
10228        insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?: boolean;
10229        insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
10230        insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?: boolean;
10231        insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
10232        insertSpaceAfterTypeAssertion?: boolean;
10233        insertSpaceBeforeFunctionParenthesis?: boolean;
10234        placeOpenBraceOnNewLineForFunctions?: boolean;
10235        placeOpenBraceOnNewLineForControlBlocks?: boolean;
10236        insertSpaceBeforeTypeAnnotation?: boolean;
10237        semicolons?: SemicolonPreference;
10238    }
10239    interface UserPreferences {
10240        readonly disableSuggestions?: boolean;
10241        readonly quotePreference?: "auto" | "double" | "single";
10242        /**
10243         * If enabled, TypeScript will search through all external modules' exports and add them to the completions list.
10244         * This affects lone identifier completions but not completions on the right hand side of `obj.`.
10245         */
10246        readonly includeCompletionsForModuleExports?: boolean;
10247        /**
10248         * Enables auto-import-style completions on partially-typed import statements. E.g., allows
10249         * `import write|` to be completed to `import { writeFile } from "fs"`.
10250         */
10251        readonly includeCompletionsForImportStatements?: boolean;
10252        /**
10253         * Allows completions to be formatted with snippet text, indicated by `CompletionItem["isSnippet"]`.
10254         */
10255        readonly includeCompletionsWithSnippetText?: boolean;
10256        /**
10257         * If enabled, the completion list will include completions with invalid identifier names.
10258         * For those entries, The `insertText` and `replacementSpan` properties will be set to change from `.x` property access to `["x"]`.
10259         */
10260        readonly includeCompletionsWithInsertText?: boolean;
10261        /**
10262         * Unless this option is `false`, or `includeCompletionsWithInsertText` is not enabled,
10263         * member completion lists triggered with `.` will include entries on potentially-null and potentially-undefined
10264         * values, with insertion text to replace preceding `.` tokens with `?.`.
10265         */
10266        readonly includeAutomaticOptionalChainCompletions?: boolean;
10267        /**
10268         * If enabled, completions for class members (e.g. methods and properties) will include
10269         * a whole declaration for the member.
10270         * E.g., `class A { f| }` could be completed to `class A { foo(): number {} }`, instead of
10271         * `class A { foo }`.
10272         */
10273        readonly includeCompletionsWithClassMemberSnippets?: boolean;
10274        /**
10275         * If enabled, object literal methods will have a method declaration completion entry in addition
10276         * to the regular completion entry containing just the method name.
10277         * E.g., `const objectLiteral: T = { f| }` could be completed to `const objectLiteral: T = { foo(): void {} }`,
10278         * in addition to `const objectLiteral: T = { foo }`.
10279         */
10280        readonly includeCompletionsWithObjectLiteralMethodSnippets?: boolean;
10281        /**
10282         * Indicates whether {@link CompletionEntry.labelDetails completion entry label details} are supported.
10283         * If not, contents of `labelDetails` may be included in the {@link CompletionEntry.name} property.
10284         */
10285        readonly useLabelDetailsInCompletionEntries?: boolean;
10286        readonly allowIncompleteCompletions?: boolean;
10287        readonly importModuleSpecifierPreference?: "shortest" | "project-relative" | "relative" | "non-relative";
10288        /** Determines whether we import `foo/index.ts` as "foo", "foo/index", or "foo/index.js" */
10289        readonly importModuleSpecifierEnding?: "auto" | "minimal" | "index" | "js";
10290        readonly allowTextChangesInNewFiles?: boolean;
10291        readonly lazyConfiguredProjectsFromExternalProject?: boolean;
10292        readonly providePrefixAndSuffixTextForRename?: boolean;
10293        readonly provideRefactorNotApplicableReason?: boolean;
10294        readonly allowRenameOfImportPath?: boolean;
10295        readonly includePackageJsonAutoImports?: "auto" | "on" | "off";
10296        readonly jsxAttributeCompletionStyle?: "auto" | "braces" | "none";
10297        readonly displayPartsForJSDoc?: boolean;
10298        readonly generateReturnInDocTemplate?: boolean;
10299        readonly includeInlayParameterNameHints?: "none" | "literals" | "all";
10300        readonly includeInlayParameterNameHintsWhenArgumentMatchesName?: boolean;
10301        readonly includeInlayFunctionParameterTypeHints?: boolean;
10302        readonly includeInlayVariableTypeHints?: boolean;
10303        readonly includeInlayVariableTypeHintsWhenTypeMatchesName?: boolean;
10304        readonly includeInlayPropertyDeclarationTypeHints?: boolean;
10305        readonly includeInlayFunctionLikeReturnTypeHints?: boolean;
10306        readonly includeInlayEnumMemberValueHints?: boolean;
10307        readonly autoImportFileExcludePatterns?: string[];
10308        /**
10309         * Indicates whether {@link ReferencesResponseItem.lineText} is supported.
10310         */
10311        readonly disableLineTextInReferences?: boolean;
10312    }
10313    interface CompilerOptions {
10314        allowJs?: boolean;
10315        allowSyntheticDefaultImports?: boolean;
10316        allowUnreachableCode?: boolean;
10317        allowUnusedLabels?: boolean;
10318        alwaysStrict?: boolean;
10319        baseUrl?: string;
10320        charset?: string;
10321        checkJs?: boolean;
10322        declaration?: boolean;
10323        declarationDir?: string;
10324        disableSizeLimit?: boolean;
10325        downlevelIteration?: boolean;
10326        emitBOM?: boolean;
10327        emitDecoratorMetadata?: boolean;
10328        experimentalDecorators?: boolean;
10329        forceConsistentCasingInFileNames?: boolean;
10330        importHelpers?: boolean;
10331        inlineSourceMap?: boolean;
10332        inlineSources?: boolean;
10333        isolatedModules?: boolean;
10334        jsx?: JsxEmit | ts.JsxEmit;
10335        lib?: string[];
10336        locale?: string;
10337        mapRoot?: string;
10338        maxNodeModuleJsDepth?: number;
10339        module?: ModuleKind | ts.ModuleKind;
10340        moduleResolution?: ModuleResolutionKind | ts.ModuleResolutionKind;
10341        newLine?: NewLineKind | ts.NewLineKind;
10342        noEmit?: boolean;
10343        noEmitHelpers?: boolean;
10344        noEmitOnError?: boolean;
10345        noErrorTruncation?: boolean;
10346        noFallthroughCasesInSwitch?: boolean;
10347        noImplicitAny?: boolean;
10348        noImplicitReturns?: boolean;
10349        noImplicitThis?: boolean;
10350        noUnusedLocals?: boolean;
10351        noUnusedParameters?: boolean;
10352        noImplicitUseStrict?: boolean;
10353        noLib?: boolean;
10354        noResolve?: boolean;
10355        out?: string;
10356        outDir?: string;
10357        outFile?: string;
10358        paths?: MapLike<string[]>;
10359        plugins?: PluginImport[];
10360        preserveConstEnums?: boolean;
10361        preserveSymlinks?: boolean;
10362        project?: string;
10363        reactNamespace?: string;
10364        removeComments?: boolean;
10365        references?: ProjectReference[];
10366        rootDir?: string;
10367        rootDirs?: string[];
10368        skipLibCheck?: boolean;
10369        skipDefaultLibCheck?: boolean;
10370        sourceMap?: boolean;
10371        sourceRoot?: string;
10372        strict?: boolean;
10373        strictNullChecks?: boolean;
10374        suppressExcessPropertyErrors?: boolean;
10375        suppressImplicitAnyIndexErrors?: boolean;
10376        useDefineForClassFields?: boolean;
10377        target?: ScriptTarget | ts.ScriptTarget;
10378        traceResolution?: boolean;
10379        resolveJsonModule?: boolean;
10380        types?: string[];
10381        /** Paths used to used to compute primary types search locations */
10382        typeRoots?: string[];
10383        ets?: EtsOptions;
10384        packageManagerType?: string;
10385        emitNodeModulesFiles?: boolean;
10386        [option: string]: CompilerOptionsValue | undefined;
10387    }
10388    enum JsxEmit {
10389        None = "None",
10390        Preserve = "Preserve",
10391        ReactNative = "ReactNative",
10392        React = "React"
10393    }
10394    enum ModuleKind {
10395        None = "None",
10396        CommonJS = "CommonJS",
10397        AMD = "AMD",
10398        UMD = "UMD",
10399        System = "System",
10400        ES6 = "ES6",
10401        ES2015 = "ES2015",
10402        ESNext = "ESNext"
10403    }
10404    enum ModuleResolutionKind {
10405        Classic = "Classic",
10406        Node = "Node"
10407    }
10408    enum NewLineKind {
10409        Crlf = "Crlf",
10410        Lf = "Lf"
10411    }
10412    enum ScriptTarget {
10413        ES3 = "ES3",
10414        ES5 = "ES5",
10415        ES6 = "ES6",
10416        ES2015 = "ES2015",
10417        ES2016 = "ES2016",
10418        ES2017 = "ES2017",
10419        ES2018 = "ES2018",
10420        ES2019 = "ES2019",
10421        ES2020 = "ES2020",
10422        ES2021 = "ES2021",
10423        ES2022 = "ES2022",
10424        ESNext = "ESNext"
10425    }
10426    enum ClassificationType {
10427        comment = 1,
10428        identifier = 2,
10429        keyword = 3,
10430        numericLiteral = 4,
10431        operator = 5,
10432        stringLiteral = 6,
10433        regularExpressionLiteral = 7,
10434        whiteSpace = 8,
10435        text = 9,
10436        punctuation = 10,
10437        className = 11,
10438        enumName = 12,
10439        interfaceName = 13,
10440        moduleName = 14,
10441        typeParameterName = 15,
10442        typeAliasName = 16,
10443        parameterName = 17,
10444        docCommentTagName = 18,
10445        jsxOpenTagName = 19,
10446        jsxCloseTagName = 20,
10447        jsxSelfClosingTagName = 21,
10448        jsxAttribute = 22,
10449        jsxText = 23,
10450        jsxAttributeStringLiteralValue = 24,
10451        bigintLiteral = 25
10452    }
10453}
10454declare namespace ts.server {
10455    interface ScriptInfoVersion {
10456        svc: number;
10457        text: number;
10458    }
10459    function isDynamicFileName(fileName: NormalizedPath): boolean;
10460    class ScriptInfo {
10461        private readonly host;
10462        readonly fileName: NormalizedPath;
10463        readonly scriptKind: ScriptKind;
10464        readonly hasMixedContent: boolean;
10465        readonly path: Path;
10466        /**
10467         * All projects that include this file
10468         */
10469        readonly containingProjects: Project[];
10470        private formatSettings;
10471        private preferences;
10472        private textStorage;
10473        constructor(host: ServerHost, fileName: NormalizedPath, scriptKind: ScriptKind, hasMixedContent: boolean, path: Path, initialVersion?: ScriptInfoVersion);
10474        isScriptOpen(): boolean;
10475        open(newText: string): void;
10476        close(fileExists?: boolean): void;
10477        getSnapshot(): IScriptSnapshot;
10478        private ensureRealPath;
10479        getFormatCodeSettings(): FormatCodeSettings | undefined;
10480        getPreferences(): protocol.UserPreferences | undefined;
10481        attachToProject(project: Project): boolean;
10482        isAttached(project: Project): boolean;
10483        detachFromProject(project: Project): void;
10484        detachAllProjects(): void;
10485        getDefaultProject(): Project;
10486        registerFileUpdate(): void;
10487        setOptions(formatSettings: FormatCodeSettings, preferences: protocol.UserPreferences | undefined): void;
10488        getLatestVersion(): string;
10489        saveTo(fileName: string): void;
10490        reloadFromFile(tempFileName?: NormalizedPath): boolean;
10491        editContent(start: number, end: number, newText: string): void;
10492        markContainingProjectsAsDirty(): void;
10493        isOrphan(): boolean;
10494        /**
10495         *  @param line 1 based index
10496         */
10497        lineToTextSpan(line: number): TextSpan;
10498        /**
10499         * @param line 1 based index
10500         * @param offset 1 based index
10501         */
10502        lineOffsetToPosition(line: number, offset: number): number;
10503        positionToLineOffset(position: number): protocol.Location;
10504        isJavaScript(): boolean;
10505    }
10506}
10507declare namespace ts.server {
10508    interface InstallPackageOptionsWithProject extends InstallPackageOptions {
10509        projectName: string;
10510        projectRootPath: Path;
10511    }
10512    interface ITypingsInstaller {
10513        isKnownTypesPackageName(name: string): boolean;
10514        installPackage(options: InstallPackageOptionsWithProject): Promise<ApplyCodeActionCommandResult>;
10515        enqueueInstallTypingsRequest(p: Project, typeAcquisition: TypeAcquisition, unresolvedImports: SortedReadonlyArray<string> | undefined): void;
10516        attach(projectService: ProjectService): void;
10517        onProjectClosed(p: Project): void;
10518        readonly globalTypingsCacheLocation: string | undefined;
10519    }
10520    const nullTypingsInstaller: ITypingsInstaller;
10521}
10522declare namespace ts.server {
10523    enum ProjectKind {
10524        Inferred = 0,
10525        Configured = 1,
10526        External = 2,
10527        AutoImportProvider = 3,
10528        Auxiliary = 4
10529    }
10530    function allRootFilesAreJsOrDts(project: Project): boolean;
10531    function allFilesAreJsOrDts(project: Project): boolean;
10532    interface PluginCreateInfo {
10533        project: Project;
10534        languageService: LanguageService;
10535        languageServiceHost: LanguageServiceHost;
10536        serverHost: ServerHost;
10537        session?: Session<unknown>;
10538        config: any;
10539    }
10540    interface PluginModule {
10541        create(createInfo: PluginCreateInfo): LanguageService;
10542        getExternalFiles?(proj: Project): string[];
10543        onConfigurationChanged?(config: any): void;
10544    }
10545    interface PluginModuleWithName {
10546        name: string;
10547        module: PluginModule;
10548    }
10549    type PluginModuleFactory = (mod: {
10550        typescript: typeof ts;
10551    }) => PluginModule;
10552    abstract class Project implements LanguageServiceHost, ModuleResolutionHost {
10553        readonly projectName: string;
10554        readonly projectKind: ProjectKind;
10555        readonly projectService: ProjectService;
10556        private documentRegistry;
10557        private compilerOptions;
10558        compileOnSaveEnabled: boolean;
10559        protected watchOptions: WatchOptions | undefined;
10560        private rootFiles;
10561        private rootFilesMap;
10562        private program;
10563        private externalFiles;
10564        private missingFilesMap;
10565        private generatedFilesMap;
10566        protected languageService: LanguageService;
10567        languageServiceEnabled: boolean;
10568        readonly trace?: (s: string) => void;
10569        readonly realpath?: (path: string) => string;
10570        private builderState;
10571        /**
10572         * Set of files names that were updated since the last call to getChangesSinceVersion.
10573         */
10574        private updatedFileNames;
10575        /**
10576         * Set of files that was returned from the last call to getChangesSinceVersion.
10577         */
10578        private lastReportedFileNames;
10579        /**
10580         * Last version that was reported.
10581         */
10582        private lastReportedVersion;
10583        /**
10584         * Current project's program version. (incremented everytime new program is created that is not complete reuse from the old one)
10585         * This property is changed in 'updateGraph' based on the set of files in program
10586         */
10587        private projectProgramVersion;
10588        /**
10589         * Current version of the project state. It is changed when:
10590         * - new root file was added/removed
10591         * - edit happen in some file that is currently included in the project.
10592         * This property is different from projectStructureVersion since in most cases edits don't affect set of files in the project
10593         */
10594        private projectStateVersion;
10595        protected projectErrors: Diagnostic[] | undefined;
10596        protected isInitialLoadPending: () => boolean;
10597        private readonly cancellationToken;
10598        isNonTsProject(): boolean;
10599        isJsOnlyProject(): boolean;
10600        static resolveModule(moduleName: string, initialDir: string, host: ServerHost, log: (message: string) => void, logErrors?: (message: string) => void): {} | undefined;
10601        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
10602        getJsDocNodeCheckedConfig(jsDocFileCheckedInfo: FileCheckModuleInfo, sourceFilePath: string): JsDocNodeCheckConfig;
10603        getJsDocNodeConditionCheckedResult(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
10604        getTagNameNeededCheckByFile(filePath: string): TagCheckParam;
10605        getExpressionCheckedResultsByFile?(filePath: string, jsDocs: JSDoc[]): ConditionCheckResult;
10606        isKnownTypesPackageName(name: string): boolean;
10607        installPackage(options: InstallPackageOptions): Promise<ApplyCodeActionCommandResult>;
10608        private get typingsCache();
10609        getCompilationSettings(): CompilerOptions;
10610        getCompilerOptions(): CompilerOptions;
10611        getNewLine(): string;
10612        getProjectVersion(): string;
10613        getProjectReferences(): readonly ProjectReference[] | undefined;
10614        getScriptFileNames(): string[];
10615        private getOrCreateScriptInfoAndAttachToProject;
10616        getScriptKind(fileName: string): ScriptKind;
10617        getScriptVersion(filename: string): string;
10618        getScriptSnapshot(filename: string): IScriptSnapshot | undefined;
10619        getCancellationToken(): HostCancellationToken;
10620        getCurrentDirectory(): string;
10621        getDefaultLibFileName(): string;
10622        useCaseSensitiveFileNames(): boolean;
10623        readDirectory(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
10624        readFile(fileName: string): string | undefined;
10625        writeFile(fileName: string, content: string): void;
10626        fileExists(file: string): boolean;
10627        resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference, _options?: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModuleFull | undefined)[];
10628        getModuleResolutionCache(): ModuleResolutionCache | undefined;
10629        getResolvedModuleWithFailedLookupLocationsFromCache(moduleName: string, containingFile: string, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations | undefined;
10630        resolveTypeReferenceDirectives(typeDirectiveNames: string[] | FileReference[], containingFile: string, redirectedReference?: ResolvedProjectReference, _options?: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[];
10631        directoryExists(path: string): boolean;
10632        getDirectories(path: string): string[];
10633        log(s: string): void;
10634        error(s: string): void;
10635        private setInternalCompilerOptionsForEmittingJsFiles;
10636        /**
10637         * Get the errors that dont have any file name associated
10638         */
10639        getGlobalProjectErrors(): readonly Diagnostic[];
10640        /**
10641         * Get all the project errors
10642         */
10643        getAllProjectErrors(): readonly Diagnostic[];
10644        setProjectErrors(projectErrors: Diagnostic[] | undefined): void;
10645        getLanguageService(ensureSynchronized?: boolean): LanguageService;
10646        getCompileOnSaveAffectedFileList(scriptInfo: ScriptInfo): string[];
10647        /**
10648         * Returns true if emit was conducted
10649         */
10650        emitFile(scriptInfo: ScriptInfo, writeFile: (path: string, data: string, writeByteOrderMark?: boolean) => void): EmitResult;
10651        enableLanguageService(): void;
10652        disableLanguageService(lastFileExceededProgramSize?: string): void;
10653        getProjectName(): string;
10654        protected removeLocalTypingsFromTypeAcquisition(newTypeAcquisition: TypeAcquisition): TypeAcquisition;
10655        getExternalFiles(): SortedReadonlyArray<string>;
10656        getSourceFile(path: Path): SourceFile | undefined;
10657        close(): void;
10658        private detachScriptInfoIfNotRoot;
10659        isClosed(): boolean;
10660        hasRoots(): boolean;
10661        getRootFiles(): NormalizedPath[];
10662        getRootScriptInfos(): ScriptInfo[];
10663        getScriptInfos(): ScriptInfo[];
10664        getExcludedFiles(): readonly NormalizedPath[];
10665        getFileNames(excludeFilesFromExternalLibraries?: boolean, excludeConfigFiles?: boolean): NormalizedPath[];
10666        hasConfigFile(configFilePath: NormalizedPath): boolean;
10667        containsScriptInfo(info: ScriptInfo): boolean;
10668        containsFile(filename: NormalizedPath, requireOpen?: boolean): boolean;
10669        isRoot(info: ScriptInfo): boolean;
10670        addRoot(info: ScriptInfo, fileName?: NormalizedPath): void;
10671        addMissingFileRoot(fileName: NormalizedPath): void;
10672        removeFile(info: ScriptInfo, fileExists: boolean, detachFromProject: boolean): void;
10673        registerFileUpdate(fileName: string): void;
10674        markAsDirty(): void;
10675        /**
10676         * Updates set of files that contribute to this project
10677         * @returns: true if set of files in the project stays the same and false - otherwise.
10678         */
10679        updateGraph(): boolean;
10680        protected removeExistingTypings(include: string[]): string[];
10681        private updateGraphWorker;
10682        private detachScriptInfoFromProject;
10683        private addMissingFileWatcher;
10684        private isWatchedMissingFile;
10685        private createGeneratedFileWatcher;
10686        private isValidGeneratedFileWatcher;
10687        private clearGeneratedFileWatch;
10688        getScriptInfoForNormalizedPath(fileName: NormalizedPath): ScriptInfo | undefined;
10689        getScriptInfo(uncheckedFileName: string): ScriptInfo | undefined;
10690        filesToString(writeProjectFileNames: boolean): string;
10691        setCompilerOptions(compilerOptions: CompilerOptions): void;
10692        setTypeAcquisition(newTypeAcquisition: TypeAcquisition | undefined): void;
10693        getTypeAcquisition(): TypeAcquisition;
10694        protected removeRoot(info: ScriptInfo): void;
10695        protected enableGlobalPlugins(options: CompilerOptions, pluginConfigOverrides: Map<any> | undefined): void;
10696        protected enablePlugin(pluginConfigEntry: PluginImport, searchPaths: string[], pluginConfigOverrides: Map<any> | undefined): void;
10697        private enableProxy;
10698        /** Starts a new check for diagnostics. Call this if some file has updated that would cause diagnostics to be changed. */
10699        refreshDiagnostics(): void;
10700    }
10701    /**
10702     * If a file is opened and no tsconfig (or jsconfig) is found,
10703     * the file and its imports/references are put into an InferredProject.
10704     */
10705    class InferredProject extends Project {
10706        private _isJsInferredProject;
10707        toggleJsInferredProject(isJsInferredProject: boolean): void;
10708        setCompilerOptions(options?: CompilerOptions): void;
10709        /** this is canonical project root path */
10710        readonly projectRootPath: string | undefined;
10711        addRoot(info: ScriptInfo): void;
10712        removeRoot(info: ScriptInfo): void;
10713        isProjectWithSingleRoot(): boolean;
10714        close(): void;
10715        getTypeAcquisition(): TypeAcquisition;
10716    }
10717    class AutoImportProviderProject extends Project {
10718        private hostProject;
10719        private rootFileNames;
10720        isOrphan(): boolean;
10721        updateGraph(): boolean;
10722        hasRoots(): boolean;
10723        markAsDirty(): void;
10724        getScriptFileNames(): string[];
10725        getLanguageService(): never;
10726        getModuleResolutionHostForAutoImportProvider(): never;
10727        getProjectReferences(): readonly ProjectReference[] | undefined;
10728        getTypeAcquisition(): TypeAcquisition;
10729    }
10730    /**
10731     * If a file is opened, the server will look for a tsconfig (or jsconfig)
10732     * and if successful create a ConfiguredProject for it.
10733     * Otherwise it will create an InferredProject.
10734     */
10735    class ConfiguredProject extends Project {
10736        readonly canonicalConfigFilePath: NormalizedPath;
10737        /** Ref count to the project when opened from external project */
10738        private externalProjectRefCount;
10739        private projectReferences;
10740        /**
10741         * If the project has reload from disk pending, it reloads (and then updates graph as part of that) instead of just updating the graph
10742         * @returns: true if set of files in the project stays the same and false - otherwise.
10743         */
10744        updateGraph(): boolean;
10745        getConfigFilePath(): NormalizedPath;
10746        getProjectReferences(): readonly ProjectReference[] | undefined;
10747        updateReferences(refs: readonly ProjectReference[] | undefined): void;
10748        /**
10749         * Get the errors that dont have any file name associated
10750         */
10751        getGlobalProjectErrors(): readonly Diagnostic[];
10752        /**
10753         * Get all the project errors
10754         */
10755        getAllProjectErrors(): readonly Diagnostic[];
10756        setProjectErrors(projectErrors: Diagnostic[]): void;
10757        close(): void;
10758        getEffectiveTypeRoots(): string[];
10759    }
10760    /**
10761     * Project whose configuration is handled externally, such as in a '.csproj'.
10762     * These are created only if a host explicitly calls `openExternalProject`.
10763     */
10764    class ExternalProject extends Project {
10765        externalProjectName: string;
10766        compileOnSaveEnabled: boolean;
10767        excludedFiles: readonly NormalizedPath[];
10768        updateGraph(): boolean;
10769        getExcludedFiles(): readonly NormalizedPath[];
10770    }
10771}
10772declare namespace ts.server {
10773    export const maxProgramSizeForNonTsFiles: number;
10774    export const ProjectsUpdatedInBackgroundEvent = "projectsUpdatedInBackground";
10775    export const ProjectLoadingStartEvent = "projectLoadingStart";
10776    export const ProjectLoadingFinishEvent = "projectLoadingFinish";
10777    export const LargeFileReferencedEvent = "largeFileReferenced";
10778    export const ConfigFileDiagEvent = "configFileDiag";
10779    export const ProjectLanguageServiceStateEvent = "projectLanguageServiceState";
10780    export const ProjectInfoTelemetryEvent = "projectInfo";
10781    export const OpenFileInfoTelemetryEvent = "openFileInfo";
10782    export interface ProjectsUpdatedInBackgroundEvent {
10783        eventName: typeof ProjectsUpdatedInBackgroundEvent;
10784        data: {
10785            openFiles: string[];
10786        };
10787    }
10788    export interface ProjectLoadingStartEvent {
10789        eventName: typeof ProjectLoadingStartEvent;
10790        data: {
10791            project: Project;
10792            reason: string;
10793        };
10794    }
10795    export interface ProjectLoadingFinishEvent {
10796        eventName: typeof ProjectLoadingFinishEvent;
10797        data: {
10798            project: Project;
10799        };
10800    }
10801    export interface LargeFileReferencedEvent {
10802        eventName: typeof LargeFileReferencedEvent;
10803        data: {
10804            file: string;
10805            fileSize: number;
10806            maxFileSize: number;
10807        };
10808    }
10809    export interface ConfigFileDiagEvent {
10810        eventName: typeof ConfigFileDiagEvent;
10811        data: {
10812            triggerFile: string;
10813            configFileName: string;
10814            diagnostics: readonly Diagnostic[];
10815        };
10816    }
10817    export interface ProjectLanguageServiceStateEvent {
10818        eventName: typeof ProjectLanguageServiceStateEvent;
10819        data: {
10820            project: Project;
10821            languageServiceEnabled: boolean;
10822        };
10823    }
10824    /** This will be converted to the payload of a protocol.TelemetryEvent in session.defaultEventHandler. */
10825    export interface ProjectInfoTelemetryEvent {
10826        readonly eventName: typeof ProjectInfoTelemetryEvent;
10827        readonly data: ProjectInfoTelemetryEventData;
10828    }
10829    export interface ProjectInfoTelemetryEventData {
10830        /** Cryptographically secure hash of project file location. */
10831        readonly projectId: string;
10832        /** Count of file extensions seen in the project. */
10833        readonly fileStats: FileStats;
10834        /**
10835         * Any compiler options that might contain paths will be taken out.
10836         * Enum compiler options will be converted to strings.
10837         */
10838        readonly compilerOptions: CompilerOptions;
10839        readonly extends: boolean | undefined;
10840        readonly files: boolean | undefined;
10841        readonly include: boolean | undefined;
10842        readonly exclude: boolean | undefined;
10843        readonly compileOnSave: boolean;
10844        readonly typeAcquisition: ProjectInfoTypeAcquisitionData;
10845        readonly configFileName: "tsconfig.json" | "jsconfig.json" | "other";
10846        readonly projectType: "external" | "configured";
10847        readonly languageServiceEnabled: boolean;
10848        /** TypeScript version used by the server. */
10849        readonly version: string;
10850    }
10851    /**
10852     * Info that we may send about a file that was just opened.
10853     * Info about a file will only be sent once per session, even if the file changes in ways that might affect the info.
10854     * Currently this is only sent for '.js' files.
10855     */
10856    export interface OpenFileInfoTelemetryEvent {
10857        readonly eventName: typeof OpenFileInfoTelemetryEvent;
10858        readonly data: OpenFileInfoTelemetryEventData;
10859    }
10860    export interface OpenFileInfoTelemetryEventData {
10861        readonly info: OpenFileInfo;
10862    }
10863    export interface ProjectInfoTypeAcquisitionData {
10864        readonly enable: boolean | undefined;
10865        readonly include: boolean;
10866        readonly exclude: boolean;
10867    }
10868    export interface FileStats {
10869        readonly js: number;
10870        readonly jsSize?: number;
10871        readonly jsx: number;
10872        readonly jsxSize?: number;
10873        readonly ts: number;
10874        readonly tsSize?: number;
10875        readonly tsx: number;
10876        readonly tsxSize?: number;
10877        readonly dts: number;
10878        readonly dtsSize?: number;
10879        readonly deferred: number;
10880        readonly deferredSize?: number;
10881        readonly ets: number;
10882        readonly etsSize?: number;
10883        readonly dets: number;
10884        readonly detsSize?: number;
10885    }
10886    export interface OpenFileInfo {
10887        readonly checkJs: boolean;
10888    }
10889    export type ProjectServiceEvent = LargeFileReferencedEvent | ProjectsUpdatedInBackgroundEvent | ProjectLoadingStartEvent | ProjectLoadingFinishEvent | ConfigFileDiagEvent | ProjectLanguageServiceStateEvent | ProjectInfoTelemetryEvent | OpenFileInfoTelemetryEvent;
10890    export type ProjectServiceEventHandler = (event: ProjectServiceEvent) => void;
10891    export interface SafeList {
10892        [name: string]: {
10893            match: RegExp;
10894            exclude?: (string | number)[][];
10895            types?: string[];
10896        };
10897    }
10898    export interface TypesMapFile {
10899        typesMap: SafeList;
10900        simpleMap: {
10901            [libName: string]: string;
10902        };
10903    }
10904    export function convertFormatOptions(protocolOptions: protocol.FormatCodeSettings): FormatCodeSettings;
10905    export function convertCompilerOptions(protocolOptions: protocol.ExternalProjectCompilerOptions): CompilerOptions & protocol.CompileOnSaveMixin;
10906    export function convertWatchOptions(protocolOptions: protocol.ExternalProjectCompilerOptions, currentDirectory?: string): WatchOptionsAndErrors | undefined;
10907    export function convertTypeAcquisition(protocolOptions: protocol.InferredProjectCompilerOptions): TypeAcquisition | undefined;
10908    export function tryConvertScriptKindName(scriptKindName: protocol.ScriptKindName | ScriptKind): ScriptKind;
10909    export function convertScriptKindName(scriptKindName: protocol.ScriptKindName): ScriptKind.Unknown | ScriptKind.JS | ScriptKind.JSX | ScriptKind.TS | ScriptKind.TSX | ScriptKind.ETS;
10910    export interface HostConfiguration {
10911        formatCodeOptions: FormatCodeSettings;
10912        preferences: protocol.UserPreferences;
10913        hostInfo: string;
10914        extraFileExtensions?: FileExtensionInfo[];
10915        watchOptions?: WatchOptions;
10916    }
10917    export interface OpenConfiguredProjectResult {
10918        configFileName?: NormalizedPath;
10919        configFileErrors?: readonly Diagnostic[];
10920    }
10921    export interface ProjectServiceOptions {
10922        host: ServerHost;
10923        logger: Logger;
10924        cancellationToken: HostCancellationToken;
10925        useSingleInferredProject: boolean;
10926        useInferredProjectPerProjectRoot: boolean;
10927        typingsInstaller: ITypingsInstaller;
10928        eventHandler?: ProjectServiceEventHandler;
10929        suppressDiagnosticEvents?: boolean;
10930        throttleWaitMilliseconds?: number;
10931        globalPlugins?: readonly string[];
10932        pluginProbeLocations?: readonly string[];
10933        allowLocalPluginLoads?: boolean;
10934        typesMapLocation?: string;
10935        /** @deprecated use serverMode instead */
10936        syntaxOnly?: boolean;
10937        serverMode?: LanguageServiceMode;
10938        session: Session<unknown> | undefined;
10939    }
10940    export interface WatchOptionsAndErrors {
10941        watchOptions: WatchOptions;
10942        errors: Diagnostic[] | undefined;
10943    }
10944    export class ProjectService {
10945        private readonly nodeModulesWatchers;
10946        /**
10947         * Contains all the deleted script info's version information so that
10948         * it does not reset when creating script info again
10949         * (and could have potentially collided with version where contents mismatch)
10950         */
10951        private readonly filenameToScriptInfoVersion;
10952        private readonly allJsFilesForOpenFileTelemetry;
10953        /**
10954         * maps external project file name to list of config files that were the part of this project
10955         */
10956        private readonly externalProjectToConfiguredProjectMap;
10957        /**
10958         * external projects (configuration and list of root files is not controlled by tsserver)
10959         */
10960        readonly externalProjects: ExternalProject[];
10961        /**
10962         * projects built from openFileRoots
10963         */
10964        readonly inferredProjects: InferredProject[];
10965        /**
10966         * projects specified by a tsconfig.json file
10967         */
10968        readonly configuredProjects: Map<ConfiguredProject>;
10969        /**
10970         * Open files: with value being project root path, and key being Path of the file that is open
10971         */
10972        readonly openFiles: Map<NormalizedPath | undefined>;
10973        /**
10974         * Map of open files that are opened without complete path but have projectRoot as current directory
10975         */
10976        private readonly openFilesWithNonRootedDiskPath;
10977        private compilerOptionsForInferredProjects;
10978        private compilerOptionsForInferredProjectsPerProjectRoot;
10979        private watchOptionsForInferredProjects;
10980        private watchOptionsForInferredProjectsPerProjectRoot;
10981        private typeAcquisitionForInferredProjects;
10982        private typeAcquisitionForInferredProjectsPerProjectRoot;
10983        /**
10984         * Project size for configured or external projects
10985         */
10986        private readonly projectToSizeMap;
10987        private readonly hostConfiguration;
10988        private safelist;
10989        private readonly legacySafelist;
10990        private pendingProjectUpdates;
10991        readonly currentDirectory: NormalizedPath;
10992        readonly toCanonicalFileName: (f: string) => string;
10993        readonly host: ServerHost;
10994        readonly logger: Logger;
10995        readonly cancellationToken: HostCancellationToken;
10996        readonly useSingleInferredProject: boolean;
10997        readonly useInferredProjectPerProjectRoot: boolean;
10998        readonly typingsInstaller: ITypingsInstaller;
10999        private readonly globalCacheLocationDirectoryPath;
11000        readonly throttleWaitMilliseconds?: number;
11001        private readonly eventHandler?;
11002        private readonly suppressDiagnosticEvents?;
11003        readonly globalPlugins: readonly string[];
11004        readonly pluginProbeLocations: readonly string[];
11005        readonly allowLocalPluginLoads: boolean;
11006        private currentPluginConfigOverrides;
11007        readonly typesMapLocation: string | undefined;
11008        /** @deprecated use serverMode instead */
11009        readonly syntaxOnly: boolean;
11010        readonly serverMode: LanguageServiceMode;
11011        /** Tracks projects that we have already sent telemetry for. */
11012        private readonly seenProjects;
11013        private performanceEventHandler?;
11014        private pendingPluginEnablements?;
11015        private currentPluginEnablementPromise?;
11016        constructor(opts: ProjectServiceOptions);
11017        toPath(fileName: string): Path;
11018        private loadTypesMap;
11019        updateTypingsForProject(response: SetTypings | InvalidateCachedTypings | PackageInstalledResponse): void;
11020        private delayUpdateProjectGraph;
11021        private delayUpdateProjectGraphs;
11022        setCompilerOptionsForInferredProjects(projectCompilerOptions: protocol.InferredProjectCompilerOptions, projectRootPath?: string): void;
11023        findProject(projectName: string): Project | undefined;
11024        getDefaultProjectForFile(fileName: NormalizedPath, ensureProject: boolean): Project | undefined;
11025        private doEnsureDefaultProjectForFile;
11026        getScriptInfoEnsuringProjectsUptoDate(uncheckedFileName: string): ScriptInfo | undefined;
11027        /**
11028         * Ensures the project structures are upto date
11029         * This means,
11030         * - we go through all the projects and update them if they are dirty
11031         * - if updates reflect some change in structure or there was pending request to ensure projects for open files
11032         *   ensure that each open script info has project
11033         */
11034        private ensureProjectStructuresUptoDate;
11035        getFormatCodeOptions(file: NormalizedPath): FormatCodeSettings;
11036        getPreferences(file: NormalizedPath): protocol.UserPreferences;
11037        getHostFormatCodeOptions(): FormatCodeSettings;
11038        getHostPreferences(): protocol.UserPreferences;
11039        private onSourceFileChanged;
11040        private handleSourceMapProjects;
11041        private delayUpdateSourceInfoProjects;
11042        private delayUpdateProjectsOfScriptInfoPath;
11043        private handleDeletedFile;
11044        private removeProject;
11045        private assignOrphanScriptInfosToInferredProject;
11046        /**
11047         * Remove this file from the set of open, non-configured files.
11048         * @param info The file that has been closed or newly configured
11049         */
11050        private closeOpenFile;
11051        private deleteScriptInfo;
11052        private configFileExists;
11053        /**
11054         * Returns true if the configFileExistenceInfo is needed/impacted by open files that are root of inferred project
11055         */
11056        private configFileExistenceImpactsRootOfInferredProject;
11057        /**
11058         * This is called on file close, so that we stop watching the config file for this script info
11059         */
11060        private stopWatchingConfigFilesForClosedScriptInfo;
11061        /**
11062         * This function tries to search for a tsconfig.json for the given file.
11063         * This is different from the method the compiler uses because
11064         * the compiler can assume it will always start searching in the
11065         * current directory (the directory in which tsc was invoked).
11066         * The server must start searching from the directory containing
11067         * the newly opened file.
11068         */
11069        private forEachConfigFileLocation;
11070        /**
11071         * This function tries to search for a tsconfig.json for the given file.
11072         * This is different from the method the compiler uses because
11073         * the compiler can assume it will always start searching in the
11074         * current directory (the directory in which tsc was invoked).
11075         * The server must start searching from the directory containing
11076         * the newly opened file.
11077         * If script info is passed in, it is asserted to be open script info
11078         * otherwise just file name
11079         */
11080        private getConfigFileNameForFile;
11081        private printProjects;
11082        private getConfiguredProjectByCanonicalConfigFilePath;
11083        private findExternalProjectByProjectName;
11084        /** Get a filename if the language service exceeds the maximum allowed program size; otherwise returns undefined. */
11085        private getFilenameForExceededTotalSizeLimitForNonTsFiles;
11086        private createExternalProject;
11087        private addFilesToNonInferredProject;
11088        private updateNonInferredProjectFiles;
11089        private updateRootAndOptionsOfNonInferredProject;
11090        private sendConfigFileDiagEvent;
11091        private getOrCreateInferredProjectForProjectRootPathIfEnabled;
11092        private getOrCreateSingleInferredProjectIfEnabled;
11093        private getOrCreateSingleInferredWithoutProjectRoot;
11094        private createInferredProject;
11095        getScriptInfo(uncheckedFileName: string): ScriptInfo | undefined;
11096        private watchClosedScriptInfo;
11097        private createNodeModulesWatcher;
11098        private watchClosedScriptInfoInNodeModules;
11099        private getModifiedTime;
11100        private refreshScriptInfo;
11101        private refreshScriptInfosInDirectory;
11102        private stopWatchingScriptInfo;
11103        private getOrCreateScriptInfoNotOpenedByClientForNormalizedPath;
11104        private getOrCreateScriptInfoOpenedByClientForNormalizedPath;
11105        getOrCreateScriptInfoForNormalizedPath(fileName: NormalizedPath, openedByClient: boolean, fileContent?: string, scriptKind?: ScriptKind, hasMixedContent?: boolean, hostToQueryFileExistsOn?: {
11106            fileExists(path: string): boolean;
11107        }): ScriptInfo | undefined;
11108        private getOrCreateScriptInfoWorker;
11109        /**
11110         * This gets the script info for the normalized path. If the path is not rooted disk path then the open script info with project root context is preferred
11111         */
11112        getScriptInfoForNormalizedPath(fileName: NormalizedPath): ScriptInfo | undefined;
11113        getScriptInfoForPath(fileName: Path): ScriptInfo | undefined;
11114        private addSourceInfoToSourceMap;
11115        private addMissingSourceMapFile;
11116        setHostConfiguration(args: protocol.ConfigureRequestArguments): void;
11117        closeLog(): void;
11118        /**
11119         * This function rebuilds the project for every file opened by the client
11120         * This does not reload contents of open files from disk. But we could do that if needed
11121         */
11122        reloadProjects(): void;
11123        /**
11124         * This function goes through all the openFiles and tries to file the config file for them.
11125         * If the config file is found and it refers to existing project, it reloads it either immediately
11126         * or schedules it for reload depending on delayReload option
11127         * If there is no existing project it just opens the configured project for the config file
11128         * reloadForInfo provides a way to filter out files to reload configured project for
11129         */
11130        private reloadConfiguredProjectForFiles;
11131        /**
11132         * Remove the root of inferred project if script info is part of another project
11133         */
11134        private removeRootOfInferredProjectIfNowPartOfOtherProject;
11135        /**
11136         * This function is to update the project structure for every inferred project.
11137         * It is called on the premise that all the configured projects are
11138         * up to date.
11139         * This will go through open files and assign them to inferred project if open file is not part of any other project
11140         * After that all the inferred project graphs are updated
11141         */
11142        private ensureProjectForOpenFiles;
11143        /**
11144         * Open file whose contents is managed by the client
11145         * @param filename is absolute pathname
11146         * @param fileContent is a known version of the file content that is more up to date than the one on disk
11147         */
11148        openClientFile(fileName: string, fileContent?: string, scriptKind?: ScriptKind, projectRootPath?: string): OpenConfiguredProjectResult;
11149        private findExternalProjectContainingOpenScriptInfo;
11150        private getOrCreateOpenScriptInfo;
11151        private assignProjectToOpenedScriptInfo;
11152        private createAncestorProjects;
11153        private ensureProjectChildren;
11154        private cleanupAfterOpeningFile;
11155        openClientFileWithNormalizedPath(fileName: NormalizedPath, fileContent?: string, scriptKind?: ScriptKind, hasMixedContent?: boolean, projectRootPath?: NormalizedPath): OpenConfiguredProjectResult;
11156        private removeOrphanConfiguredProjects;
11157        private removeOrphanScriptInfos;
11158        private telemetryOnOpenFile;
11159        /**
11160         * Close file whose contents is managed by the client
11161         * @param filename is absolute pathname
11162         */
11163        closeClientFile(uncheckedFileName: string): void;
11164        private collectChanges;
11165        private closeConfiguredProjectReferencedFromExternalProject;
11166        closeExternalProject(uncheckedFileName: string): void;
11167        openExternalProjects(projects: protocol.ExternalProject[]): void;
11168        /** Makes a filename safe to insert in a RegExp */
11169        private static readonly filenameEscapeRegexp;
11170        private static escapeFilenameForRegex;
11171        resetSafeList(): void;
11172        applySafeList(proj: protocol.ExternalProject): NormalizedPath[];
11173        openExternalProject(proj: protocol.ExternalProject): void;
11174        hasDeferredExtension(): boolean;
11175        private enableRequestedPluginsAsync;
11176        private enableRequestedPluginsWorker;
11177        private enableRequestedPluginsForProjectAsync;
11178        configurePlugin(args: protocol.ConfigurePluginRequestArguments): void;
11179    }
11180    export {};
11181}
11182declare namespace ts.server {
11183    interface ServerCancellationToken extends HostCancellationToken {
11184        setRequest(requestId: number): void;
11185        resetRequest(requestId: number): void;
11186    }
11187    const nullCancellationToken: ServerCancellationToken;
11188    interface PendingErrorCheck {
11189        fileName: NormalizedPath;
11190        project: Project;
11191    }
11192    type CommandNames = protocol.CommandTypes;
11193    const CommandNames: any;
11194    function formatMessage<T extends protocol.Message>(msg: T, logger: Logger, byteLength: (s: string, encoding: string) => number, newLine: string): string;
11195    type Event = <T extends object>(body: T, eventName: string) => void;
11196    interface EventSender {
11197        event: Event;
11198    }
11199    interface SessionOptions {
11200        host: ServerHost;
11201        cancellationToken: ServerCancellationToken;
11202        useSingleInferredProject: boolean;
11203        useInferredProjectPerProjectRoot: boolean;
11204        typingsInstaller: ITypingsInstaller;
11205        byteLength: (buf: string, encoding?: string) => number;
11206        hrtime: (start?: number[]) => number[];
11207        logger: Logger;
11208        /**
11209         * If falsy, all events are suppressed.
11210         */
11211        canUseEvents: boolean;
11212        eventHandler?: ProjectServiceEventHandler;
11213        /** Has no effect if eventHandler is also specified. */
11214        suppressDiagnosticEvents?: boolean;
11215        /** @deprecated use serverMode instead */
11216        syntaxOnly?: boolean;
11217        serverMode?: LanguageServiceMode;
11218        throttleWaitMilliseconds?: number;
11219        noGetErrOnBackgroundUpdate?: boolean;
11220        globalPlugins?: readonly string[];
11221        pluginProbeLocations?: readonly string[];
11222        allowLocalPluginLoads?: boolean;
11223        typesMapLocation?: string;
11224    }
11225    class Session<TMessage = string> implements EventSender {
11226        private readonly gcTimer;
11227        protected projectService: ProjectService;
11228        private changeSeq;
11229        private performanceData;
11230        private currentRequestId;
11231        private errorCheck;
11232        protected host: ServerHost;
11233        private readonly cancellationToken;
11234        protected readonly typingsInstaller: ITypingsInstaller;
11235        protected byteLength: (buf: string, encoding?: string) => number;
11236        private hrtime;
11237        protected logger: Logger;
11238        protected canUseEvents: boolean;
11239        private suppressDiagnosticEvents?;
11240        private eventHandler;
11241        private readonly noGetErrOnBackgroundUpdate?;
11242        constructor(opts: SessionOptions);
11243        private sendRequestCompletedEvent;
11244        private addPerformanceData;
11245        private performanceEventHandler;
11246        private defaultEventHandler;
11247        private projectsUpdatedInBackgroundEvent;
11248        logError(err: Error, cmd: string): void;
11249        private logErrorWorker;
11250        send(msg: protocol.Message): void;
11251        protected writeMessage(msg: protocol.Message): void;
11252        event<T extends object>(body: T, eventName: string): void;
11253        /** @deprecated */
11254        output(info: any, cmdName: string, reqSeq?: number, errorMsg?: string): void;
11255        private doOutput;
11256        private semanticCheck;
11257        private syntacticCheck;
11258        private suggestionCheck;
11259        private sendDiagnosticsEvent;
11260        /** It is the caller's responsibility to verify that `!this.suppressDiagnosticEvents`. */
11261        private updateErrorCheck;
11262        private cleanProjects;
11263        private cleanup;
11264        private getEncodedSyntacticClassifications;
11265        private getEncodedSemanticClassifications;
11266        private getProject;
11267        private getConfigFileAndProject;
11268        private getConfigFileDiagnostics;
11269        private convertToDiagnosticsWithLinePositionFromDiagnosticFile;
11270        private getCompilerOptionsDiagnostics;
11271        private convertToDiagnosticsWithLinePosition;
11272        private getDiagnosticsWorker;
11273        private getDefinition;
11274        private mapDefinitionInfoLocations;
11275        private getDefinitionAndBoundSpan;
11276        private findSourceDefinition;
11277        private getEmitOutput;
11278        private mapJSDocTagInfo;
11279        private mapDisplayParts;
11280        private mapSignatureHelpItems;
11281        private mapDefinitionInfo;
11282        private static mapToOriginalLocation;
11283        private toFileSpan;
11284        private toFileSpanWithContext;
11285        private getTypeDefinition;
11286        private mapImplementationLocations;
11287        private getImplementation;
11288        private getOccurrences;
11289        private getSyntacticDiagnosticsSync;
11290        private getSemanticDiagnosticsSync;
11291        private getSuggestionDiagnosticsSync;
11292        private getJsxClosingTag;
11293        private getDocumentHighlights;
11294        private provideInlayHints;
11295        private setCompilerOptionsForInferredProjects;
11296        private getProjectInfo;
11297        private getProjectInfoWorker;
11298        private getRenameInfo;
11299        private getProjects;
11300        private getDefaultProject;
11301        private getRenameLocations;
11302        private mapRenameInfo;
11303        private toSpanGroups;
11304        private getReferences;
11305        private getFileReferences;
11306        /**
11307         * @param fileName is the name of the file to be opened
11308         * @param fileContent is a version of the file content that is known to be more up to date than the one on disk
11309         */
11310        private openClientFile;
11311        private getPosition;
11312        private getPositionInFile;
11313        private getFileAndProject;
11314        private getFileAndLanguageServiceForSyntacticOperation;
11315        private getFileAndProjectWorker;
11316        private getOutliningSpans;
11317        private getTodoComments;
11318        private getDocCommentTemplate;
11319        private getSpanOfEnclosingComment;
11320        private getIndentation;
11321        private getBreakpointStatement;
11322        private getNameOrDottedNameSpan;
11323        private isValidBraceCompletion;
11324        private getQuickInfoWorker;
11325        private getFormattingEditsForRange;
11326        private getFormattingEditsForRangeFull;
11327        private getFormattingEditsForDocumentFull;
11328        private getFormattingEditsAfterKeystrokeFull;
11329        private getFormattingEditsAfterKeystroke;
11330        private getCompletions;
11331        private getCompletionEntryDetails;
11332        private getCompileOnSaveAffectedFileList;
11333        private emitFile;
11334        private getSignatureHelpItems;
11335        private toPendingErrorCheck;
11336        private getDiagnostics;
11337        private change;
11338        private reload;
11339        private saveToTmp;
11340        private closeClientFile;
11341        private mapLocationNavigationBarItems;
11342        private getNavigationBarItems;
11343        private toLocationNavigationTree;
11344        private getNavigationTree;
11345        private getNavigateToItems;
11346        private getFullNavigateToItems;
11347        private getSupportedCodeFixes;
11348        private isLocation;
11349        private extractPositionOrRange;
11350        private getRange;
11351        private getApplicableRefactors;
11352        private getEditsForRefactor;
11353        private organizeImports;
11354        private getEditsForFileRename;
11355        private getCodeFixes;
11356        private getCombinedCodeFix;
11357        private applyCodeActionCommand;
11358        private getStartAndEndPosition;
11359        private mapCodeAction;
11360        private mapCodeFixAction;
11361        private mapTextChangesToCodeEdits;
11362        private mapTextChangeToCodeEdit;
11363        private convertTextChangeToCodeEdit;
11364        private getBraceMatching;
11365        private getDiagnosticsForProject;
11366        private configurePlugin;
11367        private getSmartSelectionRange;
11368        private toggleLineComment;
11369        private toggleMultilineComment;
11370        private commentSelection;
11371        private uncommentSelection;
11372        private mapSelectionRange;
11373        private getScriptInfoFromProjectService;
11374        private toProtocolCallHierarchyItem;
11375        private toProtocolCallHierarchyIncomingCall;
11376        private toProtocolCallHierarchyOutgoingCall;
11377        private prepareCallHierarchy;
11378        private provideCallHierarchyIncomingCalls;
11379        private provideCallHierarchyOutgoingCalls;
11380        getCanonicalFileName(fileName: string): string;
11381        exit(): void;
11382        private notRequired;
11383        private requiredResponse;
11384        private handlers;
11385        addProtocolHandler(command: string, handler: (request: protocol.Request) => HandlerResponse): void;
11386        private setCurrentRequest;
11387        private resetCurrentRequest;
11388        executeWithRequestId<T>(requestId: number, f: () => T): T;
11389        executeCommand(request: protocol.Request): HandlerResponse;
11390        onMessage(message: TMessage): void;
11391        protected parseMessage(message: TMessage): protocol.Request;
11392        protected toStringMessage(message: TMessage): string;
11393        private getFormatOptions;
11394        private getPreferences;
11395        private getHostFormatOptions;
11396        private getHostPreferences;
11397    }
11398    interface HandlerResponse {
11399        response?: {};
11400        responseRequired?: boolean;
11401    }
11402}
11403declare namespace ts {
11404    /** @deprecated Use `factory.createNodeArray` or the factory supplied by your transformation context instead. */
11405    const createNodeArray: <T extends Node>(elements?: readonly T[] | undefined, hasTrailingComma?: boolean | undefined) => NodeArray<T>;
11406    /** @deprecated Use `factory.createNumericLiteral` or the factory supplied by your transformation context instead. */
11407    const createNumericLiteral: (value: string | number, numericLiteralFlags?: TokenFlags | undefined) => NumericLiteral;
11408    /** @deprecated Use `factory.createBigIntLiteral` or the factory supplied by your transformation context instead. */
11409    const createBigIntLiteral: (value: string | PseudoBigInt) => BigIntLiteral;
11410    /** @deprecated Use `factory.createStringLiteral` or the factory supplied by your transformation context instead. */
11411    const createStringLiteral: {
11412        (text: string, isSingleQuote?: boolean | undefined): StringLiteral;
11413        (text: string, isSingleQuote?: boolean | undefined, hasExtendedUnicodeEscape?: boolean | undefined): StringLiteral;
11414    };
11415    /** @deprecated Use `factory.createStringLiteralFromNode` or the factory supplied by your transformation context instead. */
11416    const createStringLiteralFromNode: (sourceNode: PrivateIdentifier | PropertyNameLiteral, isSingleQuote?: boolean | undefined) => StringLiteral;
11417    /** @deprecated Use `factory.createRegularExpressionLiteral` or the factory supplied by your transformation context instead. */
11418    const createRegularExpressionLiteral: (text: string) => RegularExpressionLiteral;
11419    /** @deprecated Use `factory.createLoopVariable` or the factory supplied by your transformation context instead. */
11420    const createLoopVariable: (reservedInNestedScopes?: boolean | undefined) => Identifier;
11421    /** @deprecated Use `factory.createUniqueName` or the factory supplied by your transformation context instead. */
11422    const createUniqueName: (text: string, flags?: GeneratedIdentifierFlags | undefined) => Identifier;
11423    /** @deprecated Use `factory.createPrivateIdentifier` or the factory supplied by your transformation context instead. */
11424    const createPrivateIdentifier: (text: string) => PrivateIdentifier;
11425    /** @deprecated Use `factory.createSuper` or the factory supplied by your transformation context instead. */
11426    const createSuper: () => SuperExpression;
11427    /** @deprecated Use `factory.createThis` or the factory supplied by your transformation context instead. */
11428    const createThis: () => ThisExpression;
11429    /** @deprecated Use `factory.createNull` or the factory supplied by your transformation context instead. */
11430    const createNull: () => NullLiteral;
11431    /** @deprecated Use `factory.createTrue` or the factory supplied by your transformation context instead. */
11432    const createTrue: () => TrueLiteral;
11433    /** @deprecated Use `factory.createFalse` or the factory supplied by your transformation context instead. */
11434    const createFalse: () => FalseLiteral;
11435    /** @deprecated Use `factory.createModifier` or the factory supplied by your transformation context instead. */
11436    const createModifier: <T extends ModifierSyntaxKind>(kind: T) => ModifierToken<T>;
11437    /** @deprecated Use `factory.createModifiersFromModifierFlags` or the factory supplied by your transformation context instead. */
11438    const createModifiersFromModifierFlags: (flags: ModifierFlags) => Modifier[] | undefined;
11439    /** @deprecated Use `factory.createQualifiedName` or the factory supplied by your transformation context instead. */
11440    const createQualifiedName: (left: EntityName, right: string | Identifier) => QualifiedName;
11441    /** @deprecated Use `factory.updateQualifiedName` or the factory supplied by your transformation context instead. */
11442    const updateQualifiedName: (node: QualifiedName, left: EntityName, right: Identifier) => QualifiedName;
11443    /** @deprecated Use `factory.createComputedPropertyName` or the factory supplied by your transformation context instead. */
11444    const createComputedPropertyName: (expression: Expression) => ComputedPropertyName;
11445    /** @deprecated Use `factory.updateComputedPropertyName` or the factory supplied by your transformation context instead. */
11446    const updateComputedPropertyName: (node: ComputedPropertyName, expression: Expression) => ComputedPropertyName;
11447    /** @deprecated Use `factory.createTypeParameterDeclaration` or the factory supplied by your transformation context instead. */
11448    const createTypeParameterDeclaration: {
11449        (modifiers: readonly Modifier[] | undefined, name: string | Identifier, constraint?: TypeNode | undefined, defaultType?: TypeNode | undefined): TypeParameterDeclaration;
11450        (name: string | Identifier, constraint?: TypeNode | undefined, defaultType?: TypeNode | undefined): TypeParameterDeclaration;
11451    };
11452    /** @deprecated Use `factory.updateTypeParameterDeclaration` or the factory supplied by your transformation context instead. */
11453    const updateTypeParameterDeclaration: {
11454        (node: TypeParameterDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration;
11455        (node: TypeParameterDeclaration, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration;
11456    };
11457    /** @deprecated Use `factory.createParameterDeclaration` or the factory supplied by your transformation context instead. */
11458    const createParameter: {
11459        (modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken | undefined, type?: TypeNode | undefined, initializer?: Expression | undefined): ParameterDeclaration;
11460        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken | undefined, type?: TypeNode | undefined, initializer?: Expression | undefined): ParameterDeclaration;
11461    };
11462    /** @deprecated Use `factory.updateParameterDeclaration` or the factory supplied by your transformation context instead. */
11463    const updateParameter: {
11464        (node: ParameterDeclaration, modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): ParameterDeclaration;
11465        (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;
11466    };
11467    /** @deprecated Use `factory.createDecorator` or the factory supplied by your transformation context instead. */
11468    const createDecorator: (expression: Expression) => Decorator;
11469    /** @deprecated Use `factory.updateDecorator` or the factory supplied by your transformation context instead. */
11470    const updateDecorator: (node: Decorator, expression: Expression) => Decorator;
11471    /** @deprecated Use `factory.createPropertyDeclaration` or the factory supplied by your transformation context instead. */
11472    const createProperty: {
11473        (modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
11474        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
11475    };
11476    /** @deprecated Use `factory.updatePropertyDeclaration` or the factory supplied by your transformation context instead. */
11477    const updateProperty: {
11478        (node: PropertyDeclaration, modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
11479        (node: PropertyDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
11480    };
11481    /** @deprecated Use `factory.createMethodDeclaration` or the factory supplied by your transformation context instead. */
11482    const createMethod: {
11483        (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;
11484        (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;
11485    };
11486    /** @deprecated Use `factory.updateMethodDeclaration` or the factory supplied by your transformation context instead. */
11487    const updateMethod: {
11488        (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;
11489        (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;
11490    };
11491    /** @deprecated Use `factory.createConstructorDeclaration` or the factory supplied by your transformation context instead. */
11492    const createConstructor: {
11493        (modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
11494        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
11495    };
11496    /** @deprecated Use `factory.updateConstructorDeclaration` or the factory supplied by your transformation context instead. */
11497    const updateConstructor: {
11498        (node: ConstructorDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
11499        (node: ConstructorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
11500    };
11501    /** @deprecated Use `factory.createGetAccessorDeclaration` or the factory supplied by your transformation context instead. */
11502    const createGetAccessor: {
11503        (modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
11504        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
11505    };
11506    /** @deprecated Use `factory.updateGetAccessorDeclaration` or the factory supplied by your transformation context instead. */
11507    const updateGetAccessor: {
11508        (node: GetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
11509        (node: GetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
11510    };
11511    /** @deprecated Use `factory.createSetAccessorDeclaration` or the factory supplied by your transformation context instead. */
11512    const createSetAccessor: {
11513        (modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
11514        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
11515    };
11516    /** @deprecated Use `factory.updateSetAccessorDeclaration` or the factory supplied by your transformation context instead. */
11517    const updateSetAccessor: {
11518        (node: SetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
11519        (node: SetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
11520    };
11521    /** @deprecated Use `factory.createCallSignature` or the factory supplied by your transformation context instead. */
11522    const createCallSignature: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined) => CallSignatureDeclaration;
11523    /** @deprecated Use `factory.updateCallSignature` or the factory supplied by your transformation context instead. */
11524    const updateCallSignature: (node: CallSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined) => CallSignatureDeclaration;
11525    /** @deprecated Use `factory.createConstructSignature` or the factory supplied by your transformation context instead. */
11526    const createConstructSignature: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined) => ConstructSignatureDeclaration;
11527    /** @deprecated Use `factory.updateConstructSignature` or the factory supplied by your transformation context instead. */
11528    const updateConstructSignature: (node: ConstructSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined) => ConstructSignatureDeclaration;
11529    /** @deprecated Use `factory.updateIndexSignature` or the factory supplied by your transformation context instead. */
11530    const updateIndexSignature: {
11531        (node: IndexSignatureDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
11532        (node: IndexSignatureDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
11533    };
11534    /** @deprecated Use `factory.createKeywordTypeNode` or the factory supplied by your transformation context instead. */
11535    const createKeywordTypeNode: <TKind extends KeywordTypeSyntaxKind>(kind: TKind) => KeywordTypeNode<TKind>;
11536    /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */
11537    const createTypePredicateNodeWithModifier: (assertsModifier: AssertsKeyword | undefined, parameterName: string | Identifier | ThisTypeNode, type: TypeNode | undefined) => TypePredicateNode;
11538    /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */
11539    const updateTypePredicateNodeWithModifier: (node: TypePredicateNode, assertsModifier: AssertsKeyword | undefined, parameterName: Identifier | ThisTypeNode, type: TypeNode | undefined) => TypePredicateNode;
11540    /** @deprecated Use `factory.createTypeReferenceNode` or the factory supplied by your transformation context instead. */
11541    const createTypeReferenceNode: (typeName: string | EntityName, typeArguments?: readonly TypeNode[] | undefined) => TypeReferenceNode;
11542    /** @deprecated Use `factory.updateTypeReferenceNode` or the factory supplied by your transformation context instead. */
11543    const updateTypeReferenceNode: (node: TypeReferenceNode, typeName: EntityName, typeArguments: NodeArray<TypeNode> | undefined) => TypeReferenceNode;
11544    /** @deprecated Use `factory.createFunctionTypeNode` or the factory supplied by your transformation context instead. */
11545    const createFunctionTypeNode: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => FunctionTypeNode;
11546    /** @deprecated Use `factory.updateFunctionTypeNode` or the factory supplied by your transformation context instead. */
11547    const updateFunctionTypeNode: (node: FunctionTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode) => FunctionTypeNode;
11548    /** @deprecated Use `factory.createConstructorTypeNode` or the factory supplied by your transformation context instead. */
11549    const createConstructorTypeNode: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => ConstructorTypeNode;
11550    /** @deprecated Use `factory.updateConstructorTypeNode` or the factory supplied by your transformation context instead. */
11551    const updateConstructorTypeNode: (node: ConstructorTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode) => ConstructorTypeNode;
11552    /** @deprecated Use `factory.createTypeQueryNode` or the factory supplied by your transformation context instead. */
11553    const createTypeQueryNode: (exprName: EntityName, typeArguments?: readonly TypeNode[] | undefined) => TypeQueryNode;
11554    /** @deprecated Use `factory.updateTypeQueryNode` or the factory supplied by your transformation context instead. */
11555    const updateTypeQueryNode: (node: TypeQueryNode, exprName: EntityName, typeArguments?: readonly TypeNode[] | undefined) => TypeQueryNode;
11556    /** @deprecated Use `factory.createTypeLiteralNode` or the factory supplied by your transformation context instead. */
11557    const createTypeLiteralNode: (members: readonly TypeElement[] | undefined) => TypeLiteralNode;
11558    /** @deprecated Use `factory.updateTypeLiteralNode` or the factory supplied by your transformation context instead. */
11559    const updateTypeLiteralNode: (node: TypeLiteralNode, members: NodeArray<TypeElement>) => TypeLiteralNode;
11560    /** @deprecated Use `factory.createArrayTypeNode` or the factory supplied by your transformation context instead. */
11561    const createArrayTypeNode: (elementType: TypeNode) => ArrayTypeNode;
11562    /** @deprecated Use `factory.updateArrayTypeNode` or the factory supplied by your transformation context instead. */
11563    const updateArrayTypeNode: (node: ArrayTypeNode, elementType: TypeNode) => ArrayTypeNode;
11564    /** @deprecated Use `factory.createTupleTypeNode` or the factory supplied by your transformation context instead. */
11565    const createTupleTypeNode: (elements: readonly (TypeNode | NamedTupleMember)[]) => TupleTypeNode;
11566    /** @deprecated Use `factory.updateTupleTypeNode` or the factory supplied by your transformation context instead. */
11567    const updateTupleTypeNode: (node: TupleTypeNode, elements: readonly (TypeNode | NamedTupleMember)[]) => TupleTypeNode;
11568    /** @deprecated Use `factory.createOptionalTypeNode` or the factory supplied by your transformation context instead. */
11569    const createOptionalTypeNode: (type: TypeNode) => OptionalTypeNode;
11570    /** @deprecated Use `factory.updateOptionalTypeNode` or the factory supplied by your transformation context instead. */
11571    const updateOptionalTypeNode: (node: OptionalTypeNode, type: TypeNode) => OptionalTypeNode;
11572    /** @deprecated Use `factory.createRestTypeNode` or the factory supplied by your transformation context instead. */
11573    const createRestTypeNode: (type: TypeNode) => RestTypeNode;
11574    /** @deprecated Use `factory.updateRestTypeNode` or the factory supplied by your transformation context instead. */
11575    const updateRestTypeNode: (node: RestTypeNode, type: TypeNode) => RestTypeNode;
11576    /** @deprecated Use `factory.createUnionTypeNode` or the factory supplied by your transformation context instead. */
11577    const createUnionTypeNode: (types: readonly TypeNode[]) => UnionTypeNode;
11578    /** @deprecated Use `factory.updateUnionTypeNode` or the factory supplied by your transformation context instead. */
11579    const updateUnionTypeNode: (node: UnionTypeNode, types: NodeArray<TypeNode>) => UnionTypeNode;
11580    /** @deprecated Use `factory.createIntersectionTypeNode` or the factory supplied by your transformation context instead. */
11581    const createIntersectionTypeNode: (types: readonly TypeNode[]) => IntersectionTypeNode;
11582    /** @deprecated Use `factory.updateIntersectionTypeNode` or the factory supplied by your transformation context instead. */
11583    const updateIntersectionTypeNode: (node: IntersectionTypeNode, types: NodeArray<TypeNode>) => IntersectionTypeNode;
11584    /** @deprecated Use `factory.createConditionalTypeNode` or the factory supplied by your transformation context instead. */
11585    const createConditionalTypeNode: (checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode) => ConditionalTypeNode;
11586    /** @deprecated Use `factory.updateConditionalTypeNode` or the factory supplied by your transformation context instead. */
11587    const updateConditionalTypeNode: (node: ConditionalTypeNode, checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode) => ConditionalTypeNode;
11588    /** @deprecated Use `factory.createInferTypeNode` or the factory supplied by your transformation context instead. */
11589    const createInferTypeNode: (typeParameter: TypeParameterDeclaration) => InferTypeNode;
11590    /** @deprecated Use `factory.updateInferTypeNode` or the factory supplied by your transformation context instead. */
11591    const updateInferTypeNode: (node: InferTypeNode, typeParameter: TypeParameterDeclaration) => InferTypeNode;
11592    /** @deprecated Use `factory.createImportTypeNode` or the factory supplied by your transformation context instead. */
11593    const createImportTypeNode: {
11594        (argument: TypeNode, assertions?: ImportTypeAssertionContainer | undefined, qualifier?: EntityName | undefined, typeArguments?: readonly TypeNode[] | undefined, isTypeOf?: boolean | undefined): ImportTypeNode;
11595        (argument: TypeNode, assertions?: ImportTypeAssertionContainer | undefined, qualifier?: EntityName | undefined, typeArguments?: readonly TypeNode[] | undefined, isTypeOf?: boolean | undefined): ImportTypeNode;
11596        (argument: TypeNode, qualifier?: EntityName | undefined, typeArguments?: readonly TypeNode[] | undefined, isTypeOf?: boolean | undefined): ImportTypeNode;
11597    };
11598    /** @deprecated Use `factory.updateImportTypeNode` or the factory supplied by your transformation context instead. */
11599    const updateImportTypeNode: {
11600        (node: ImportTypeNode, argument: TypeNode, assertions: ImportTypeAssertionContainer | undefined, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean | undefined): ImportTypeNode;
11601        (node: ImportTypeNode, argument: TypeNode, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean | undefined): ImportTypeNode;
11602    };
11603    /** @deprecated Use `factory.createParenthesizedType` or the factory supplied by your transformation context instead. */
11604    const createParenthesizedType: (type: TypeNode) => ParenthesizedTypeNode;
11605    /** @deprecated Use `factory.updateParenthesizedType` or the factory supplied by your transformation context instead. */
11606    const updateParenthesizedType: (node: ParenthesizedTypeNode, type: TypeNode) => ParenthesizedTypeNode;
11607    /** @deprecated Use `factory.createThisTypeNode` or the factory supplied by your transformation context instead. */
11608    const createThisTypeNode: () => ThisTypeNode;
11609    /** @deprecated Use `factory.updateTypeOperatorNode` or the factory supplied by your transformation context instead. */
11610    const updateTypeOperatorNode: (node: TypeOperatorNode, type: TypeNode) => TypeOperatorNode;
11611    /** @deprecated Use `factory.createIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */
11612    const createIndexedAccessTypeNode: (objectType: TypeNode, indexType: TypeNode) => IndexedAccessTypeNode;
11613    /** @deprecated Use `factory.updateIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */
11614    const updateIndexedAccessTypeNode: (node: IndexedAccessTypeNode, objectType: TypeNode, indexType: TypeNode) => IndexedAccessTypeNode;
11615    /** @deprecated Use `factory.createMappedTypeNode` or the factory supplied by your transformation context instead. */
11616    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;
11617    /** @deprecated Use `factory.updateMappedTypeNode` or the factory supplied by your transformation context instead. */
11618    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;
11619    /** @deprecated Use `factory.createLiteralTypeNode` or the factory supplied by your transformation context instead. */
11620    const createLiteralTypeNode: (literal: LiteralExpression | BooleanLiteral | PrefixUnaryExpression | NullLiteral) => LiteralTypeNode;
11621    /** @deprecated Use `factory.updateLiteralTypeNode` or the factory supplied by your transformation context instead. */
11622    const updateLiteralTypeNode: (node: LiteralTypeNode, literal: LiteralExpression | BooleanLiteral | PrefixUnaryExpression | NullLiteral) => LiteralTypeNode;
11623    /** @deprecated Use `factory.createObjectBindingPattern` or the factory supplied by your transformation context instead. */
11624    const createObjectBindingPattern: (elements: readonly BindingElement[]) => ObjectBindingPattern;
11625    /** @deprecated Use `factory.updateObjectBindingPattern` or the factory supplied by your transformation context instead. */
11626    const updateObjectBindingPattern: (node: ObjectBindingPattern, elements: readonly BindingElement[]) => ObjectBindingPattern;
11627    /** @deprecated Use `factory.createArrayBindingPattern` or the factory supplied by your transformation context instead. */
11628    const createArrayBindingPattern: (elements: readonly ArrayBindingElement[]) => ArrayBindingPattern;
11629    /** @deprecated Use `factory.updateArrayBindingPattern` or the factory supplied by your transformation context instead. */
11630    const updateArrayBindingPattern: (node: ArrayBindingPattern, elements: readonly ArrayBindingElement[]) => ArrayBindingPattern;
11631    /** @deprecated Use `factory.createBindingElement` or the factory supplied by your transformation context instead. */
11632    const createBindingElement: (dotDotDotToken: DotDotDotToken | undefined, propertyName: string | PropertyName | undefined, name: string | BindingName, initializer?: Expression | undefined) => BindingElement;
11633    /** @deprecated Use `factory.updateBindingElement` or the factory supplied by your transformation context instead. */
11634    const updateBindingElement: (node: BindingElement, dotDotDotToken: DotDotDotToken | undefined, propertyName: PropertyName | undefined, name: BindingName, initializer: Expression | undefined) => BindingElement;
11635    /** @deprecated Use `factory.createArrayLiteralExpression` or the factory supplied by your transformation context instead. */
11636    const createArrayLiteral: (elements?: readonly Expression[] | undefined, multiLine?: boolean | undefined) => ArrayLiteralExpression;
11637    /** @deprecated Use `factory.updateArrayLiteralExpression` or the factory supplied by your transformation context instead. */
11638    const updateArrayLiteral: (node: ArrayLiteralExpression, elements: readonly Expression[]) => ArrayLiteralExpression;
11639    /** @deprecated Use `factory.createObjectLiteralExpression` or the factory supplied by your transformation context instead. */
11640    const createObjectLiteral: (properties?: readonly ObjectLiteralElementLike[] | undefined, multiLine?: boolean | undefined) => ObjectLiteralExpression;
11641    /** @deprecated Use `factory.updateObjectLiteralExpression` or the factory supplied by your transformation context instead. */
11642    const updateObjectLiteral: (node: ObjectLiteralExpression, properties: readonly ObjectLiteralElementLike[]) => ObjectLiteralExpression;
11643    /** @deprecated Use `factory.createPropertyAccessExpression` or the factory supplied by your transformation context instead. */
11644    const createPropertyAccess: (expression: Expression, name: string | MemberName) => PropertyAccessExpression;
11645    /** @deprecated Use `factory.updatePropertyAccessExpression` or the factory supplied by your transformation context instead. */
11646    const updatePropertyAccess: (node: PropertyAccessExpression, expression: Expression, name: MemberName) => PropertyAccessExpression;
11647    /** @deprecated Use `factory.createPropertyAccessChain` or the factory supplied by your transformation context instead. */
11648    const createPropertyAccessChain: (expression: Expression, questionDotToken: QuestionDotToken | undefined, name: string | MemberName) => PropertyAccessChain;
11649    /** @deprecated Use `factory.updatePropertyAccessChain` or the factory supplied by your transformation context instead. */
11650    const updatePropertyAccessChain: (node: PropertyAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, name: MemberName) => PropertyAccessChain;
11651    /** @deprecated Use `factory.createElementAccessExpression` or the factory supplied by your transformation context instead. */
11652    const createElementAccess: (expression: Expression, index: number | Expression) => ElementAccessExpression;
11653    /** @deprecated Use `factory.updateElementAccessExpression` or the factory supplied by your transformation context instead. */
11654    const updateElementAccess: (node: ElementAccessExpression, expression: Expression, argumentExpression: Expression) => ElementAccessExpression;
11655    /** @deprecated Use `factory.createElementAccessChain` or the factory supplied by your transformation context instead. */
11656    const createElementAccessChain: (expression: Expression, questionDotToken: QuestionDotToken | undefined, index: number | Expression) => ElementAccessChain;
11657    /** @deprecated Use `factory.updateElementAccessChain` or the factory supplied by your transformation context instead. */
11658    const updateElementAccessChain: (node: ElementAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, argumentExpression: Expression) => ElementAccessChain;
11659    /** @deprecated Use `factory.createCallExpression` or the factory supplied by your transformation context instead. */
11660    const createCall: (expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined) => CallExpression;
11661    /** @deprecated Use `factory.updateCallExpression` or the factory supplied by your transformation context instead. */
11662    const updateCall: (node: CallExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]) => CallExpression;
11663    /** @deprecated Use `factory.createCallChain` or the factory supplied by your transformation context instead. */
11664    const createCallChain: (expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined) => CallChain;
11665    /** @deprecated Use `factory.updateCallChain` or the factory supplied by your transformation context instead. */
11666    const updateCallChain: (node: CallChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]) => CallChain;
11667    /** @deprecated Use `factory.createNewExpression` or the factory supplied by your transformation context instead. */
11668    const createNew: (expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined) => NewExpression;
11669    /** @deprecated Use `factory.updateNewExpression` or the factory supplied by your transformation context instead. */
11670    const updateNew: (node: NewExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined) => NewExpression;
11671    /** @deprecated Use `factory.createTypeAssertion` or the factory supplied by your transformation context instead. */
11672    const createTypeAssertion: (type: TypeNode, expression: Expression) => TypeAssertion;
11673    /** @deprecated Use `factory.updateTypeAssertion` or the factory supplied by your transformation context instead. */
11674    const updateTypeAssertion: (node: TypeAssertion, type: TypeNode, expression: Expression) => TypeAssertion;
11675    /** @deprecated Use `factory.createParenthesizedExpression` or the factory supplied by your transformation context instead. */
11676    const createParen: (expression: Expression) => ParenthesizedExpression;
11677    /** @deprecated Use `factory.updateParenthesizedExpression` or the factory supplied by your transformation context instead. */
11678    const updateParen: (node: ParenthesizedExpression, expression: Expression) => ParenthesizedExpression;
11679    /** @deprecated Use `factory.createFunctionExpression` or the factory supplied by your transformation context instead. */
11680    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;
11681    /** @deprecated Use `factory.updateFunctionExpression` or the factory supplied by your transformation context instead. */
11682    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;
11683    /** @deprecated Use `factory.createDeleteExpression` or the factory supplied by your transformation context instead. */
11684    const createDelete: (expression: Expression) => DeleteExpression;
11685    /** @deprecated Use `factory.updateDeleteExpression` or the factory supplied by your transformation context instead. */
11686    const updateDelete: (node: DeleteExpression, expression: Expression) => DeleteExpression;
11687    /** @deprecated Use `factory.createTypeOfExpression` or the factory supplied by your transformation context instead. */
11688    const createTypeOf: (expression: Expression) => TypeOfExpression;
11689    /** @deprecated Use `factory.updateTypeOfExpression` or the factory supplied by your transformation context instead. */
11690    const updateTypeOf: (node: TypeOfExpression, expression: Expression) => TypeOfExpression;
11691    /** @deprecated Use `factory.createVoidExpression` or the factory supplied by your transformation context instead. */
11692    const createVoid: (expression: Expression) => VoidExpression;
11693    /** @deprecated Use `factory.updateVoidExpression` or the factory supplied by your transformation context instead. */
11694    const updateVoid: (node: VoidExpression, expression: Expression) => VoidExpression;
11695    /** @deprecated Use `factory.createAwaitExpression` or the factory supplied by your transformation context instead. */
11696    const createAwait: (expression: Expression) => AwaitExpression;
11697    /** @deprecated Use `factory.updateAwaitExpression` or the factory supplied by your transformation context instead. */
11698    const updateAwait: (node: AwaitExpression, expression: Expression) => AwaitExpression;
11699    /** @deprecated Use `factory.createPrefixExpression` or the factory supplied by your transformation context instead. */
11700    const createPrefix: (operator: PrefixUnaryOperator, operand: Expression) => PrefixUnaryExpression;
11701    /** @deprecated Use `factory.updatePrefixExpression` or the factory supplied by your transformation context instead. */
11702    const updatePrefix: (node: PrefixUnaryExpression, operand: Expression) => PrefixUnaryExpression;
11703    /** @deprecated Use `factory.createPostfixUnaryExpression` or the factory supplied by your transformation context instead. */
11704    const createPostfix: (operand: Expression, operator: PostfixUnaryOperator) => PostfixUnaryExpression;
11705    /** @deprecated Use `factory.updatePostfixUnaryExpression` or the factory supplied by your transformation context instead. */
11706    const updatePostfix: (node: PostfixUnaryExpression, operand: Expression) => PostfixUnaryExpression;
11707    /** @deprecated Use `factory.createBinaryExpression` or the factory supplied by your transformation context instead. */
11708    const createBinary: (left: Expression, operator: BinaryOperator | BinaryOperatorToken, right: Expression) => BinaryExpression;
11709    /** @deprecated Use `factory.updateConditionalExpression` or the factory supplied by your transformation context instead. */
11710    const updateConditional: (node: ConditionalExpression, condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression) => ConditionalExpression;
11711    /** @deprecated Use `factory.createTemplateExpression` or the factory supplied by your transformation context instead. */
11712    const createTemplateExpression: (head: TemplateHead, templateSpans: readonly TemplateSpan[]) => TemplateExpression;
11713    /** @deprecated Use `factory.updateTemplateExpression` or the factory supplied by your transformation context instead. */
11714    const updateTemplateExpression: (node: TemplateExpression, head: TemplateHead, templateSpans: readonly TemplateSpan[]) => TemplateExpression;
11715    /** @deprecated Use `factory.createTemplateHead` or the factory supplied by your transformation context instead. */
11716    const createTemplateHead: {
11717        (text: string, rawText?: string | undefined, templateFlags?: TokenFlags | undefined): TemplateHead;
11718        (text: string | undefined, rawText: string, templateFlags?: TokenFlags | undefined): TemplateHead;
11719    };
11720    /** @deprecated Use `factory.createTemplateMiddle` or the factory supplied by your transformation context instead. */
11721    const createTemplateMiddle: {
11722        (text: string, rawText?: string | undefined, templateFlags?: TokenFlags | undefined): TemplateMiddle;
11723        (text: string | undefined, rawText: string, templateFlags?: TokenFlags | undefined): TemplateMiddle;
11724    };
11725    /** @deprecated Use `factory.createTemplateTail` or the factory supplied by your transformation context instead. */
11726    const createTemplateTail: {
11727        (text: string, rawText?: string | undefined, templateFlags?: TokenFlags | undefined): TemplateTail;
11728        (text: string | undefined, rawText: string, templateFlags?: TokenFlags | undefined): TemplateTail;
11729    };
11730    /** @deprecated Use `factory.createNoSubstitutionTemplateLiteral` or the factory supplied by your transformation context instead. */
11731    const createNoSubstitutionTemplateLiteral: {
11732        (text: string, rawText?: string | undefined): NoSubstitutionTemplateLiteral;
11733        (text: string | undefined, rawText: string): NoSubstitutionTemplateLiteral;
11734    };
11735    /** @deprecated Use `factory.updateYieldExpression` or the factory supplied by your transformation context instead. */
11736    const updateYield: (node: YieldExpression, asteriskToken: AsteriskToken | undefined, expression: Expression | undefined) => YieldExpression;
11737    /** @deprecated Use `factory.createSpreadExpression` or the factory supplied by your transformation context instead. */
11738    const createSpread: (expression: Expression) => SpreadElement;
11739    /** @deprecated Use `factory.updateSpreadExpression` or the factory supplied by your transformation context instead. */
11740    const updateSpread: (node: SpreadElement, expression: Expression) => SpreadElement;
11741    /** @deprecated Use `factory.createOmittedExpression` or the factory supplied by your transformation context instead. */
11742    const createOmittedExpression: () => OmittedExpression;
11743    /** @deprecated Use `factory.createAsExpression` or the factory supplied by your transformation context instead. */
11744    const createAsExpression: (expression: Expression, type: TypeNode) => AsExpression;
11745    /** @deprecated Use `factory.updateAsExpression` or the factory supplied by your transformation context instead. */
11746    const updateAsExpression: (node: AsExpression, expression: Expression, type: TypeNode) => AsExpression;
11747    /** @deprecated Use `factory.createNonNullExpression` or the factory supplied by your transformation context instead. */
11748    const createNonNullExpression: (expression: Expression) => NonNullExpression;
11749    /** @deprecated Use `factory.updateNonNullExpression` or the factory supplied by your transformation context instead. */
11750    const updateNonNullExpression: (node: NonNullExpression, expression: Expression) => NonNullExpression;
11751    /** @deprecated Use `factory.createNonNullChain` or the factory supplied by your transformation context instead. */
11752    const createNonNullChain: (expression: Expression) => NonNullChain;
11753    /** @deprecated Use `factory.updateNonNullChain` or the factory supplied by your transformation context instead. */
11754    const updateNonNullChain: (node: NonNullChain, expression: Expression) => NonNullChain;
11755    /** @deprecated Use `factory.createMetaProperty` or the factory supplied by your transformation context instead. */
11756    const createMetaProperty: (keywordToken: SyntaxKind.ImportKeyword | SyntaxKind.NewKeyword, name: Identifier) => MetaProperty;
11757    /** @deprecated Use `factory.updateMetaProperty` or the factory supplied by your transformation context instead. */
11758    const updateMetaProperty: (node: MetaProperty, name: Identifier) => MetaProperty;
11759    /** @deprecated Use `factory.createTemplateSpan` or the factory supplied by your transformation context instead. */
11760    const createTemplateSpan: (expression: Expression, literal: TemplateMiddle | TemplateTail) => TemplateSpan;
11761    /** @deprecated Use `factory.updateTemplateSpan` or the factory supplied by your transformation context instead. */
11762    const updateTemplateSpan: (node: TemplateSpan, expression: Expression, literal: TemplateMiddle | TemplateTail) => TemplateSpan;
11763    /** @deprecated Use `factory.createSemicolonClassElement` or the factory supplied by your transformation context instead. */
11764    const createSemicolonClassElement: () => SemicolonClassElement;
11765    /** @deprecated Use `factory.createBlock` or the factory supplied by your transformation context instead. */
11766    const createBlock: (statements: readonly Statement[], multiLine?: boolean | undefined) => Block;
11767    /** @deprecated Use `factory.updateBlock` or the factory supplied by your transformation context instead. */
11768    const updateBlock: (node: Block, statements: readonly Statement[]) => Block;
11769    /** @deprecated Use `factory.createVariableStatement` or the factory supplied by your transformation context instead. */
11770    const createVariableStatement: (modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]) => VariableStatement;
11771    /** @deprecated Use `factory.updateVariableStatement` or the factory supplied by your transformation context instead. */
11772    const updateVariableStatement: (node: VariableStatement, modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList) => VariableStatement;
11773    /** @deprecated Use `factory.createEmptyStatement` or the factory supplied by your transformation context instead. */
11774    const createEmptyStatement: () => EmptyStatement;
11775    /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */
11776    const createExpressionStatement: (expression: Expression) => ExpressionStatement;
11777    /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */
11778    const updateExpressionStatement: (node: ExpressionStatement, expression: Expression) => ExpressionStatement;
11779    /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */
11780    const createStatement: (expression: Expression) => ExpressionStatement;
11781    /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */
11782    const updateStatement: (node: ExpressionStatement, expression: Expression) => ExpressionStatement;
11783    /** @deprecated Use `factory.createIfStatement` or the factory supplied by your transformation context instead. */
11784    const createIf: (expression: Expression, thenStatement: Statement, elseStatement?: Statement | undefined) => IfStatement;
11785    /** @deprecated Use `factory.updateIfStatement` or the factory supplied by your transformation context instead. */
11786    const updateIf: (node: IfStatement, expression: Expression, thenStatement: Statement, elseStatement: Statement | undefined) => IfStatement;
11787    /** @deprecated Use `factory.createDoStatement` or the factory supplied by your transformation context instead. */
11788    const createDo: (statement: Statement, expression: Expression) => DoStatement;
11789    /** @deprecated Use `factory.updateDoStatement` or the factory supplied by your transformation context instead. */
11790    const updateDo: (node: DoStatement, statement: Statement, expression: Expression) => DoStatement;
11791    /** @deprecated Use `factory.createWhileStatement` or the factory supplied by your transformation context instead. */
11792    const createWhile: (expression: Expression, statement: Statement) => WhileStatement;
11793    /** @deprecated Use `factory.updateWhileStatement` or the factory supplied by your transformation context instead. */
11794    const updateWhile: (node: WhileStatement, expression: Expression, statement: Statement) => WhileStatement;
11795    /** @deprecated Use `factory.createForStatement` or the factory supplied by your transformation context instead. */
11796    const createFor: (initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement) => ForStatement;
11797    /** @deprecated Use `factory.updateForStatement` or the factory supplied by your transformation context instead. */
11798    const updateFor: (node: ForStatement, initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement) => ForStatement;
11799    /** @deprecated Use `factory.createForInStatement` or the factory supplied by your transformation context instead. */
11800    const createForIn: (initializer: ForInitializer, expression: Expression, statement: Statement) => ForInStatement;
11801    /** @deprecated Use `factory.updateForInStatement` or the factory supplied by your transformation context instead. */
11802    const updateForIn: (node: ForInStatement, initializer: ForInitializer, expression: Expression, statement: Statement) => ForInStatement;
11803    /** @deprecated Use `factory.createForOfStatement` or the factory supplied by your transformation context instead. */
11804    const createForOf: (awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement) => ForOfStatement;
11805    /** @deprecated Use `factory.updateForOfStatement` or the factory supplied by your transformation context instead. */
11806    const updateForOf: (node: ForOfStatement, awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement) => ForOfStatement;
11807    /** @deprecated Use `factory.createContinueStatement` or the factory supplied by your transformation context instead. */
11808    const createContinue: (label?: string | Identifier | undefined) => ContinueStatement;
11809    /** @deprecated Use `factory.updateContinueStatement` or the factory supplied by your transformation context instead. */
11810    const updateContinue: (node: ContinueStatement, label: Identifier | undefined) => ContinueStatement;
11811    /** @deprecated Use `factory.createBreakStatement` or the factory supplied by your transformation context instead. */
11812    const createBreak: (label?: string | Identifier | undefined) => BreakStatement;
11813    /** @deprecated Use `factory.updateBreakStatement` or the factory supplied by your transformation context instead. */
11814    const updateBreak: (node: BreakStatement, label: Identifier | undefined) => BreakStatement;
11815    /** @deprecated Use `factory.createReturnStatement` or the factory supplied by your transformation context instead. */
11816    const createReturn: (expression?: Expression | undefined) => ReturnStatement;
11817    /** @deprecated Use `factory.updateReturnStatement` or the factory supplied by your transformation context instead. */
11818    const updateReturn: (node: ReturnStatement, expression: Expression | undefined) => ReturnStatement;
11819    /** @deprecated Use `factory.createWithStatement` or the factory supplied by your transformation context instead. */
11820    const createWith: (expression: Expression, statement: Statement) => WithStatement;
11821    /** @deprecated Use `factory.updateWithStatement` or the factory supplied by your transformation context instead. */
11822    const updateWith: (node: WithStatement, expression: Expression, statement: Statement) => WithStatement;
11823    /** @deprecated Use `factory.createSwitchStatement` or the factory supplied by your transformation context instead. */
11824    const createSwitch: (expression: Expression, caseBlock: CaseBlock) => SwitchStatement;
11825    /** @deprecated Use `factory.updateSwitchStatement` or the factory supplied by your transformation context instead. */
11826    const updateSwitch: (node: SwitchStatement, expression: Expression, caseBlock: CaseBlock) => SwitchStatement;
11827    /** @deprecated Use `factory.createLabelStatement` or the factory supplied by your transformation context instead. */
11828    const createLabel: (label: string | Identifier, statement: Statement) => LabeledStatement;
11829    /** @deprecated Use `factory.updateLabelStatement` or the factory supplied by your transformation context instead. */
11830    const updateLabel: (node: LabeledStatement, label: Identifier, statement: Statement) => LabeledStatement;
11831    /** @deprecated Use `factory.createThrowStatement` or the factory supplied by your transformation context instead. */
11832    const createThrow: (expression: Expression) => ThrowStatement;
11833    /** @deprecated Use `factory.updateThrowStatement` or the factory supplied by your transformation context instead. */
11834    const updateThrow: (node: ThrowStatement, expression: Expression) => ThrowStatement;
11835    /** @deprecated Use `factory.createTryStatement` or the factory supplied by your transformation context instead. */
11836    const createTry: (tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined) => TryStatement;
11837    /** @deprecated Use `factory.updateTryStatement` or the factory supplied by your transformation context instead. */
11838    const updateTry: (node: TryStatement, tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined) => TryStatement;
11839    /** @deprecated Use `factory.createDebuggerStatement` or the factory supplied by your transformation context instead. */
11840    const createDebuggerStatement: () => DebuggerStatement;
11841    /** @deprecated Use `factory.createVariableDeclarationList` or the factory supplied by your transformation context instead. */
11842    const createVariableDeclarationList: (declarations: readonly VariableDeclaration[], flags?: NodeFlags | undefined) => VariableDeclarationList;
11843    /** @deprecated Use `factory.updateVariableDeclarationList` or the factory supplied by your transformation context instead. */
11844    const updateVariableDeclarationList: (node: VariableDeclarationList, declarations: readonly VariableDeclaration[]) => VariableDeclarationList;
11845    /** @deprecated Use `factory.createFunctionDeclaration` or the factory supplied by your transformation context instead. */
11846    const createFunctionDeclaration: {
11847        (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;
11848        (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;
11849    };
11850    /** @deprecated Use `factory.updateFunctionDeclaration` or the factory supplied by your transformation context instead. */
11851    const updateFunctionDeclaration: {
11852        (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;
11853        (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;
11854    };
11855    /** @deprecated Use `factory.createClassDeclaration` or the factory supplied by your transformation context instead. */
11856    const createClassDeclaration: {
11857        (modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
11858        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
11859    };
11860    /** @deprecated Use `factory.updateClassDeclaration` or the factory supplied by your transformation context instead. */
11861    const updateClassDeclaration: {
11862        (node: ClassDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
11863        (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;
11864    };
11865    /** @deprecated Use `factory.createInterfaceDeclaration` or the factory supplied by your transformation context instead. */
11866    const createInterfaceDeclaration: {
11867        (modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
11868        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
11869    };
11870    /** @deprecated Use `factory.updateInterfaceDeclaration` or the factory supplied by your transformation context instead. */
11871    const updateInterfaceDeclaration: {
11872        (node: InterfaceDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
11873        (node: InterfaceDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
11874    };
11875    /** @deprecated Use `factory.createTypeAliasDeclaration` or the factory supplied by your transformation context instead. */
11876    const createTypeAliasDeclaration: {
11877        (modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
11878        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
11879    };
11880    /** @deprecated Use `factory.updateTypeAliasDeclaration` or the factory supplied by your transformation context instead. */
11881    const updateTypeAliasDeclaration: {
11882        (node: TypeAliasDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
11883        (node: TypeAliasDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
11884    };
11885    /** @deprecated Use `factory.createEnumDeclaration` or the factory supplied by your transformation context instead. */
11886    const createEnumDeclaration: {
11887        (modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration;
11888        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration;
11889    };
11890    /** @deprecated Use `factory.updateEnumDeclaration` or the factory supplied by your transformation context instead. */
11891    const updateEnumDeclaration: {
11892        (node: EnumDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration;
11893        (node: EnumDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration;
11894    };
11895    /** @deprecated Use `factory.createModuleDeclaration` or the factory supplied by your transformation context instead. */
11896    const createModuleDeclaration: {
11897        (modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags | undefined): ModuleDeclaration;
11898        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags | undefined): ModuleDeclaration;
11899    };
11900    /** @deprecated Use `factory.updateModuleDeclaration` or the factory supplied by your transformation context instead. */
11901    const updateModuleDeclaration: {
11902        (node: ModuleDeclaration, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration;
11903        (node: ModuleDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration;
11904    };
11905    /** @deprecated Use `factory.createModuleBlock` or the factory supplied by your transformation context instead. */
11906    const createModuleBlock: (statements: readonly Statement[]) => ModuleBlock;
11907    /** @deprecated Use `factory.updateModuleBlock` or the factory supplied by your transformation context instead. */
11908    const updateModuleBlock: (node: ModuleBlock, statements: readonly Statement[]) => ModuleBlock;
11909    /** @deprecated Use `factory.createCaseBlock` or the factory supplied by your transformation context instead. */
11910    const createCaseBlock: (clauses: readonly CaseOrDefaultClause[]) => CaseBlock;
11911    /** @deprecated Use `factory.updateCaseBlock` or the factory supplied by your transformation context instead. */
11912    const updateCaseBlock: (node: CaseBlock, clauses: readonly CaseOrDefaultClause[]) => CaseBlock;
11913    /** @deprecated Use `factory.createNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */
11914    const createNamespaceExportDeclaration: (name: string | Identifier) => NamespaceExportDeclaration;
11915    /** @deprecated Use `factory.updateNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */
11916    const updateNamespaceExportDeclaration: (node: NamespaceExportDeclaration, name: Identifier) => NamespaceExportDeclaration;
11917    /** @deprecated Use `factory.createImportEqualsDeclaration` or the factory supplied by your transformation context instead. */
11918    const createImportEqualsDeclaration: {
11919        (modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
11920        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
11921    };
11922    /** @deprecated Use `factory.updateImportEqualsDeclaration` or the factory supplied by your transformation context instead. */
11923    const updateImportEqualsDeclaration: {
11924        (node: ImportEqualsDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
11925        (node: ImportEqualsDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
11926    };
11927    /** @deprecated Use `factory.createImportDeclaration` or the factory supplied by your transformation context instead. */
11928    const createImportDeclaration: {
11929        (modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause | undefined): ImportDeclaration;
11930        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause | undefined): ImportDeclaration;
11931    };
11932    /** @deprecated Use `factory.updateImportDeclaration` or the factory supplied by your transformation context instead. */
11933    const updateImportDeclaration: {
11934        (node: ImportDeclaration, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration;
11935        (node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration;
11936    };
11937    /** @deprecated Use `factory.createNamespaceImport` or the factory supplied by your transformation context instead. */
11938    const createNamespaceImport: (name: Identifier) => NamespaceImport;
11939    /** @deprecated Use `factory.updateNamespaceImport` or the factory supplied by your transformation context instead. */
11940    const updateNamespaceImport: (node: NamespaceImport, name: Identifier) => NamespaceImport;
11941    /** @deprecated Use `factory.createNamedImports` or the factory supplied by your transformation context instead. */
11942    const createNamedImports: (elements: readonly ImportSpecifier[]) => NamedImports;
11943    /** @deprecated Use `factory.updateNamedImports` or the factory supplied by your transformation context instead. */
11944    const updateNamedImports: (node: NamedImports, elements: readonly ImportSpecifier[]) => NamedImports;
11945    /** @deprecated Use `factory.createImportSpecifier` or the factory supplied by your transformation context instead. */
11946    const createImportSpecifier: (isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier) => ImportSpecifier;
11947    /** @deprecated Use `factory.updateImportSpecifier` or the factory supplied by your transformation context instead. */
11948    const updateImportSpecifier: (node: ImportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier) => ImportSpecifier;
11949    /** @deprecated Use `factory.createExportAssignment` or the factory supplied by your transformation context instead. */
11950    const createExportAssignment: {
11951        (modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment;
11952        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment;
11953    };
11954    /** @deprecated Use `factory.updateExportAssignment` or the factory supplied by your transformation context instead. */
11955    const updateExportAssignment: {
11956        (node: ExportAssignment, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment;
11957        (node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment;
11958    };
11959    /** @deprecated Use `factory.createNamedExports` or the factory supplied by your transformation context instead. */
11960    const createNamedExports: (elements: readonly ExportSpecifier[]) => NamedExports;
11961    /** @deprecated Use `factory.updateNamedExports` or the factory supplied by your transformation context instead. */
11962    const updateNamedExports: (node: NamedExports, elements: readonly ExportSpecifier[]) => NamedExports;
11963    /** @deprecated Use `factory.createExportSpecifier` or the factory supplied by your transformation context instead. */
11964    const createExportSpecifier: (isTypeOnly: boolean, propertyName: string | Identifier | undefined, name: string | Identifier) => ExportSpecifier;
11965    /** @deprecated Use `factory.updateExportSpecifier` or the factory supplied by your transformation context instead. */
11966    const updateExportSpecifier: (node: ExportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier) => ExportSpecifier;
11967    /** @deprecated Use `factory.createExternalModuleReference` or the factory supplied by your transformation context instead. */
11968    const createExternalModuleReference: (expression: Expression) => ExternalModuleReference;
11969    /** @deprecated Use `factory.updateExternalModuleReference` or the factory supplied by your transformation context instead. */
11970    const updateExternalModuleReference: (node: ExternalModuleReference, expression: Expression) => ExternalModuleReference;
11971    /** @deprecated Use `factory.createJSDocTypeExpression` or the factory supplied by your transformation context instead. */
11972    const createJSDocTypeExpression: (type: TypeNode) => JSDocTypeExpression;
11973    /** @deprecated Use `factory.createJSDocTypeTag` or the factory supplied by your transformation context instead. */
11974    const createJSDocTypeTag: (tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocTypeTag;
11975    /** @deprecated Use `factory.createJSDocReturnTag` or the factory supplied by your transformation context instead. */
11976    const createJSDocReturnTag: (tagName: Identifier | undefined, typeExpression?: JSDocTypeExpression | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocReturnTag;
11977    /** @deprecated Use `factory.createJSDocThisTag` or the factory supplied by your transformation context instead. */
11978    const createJSDocThisTag: (tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocThisTag;
11979    /** @deprecated Use `factory.createJSDocComment` or the factory supplied by your transformation context instead. */
11980    const createJSDocComment: (comment?: string | NodeArray<JSDocComment> | undefined, tags?: readonly JSDocTag[] | undefined) => JSDoc;
11981    /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */
11982    const createJSDocParameterTag: (tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression | undefined, isNameFirst?: boolean | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocParameterTag;
11983    /** @deprecated Use `factory.createJSDocClassTag` or the factory supplied by your transformation context instead. */
11984    const createJSDocClassTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocClassTag;
11985    /** @deprecated Use `factory.createJSDocAugmentsTag` or the factory supplied by your transformation context instead. */
11986    const createJSDocAugmentsTag: (tagName: Identifier | undefined, className: ExpressionWithTypeArguments & {
11987        readonly expression: Identifier | PropertyAccessEntityNameExpression;
11988    }, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocAugmentsTag;
11989    /** @deprecated Use `factory.createJSDocEnumTag` or the factory supplied by your transformation context instead. */
11990    const createJSDocEnumTag: (tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocEnumTag;
11991    /** @deprecated Use `factory.createJSDocTemplateTag` or the factory supplied by your transformation context instead. */
11992    const createJSDocTemplateTag: (tagName: Identifier | undefined, constraint: JSDocTypeExpression | undefined, typeParameters: readonly TypeParameterDeclaration[], comment?: string | NodeArray<JSDocComment> | undefined) => JSDocTemplateTag;
11993    /** @deprecated Use `factory.createJSDocTypedefTag` or the factory supplied by your transformation context instead. */
11994    const createJSDocTypedefTag: (tagName: Identifier | undefined, typeExpression?: JSDocTypeLiteral | JSDocTypeExpression | undefined, fullName?: Identifier | JSDocNamespaceDeclaration | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocTypedefTag;
11995    /** @deprecated Use `factory.createJSDocCallbackTag` or the factory supplied by your transformation context instead. */
11996    const createJSDocCallbackTag: (tagName: Identifier | undefined, typeExpression: JSDocSignature, fullName?: Identifier | JSDocNamespaceDeclaration | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocCallbackTag;
11997    /** @deprecated Use `factory.createJSDocSignature` or the factory supplied by your transformation context instead. */
11998    const createJSDocSignature: (typeParameters: readonly JSDocTemplateTag[] | undefined, parameters: readonly JSDocParameterTag[], type?: JSDocReturnTag | undefined) => JSDocSignature;
11999    /** @deprecated Use `factory.createJSDocPropertyTag` or the factory supplied by your transformation context instead. */
12000    const createJSDocPropertyTag: (tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression | undefined, isNameFirst?: boolean | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocPropertyTag;
12001    /** @deprecated Use `factory.createJSDocTypeLiteral` or the factory supplied by your transformation context instead. */
12002    const createJSDocTypeLiteral: (jsDocPropertyTags?: readonly JSDocPropertyLikeTag[] | undefined, isArrayType?: boolean | undefined) => JSDocTypeLiteral;
12003    /** @deprecated Use `factory.createJSDocImplementsTag` or the factory supplied by your transformation context instead. */
12004    const createJSDocImplementsTag: (tagName: Identifier | undefined, className: ExpressionWithTypeArguments & {
12005        readonly expression: Identifier | PropertyAccessEntityNameExpression;
12006    }, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocImplementsTag;
12007    /** @deprecated Use `factory.createJSDocAuthorTag` or the factory supplied by your transformation context instead. */
12008    const createJSDocAuthorTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocAuthorTag;
12009    /** @deprecated Use `factory.createJSDocPublicTag` or the factory supplied by your transformation context instead. */
12010    const createJSDocPublicTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocPublicTag;
12011    /** @deprecated Use `factory.createJSDocPrivateTag` or the factory supplied by your transformation context instead. */
12012    const createJSDocPrivateTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocPrivateTag;
12013    /** @deprecated Use `factory.createJSDocProtectedTag` or the factory supplied by your transformation context instead. */
12014    const createJSDocProtectedTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocProtectedTag;
12015    /** @deprecated Use `factory.createJSDocReadonlyTag` or the factory supplied by your transformation context instead. */
12016    const createJSDocReadonlyTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocReadonlyTag;
12017    /** @deprecated Use `factory.createJSDocUnknownTag` or the factory supplied by your transformation context instead. */
12018    const createJSDocTag: (tagName: Identifier, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocUnknownTag;
12019    /** @deprecated Use `factory.createJsxElement` or the factory supplied by your transformation context instead. */
12020    const createJsxElement: (openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement) => JsxElement;
12021    /** @deprecated Use `factory.updateJsxElement` or the factory supplied by your transformation context instead. */
12022    const updateJsxElement: (node: JsxElement, openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement) => JsxElement;
12023    /** @deprecated Use `factory.createJsxSelfClosingElement` or the factory supplied by your transformation context instead. */
12024    const createJsxSelfClosingElement: (tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes) => JsxSelfClosingElement;
12025    /** @deprecated Use `factory.updateJsxSelfClosingElement` or the factory supplied by your transformation context instead. */
12026    const updateJsxSelfClosingElement: (node: JsxSelfClosingElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes) => JsxSelfClosingElement;
12027    /** @deprecated Use `factory.createJsxOpeningElement` or the factory supplied by your transformation context instead. */
12028    const createJsxOpeningElement: (tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes) => JsxOpeningElement;
12029    /** @deprecated Use `factory.updateJsxOpeningElement` or the factory supplied by your transformation context instead. */
12030    const updateJsxOpeningElement: (node: JsxOpeningElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes) => JsxOpeningElement;
12031    /** @deprecated Use `factory.createJsxClosingElement` or the factory supplied by your transformation context instead. */
12032    const createJsxClosingElement: (tagName: JsxTagNameExpression) => JsxClosingElement;
12033    /** @deprecated Use `factory.updateJsxClosingElement` or the factory supplied by your transformation context instead. */
12034    const updateJsxClosingElement: (node: JsxClosingElement, tagName: JsxTagNameExpression) => JsxClosingElement;
12035    /** @deprecated Use `factory.createJsxFragment` or the factory supplied by your transformation context instead. */
12036    const createJsxFragment: (openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment) => JsxFragment;
12037    /** @deprecated Use `factory.createJsxText` or the factory supplied by your transformation context instead. */
12038    const createJsxText: (text: string, containsOnlyTriviaWhiteSpaces?: boolean | undefined) => JsxText;
12039    /** @deprecated Use `factory.updateJsxText` or the factory supplied by your transformation context instead. */
12040    const updateJsxText: (node: JsxText, text: string, containsOnlyTriviaWhiteSpaces?: boolean | undefined) => JsxText;
12041    /** @deprecated Use `factory.createJsxOpeningFragment` or the factory supplied by your transformation context instead. */
12042    const createJsxOpeningFragment: () => JsxOpeningFragment;
12043    /** @deprecated Use `factory.createJsxJsxClosingFragment` or the factory supplied by your transformation context instead. */
12044    const createJsxJsxClosingFragment: () => JsxClosingFragment;
12045    /** @deprecated Use `factory.updateJsxFragment` or the factory supplied by your transformation context instead. */
12046    const updateJsxFragment: (node: JsxFragment, openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment) => JsxFragment;
12047    /** @deprecated Use `factory.createJsxAttribute` or the factory supplied by your transformation context instead. */
12048    const createJsxAttribute: (name: Identifier, initializer: JsxAttributeValue | undefined) => JsxAttribute;
12049    /** @deprecated Use `factory.updateJsxAttribute` or the factory supplied by your transformation context instead. */
12050    const updateJsxAttribute: (node: JsxAttribute, name: Identifier, initializer: JsxAttributeValue | undefined) => JsxAttribute;
12051    /** @deprecated Use `factory.createJsxAttributes` or the factory supplied by your transformation context instead. */
12052    const createJsxAttributes: (properties: readonly JsxAttributeLike[]) => JsxAttributes;
12053    /** @deprecated Use `factory.updateJsxAttributes` or the factory supplied by your transformation context instead. */
12054    const updateJsxAttributes: (node: JsxAttributes, properties: readonly JsxAttributeLike[]) => JsxAttributes;
12055    /** @deprecated Use `factory.createJsxSpreadAttribute` or the factory supplied by your transformation context instead. */
12056    const createJsxSpreadAttribute: (expression: Expression) => JsxSpreadAttribute;
12057    /** @deprecated Use `factory.updateJsxSpreadAttribute` or the factory supplied by your transformation context instead. */
12058    const updateJsxSpreadAttribute: (node: JsxSpreadAttribute, expression: Expression) => JsxSpreadAttribute;
12059    /** @deprecated Use `factory.createJsxExpression` or the factory supplied by your transformation context instead. */
12060    const createJsxExpression: (dotDotDotToken: DotDotDotToken | undefined, expression: Expression | undefined) => JsxExpression;
12061    /** @deprecated Use `factory.updateJsxExpression` or the factory supplied by your transformation context instead. */
12062    const updateJsxExpression: (node: JsxExpression, expression: Expression | undefined) => JsxExpression;
12063    /** @deprecated Use `factory.createCaseClause` or the factory supplied by your transformation context instead. */
12064    const createCaseClause: (expression: Expression, statements: readonly Statement[]) => CaseClause;
12065    /** @deprecated Use `factory.updateCaseClause` or the factory supplied by your transformation context instead. */
12066    const updateCaseClause: (node: CaseClause, expression: Expression, statements: readonly Statement[]) => CaseClause;
12067    /** @deprecated Use `factory.createDefaultClause` or the factory supplied by your transformation context instead. */
12068    const createDefaultClause: (statements: readonly Statement[]) => DefaultClause;
12069    /** @deprecated Use `factory.updateDefaultClause` or the factory supplied by your transformation context instead. */
12070    const updateDefaultClause: (node: DefaultClause, statements: readonly Statement[]) => DefaultClause;
12071    /** @deprecated Use `factory.createHeritageClause` or the factory supplied by your transformation context instead. */
12072    const createHeritageClause: (token: SyntaxKind.ExtendsKeyword | SyntaxKind.ImplementsKeyword, types: readonly ExpressionWithTypeArguments[]) => HeritageClause;
12073    /** @deprecated Use `factory.updateHeritageClause` or the factory supplied by your transformation context instead. */
12074    const updateHeritageClause: (node: HeritageClause, types: readonly ExpressionWithTypeArguments[]) => HeritageClause;
12075    /** @deprecated Use `factory.createCatchClause` or the factory supplied by your transformation context instead. */
12076    const createCatchClause: (variableDeclaration: string | VariableDeclaration | BindingName | undefined, block: Block) => CatchClause;
12077    /** @deprecated Use `factory.updateCatchClause` or the factory supplied by your transformation context instead. */
12078    const updateCatchClause: (node: CatchClause, variableDeclaration: VariableDeclaration | undefined, block: Block) => CatchClause;
12079    /** @deprecated Use `factory.createPropertyAssignment` or the factory supplied by your transformation context instead. */
12080    const createPropertyAssignment: (name: string | PropertyName, initializer: Expression) => PropertyAssignment;
12081    /** @deprecated Use `factory.updatePropertyAssignment` or the factory supplied by your transformation context instead. */
12082    const updatePropertyAssignment: (node: PropertyAssignment, name: PropertyName, initializer: Expression) => PropertyAssignment;
12083    /** @deprecated Use `factory.createShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */
12084    const createShorthandPropertyAssignment: (name: string | Identifier, objectAssignmentInitializer?: Expression | undefined) => ShorthandPropertyAssignment;
12085    /** @deprecated Use `factory.updateShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */
12086    const updateShorthandPropertyAssignment: (node: ShorthandPropertyAssignment, name: Identifier, objectAssignmentInitializer: Expression | undefined) => ShorthandPropertyAssignment;
12087    /** @deprecated Use `factory.createSpreadAssignment` or the factory supplied by your transformation context instead. */
12088    const createSpreadAssignment: (expression: Expression) => SpreadAssignment;
12089    /** @deprecated Use `factory.updateSpreadAssignment` or the factory supplied by your transformation context instead. */
12090    const updateSpreadAssignment: (node: SpreadAssignment, expression: Expression) => SpreadAssignment;
12091    /** @deprecated Use `factory.createEnumMember` or the factory supplied by your transformation context instead. */
12092    const createEnumMember: (name: string | PropertyName, initializer?: Expression | undefined) => EnumMember;
12093    /** @deprecated Use `factory.updateEnumMember` or the factory supplied by your transformation context instead. */
12094    const updateEnumMember: (node: EnumMember, name: PropertyName, initializer: Expression | undefined) => EnumMember;
12095    /** @deprecated Use `factory.updateSourceFile` or the factory supplied by your transformation context instead. */
12096    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;
12097    /** @deprecated Use `factory.createNotEmittedStatement` or the factory supplied by your transformation context instead. */
12098    const createNotEmittedStatement: (original: Node) => NotEmittedStatement;
12099    /** @deprecated Use `factory.createPartiallyEmittedExpression` or the factory supplied by your transformation context instead. */
12100    const createPartiallyEmittedExpression: (expression: Expression, original?: Node | undefined) => PartiallyEmittedExpression;
12101    /** @deprecated Use `factory.updatePartiallyEmittedExpression` or the factory supplied by your transformation context instead. */
12102    const updatePartiallyEmittedExpression: (node: PartiallyEmittedExpression, expression: Expression) => PartiallyEmittedExpression;
12103    /** @deprecated Use `factory.createCommaListExpression` or the factory supplied by your transformation context instead. */
12104    const createCommaList: (elements: readonly Expression[]) => CommaListExpression;
12105    /** @deprecated Use `factory.updateCommaListExpression` or the factory supplied by your transformation context instead. */
12106    const updateCommaList: (node: CommaListExpression, elements: readonly Expression[]) => CommaListExpression;
12107    /** @deprecated Use `factory.createBundle` or the factory supplied by your transformation context instead. */
12108    const createBundle: (sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[] | undefined) => Bundle;
12109    /** @deprecated Use `factory.updateBundle` or the factory supplied by your transformation context instead. */
12110    const updateBundle: (node: Bundle, sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[] | undefined) => Bundle;
12111    /** @deprecated Use `factory.createImmediatelyInvokedFunctionExpression` or the factory supplied by your transformation context instead. */
12112    const createImmediatelyInvokedFunctionExpression: {
12113        (statements: readonly Statement[]): CallExpression;
12114        (statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression;
12115    };
12116    /** @deprecated Use `factory.createImmediatelyInvokedArrowFunction` or the factory supplied by your transformation context instead. */
12117    const createImmediatelyInvokedArrowFunction: {
12118        (statements: readonly Statement[]): CallExpression;
12119        (statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression;
12120    };
12121    /** @deprecated Use `factory.createVoidZero` or the factory supplied by your transformation context instead. */
12122    const createVoidZero: () => VoidExpression;
12123    /** @deprecated Use `factory.createExportDefault` or the factory supplied by your transformation context instead. */
12124    const createExportDefault: (expression: Expression) => ExportAssignment;
12125    /** @deprecated Use `factory.createExternalModuleExport` or the factory supplied by your transformation context instead. */
12126    const createExternalModuleExport: (exportName: Identifier) => ExportDeclaration;
12127    /** @deprecated Use `factory.createNamespaceExport` or the factory supplied by your transformation context instead. */
12128    const createNamespaceExport: (name: Identifier) => NamespaceExport;
12129    /** @deprecated Use `factory.updateNamespaceExport` or the factory supplied by your transformation context instead. */
12130    const updateNamespaceExport: (node: NamespaceExport, name: Identifier) => NamespaceExport;
12131    /** @deprecated Use `factory.createToken` or the factory supplied by your transformation context instead. */
12132    const createToken: <TKind extends SyntaxKind>(kind: TKind) => Token<TKind>;
12133    /** @deprecated Use `factory.createIdentifier` or the factory supplied by your transformation context instead. */
12134    const createIdentifier: (text: string) => Identifier;
12135    /** @deprecated Use `factory.createTempVariable` or the factory supplied by your transformation context instead. */
12136    const createTempVariable: (recordTempVariable: ((node: Identifier) => void) | undefined) => Identifier;
12137    /** @deprecated Use `factory.getGeneratedNameForNode` or the factory supplied by your transformation context instead. */
12138    const getGeneratedNameForNode: (node: Node | undefined) => Identifier;
12139    /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic)` or the factory supplied by your transformation context instead. */
12140    const createOptimisticUniqueName: (text: string) => Identifier;
12141    /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic | GeneratedIdentifierFlags.FileLevel)` or the factory supplied by your transformation context instead. */
12142    const createFileLevelUniqueName: (text: string) => Identifier;
12143    /** @deprecated Use `factory.createIndexSignature` or the factory supplied by your transformation context instead. */
12144    const createIndexSignature: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => IndexSignatureDeclaration;
12145    /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */
12146    const createTypePredicateNode: (parameterName: Identifier | ThisTypeNode | string, type: TypeNode) => TypePredicateNode;
12147    /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */
12148    const updateTypePredicateNode: (node: TypePredicateNode, parameterName: Identifier | ThisTypeNode, type: TypeNode) => TypePredicateNode;
12149    /** @deprecated Use `factory.createStringLiteral`, `factory.createStringLiteralFromNode`, `factory.createNumericLiteral`, `factory.createBigIntLiteral`, `factory.createTrue`, `factory.createFalse`, or the factory supplied by your transformation context instead. */
12150    const createLiteral: {
12151        (value: string | StringLiteral | NoSubstitutionTemplateLiteral | NumericLiteral | Identifier): StringLiteral;
12152        (value: number | PseudoBigInt): NumericLiteral;
12153        (value: boolean): BooleanLiteral;
12154        (value: string | number | PseudoBigInt | boolean): PrimaryExpression;
12155    };
12156    /** @deprecated Use `factory.createMethodSignature` or the factory supplied by your transformation context instead. */
12157    const createMethodSignature: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined) => MethodSignature;
12158    /** @deprecated Use `factory.updateMethodSignature` or the factory supplied by your transformation context instead. */
12159    const updateMethodSignature: (node: MethodSignature, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined, name: PropertyName, questionToken: QuestionToken | undefined) => MethodSignature;
12160    /** @deprecated Use `factory.createTypeOperatorNode` or the factory supplied by your transformation context instead. */
12161    const createTypeOperatorNode: {
12162        (type: TypeNode): TypeOperatorNode;
12163        (operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode;
12164    };
12165    /** @deprecated Use `factory.createTaggedTemplate` or the factory supplied by your transformation context instead. */
12166    const createTaggedTemplate: {
12167        (tag: Expression, template: TemplateLiteral): TaggedTemplateExpression;
12168        (tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
12169    };
12170    /** @deprecated Use `factory.updateTaggedTemplate` or the factory supplied by your transformation context instead. */
12171    const updateTaggedTemplate: {
12172        (node: TaggedTemplateExpression, tag: Expression, template: TemplateLiteral): TaggedTemplateExpression;
12173        (node: TaggedTemplateExpression, tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
12174    };
12175    /** @deprecated Use `factory.updateBinary` or the factory supplied by your transformation context instead. */
12176    const updateBinary: (node: BinaryExpression, left: Expression, right: Expression, operator?: BinaryOperator | BinaryOperatorToken) => BinaryExpression;
12177    /** @deprecated Use `factory.createConditional` or the factory supplied by your transformation context instead. */
12178    const createConditional: {
12179        (condition: Expression, whenTrue: Expression, whenFalse: Expression): ConditionalExpression;
12180        (condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression): ConditionalExpression;
12181    };
12182    /** @deprecated Use `factory.createYield` or the factory supplied by your transformation context instead. */
12183    const createYield: {
12184        (expression?: Expression | undefined): YieldExpression;
12185        (asteriskToken: AsteriskToken | undefined, expression: Expression): YieldExpression;
12186    };
12187    /** @deprecated Use `factory.createClassExpression` or the factory supplied by your transformation context instead. */
12188    const createClassExpression: (modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression;
12189    /** @deprecated Use `factory.updateClassExpression` or the factory supplied by your transformation context instead. */
12190    const updateClassExpression: (node: ClassExpression, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression;
12191    /** @deprecated Use `factory.createPropertySignature` or the factory supplied by your transformation context instead. */
12192    const createPropertySignature: (modifiers: readonly Modifier[] | undefined, name: PropertyName | string, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer?: Expression | undefined) => PropertySignature;
12193    /** @deprecated Use `factory.updatePropertySignature` or the factory supplied by your transformation context instead. */
12194    const updatePropertySignature: (node: PropertySignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined) => PropertySignature;
12195    /** @deprecated Use `factory.createExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */
12196    const createExpressionWithTypeArguments: (typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments;
12197    /** @deprecated Use `factory.updateExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */
12198    const updateExpressionWithTypeArguments: (node: ExpressionWithTypeArguments, typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments;
12199    /** @deprecated Use `factory.createArrowFunction` or the factory supplied by your transformation context instead. */
12200    const createArrowFunction: {
12201        (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken | undefined, body: ConciseBody): ArrowFunction;
12202        (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction;
12203    };
12204    /** @deprecated Use `factory.updateArrowFunction` or the factory supplied by your transformation context instead. */
12205    const updateArrowFunction: {
12206        (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken, body: ConciseBody): ArrowFunction;
12207        (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction;
12208    };
12209    /** @deprecated Use `factory.createVariableDeclaration` or the factory supplied by your transformation context instead. */
12210    const createVariableDeclaration: {
12211        (name: string | BindingName, type?: TypeNode | undefined, initializer?: Expression | undefined): VariableDeclaration;
12212        (name: string | BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
12213    };
12214    /** @deprecated Use `factory.updateVariableDeclaration` or the factory supplied by your transformation context instead. */
12215    const updateVariableDeclaration: {
12216        (node: VariableDeclaration, name: BindingName, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
12217        (node: VariableDeclaration, name: BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
12218    };
12219    /** @deprecated Use `factory.createImportClause` or the factory supplied by your transformation context instead. */
12220    const createImportClause: (name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: any) => ImportClause;
12221    /** @deprecated Use `factory.updateImportClause` or the factory supplied by your transformation context instead. */
12222    const updateImportClause: (node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly: boolean) => ImportClause;
12223    /** @deprecated Use `factory.createExportDeclaration` or the factory supplied by your transformation context instead. */
12224    const createExportDeclaration: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression | undefined, isTypeOnly?: any) => ExportDeclaration;
12225    /** @deprecated Use `factory.updateExportDeclaration` or the factory supplied by your transformation context instead. */
12226    const updateExportDeclaration: (node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean) => ExportDeclaration;
12227    /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */
12228    const createJSDocParamTag: (name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression | undefined, comment?: string | undefined) => JSDocParameterTag;
12229    /** @deprecated Use `factory.createComma` or the factory supplied by your transformation context instead. */
12230    const createComma: (left: Expression, right: Expression) => Expression;
12231    /** @deprecated Use `factory.createLessThan` or the factory supplied by your transformation context instead. */
12232    const createLessThan: (left: Expression, right: Expression) => Expression;
12233    /** @deprecated Use `factory.createAssignment` or the factory supplied by your transformation context instead. */
12234    const createAssignment: (left: Expression, right: Expression) => BinaryExpression;
12235    /** @deprecated Use `factory.createStrictEquality` or the factory supplied by your transformation context instead. */
12236    const createStrictEquality: (left: Expression, right: Expression) => BinaryExpression;
12237    /** @deprecated Use `factory.createStrictInequality` or the factory supplied by your transformation context instead. */
12238    const createStrictInequality: (left: Expression, right: Expression) => BinaryExpression;
12239    /** @deprecated Use `factory.createAdd` or the factory supplied by your transformation context instead. */
12240    const createAdd: (left: Expression, right: Expression) => BinaryExpression;
12241    /** @deprecated Use `factory.createSubtract` or the factory supplied by your transformation context instead. */
12242    const createSubtract: (left: Expression, right: Expression) => BinaryExpression;
12243    /** @deprecated Use `factory.createLogicalAnd` or the factory supplied by your transformation context instead. */
12244    const createLogicalAnd: (left: Expression, right: Expression) => BinaryExpression;
12245    /** @deprecated Use `factory.createLogicalOr` or the factory supplied by your transformation context instead. */
12246    const createLogicalOr: (left: Expression, right: Expression) => BinaryExpression;
12247    /** @deprecated Use `factory.createPostfixIncrement` or the factory supplied by your transformation context instead. */
12248    const createPostfixIncrement: (operand: Expression) => PostfixUnaryExpression;
12249    /** @deprecated Use `factory.createLogicalNot` or the factory supplied by your transformation context instead. */
12250    const createLogicalNot: (operand: Expression) => PrefixUnaryExpression;
12251    /** @deprecated Use an appropriate `factory` method instead. */
12252    const createNode: (kind: SyntaxKind, pos?: any, end?: any) => Node;
12253    /**
12254     * Creates a shallow, memberwise clone of a node ~for mutation~ with its `pos`, `end`, and `parent` set.
12255     *
12256     * NOTE: It is unsafe to change any properties of a `Node` that relate to its AST children, as those changes won't be
12257     * captured with respect to transformations.
12258     *
12259     * @deprecated Use an appropriate `factory.update...` method instead, use `setCommentRange` or `setSourceMapRange`, and avoid setting `parent`.
12260     */
12261    const getMutableClone: <T extends Node>(node: T) => T;
12262}
12263declare namespace ts {
12264    /** @deprecated Use `isTypeAssertionExpression` instead. */
12265    const isTypeAssertion: (node: Node) => node is TypeAssertion;
12266}
12267declare namespace ts {
12268    /**
12269     * @deprecated Use `ts.ReadonlyESMap<K, V>` instead.
12270     */
12271    interface ReadonlyMap<T> extends ReadonlyESMap<string, T> {
12272    }
12273    /**
12274     * @deprecated Use `ts.ESMap<K, V>` instead.
12275     */
12276    interface Map<T> extends ESMap<string, T> {
12277    }
12278}
12279declare namespace ts {
12280    /**
12281     * @deprecated Use `isMemberName` instead.
12282     */
12283    const isIdentifierOrPrivateIdentifier: (node: Node) => node is MemberName;
12284}
12285declare namespace ts {
12286    interface NodeFactory {
12287        /** @deprecated Use the overload that accepts 'modifiers' */
12288        createConstructorTypeNode(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): ConstructorTypeNode;
12289        /** @deprecated Use the overload that accepts 'modifiers' */
12290        updateConstructorTypeNode(node: ConstructorTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): ConstructorTypeNode;
12291    }
12292}
12293declare namespace ts {
12294    interface NodeFactory {
12295        createImportTypeNode(argument: TypeNode, assertions?: ImportTypeAssertionContainer, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode;
12296        /** @deprecated Use the overload that accepts 'assertions' */
12297        createImportTypeNode(argument: TypeNode, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode;
12298        /** @deprecated Use the overload that accepts 'assertions' */
12299        updateImportTypeNode(node: ImportTypeNode, argument: TypeNode, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean): ImportTypeNode;
12300    }
12301}
12302declare namespace ts {
12303    interface NodeFactory {
12304        /** @deprecated Use the overload that accepts 'modifiers' */
12305        createTypeParameterDeclaration(name: string | Identifier, constraint?: TypeNode, defaultType?: TypeNode): TypeParameterDeclaration;
12306        /** @deprecated Use the overload that accepts 'modifiers' */
12307        updateTypeParameterDeclaration(node: TypeParameterDeclaration, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration;
12308    }
12309}
12310declare namespace ts {
12311    interface Node {
12312        /**
12313         * @deprecated `decorators` has been removed from `Node` and merged with `modifiers` on the `Node` subtypes that support them.
12314         * Use `ts.canHaveDecorators()` to test whether a `Node` can have decorators.
12315         * Use `ts.getDecorators()` to get the decorators of a `Node`.
12316         *
12317         * For example:
12318         * ```ts
12319         * const decorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined;
12320         * ```
12321         */
12322        readonly decorators?: undefined;
12323        /**
12324         * @deprecated `modifiers` has been removed from `Node` and moved to the `Node` subtypes that support them.
12325         * Use `ts.canHaveModifiers()` to test whether a `Node` can have modifiers.
12326         * Use `ts.getModifiers()` to get the modifiers of a `Node`.
12327         *
12328         * For example:
12329         * ```ts
12330         * const modifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;
12331         * ```
12332         */
12333        readonly modifiers?: NodeArray<ModifierLike> | undefined;
12334    }
12335    interface PropertySignature {
12336        /** @deprecated A property signature cannot have an initializer */
12337        readonly initializer?: Expression | undefined;
12338    }
12339    interface PropertyAssignment {
12340        /** @deprecated A property assignment cannot have a question token */
12341        readonly questionToken?: QuestionToken | undefined;
12342        /** @deprecated A property assignment cannot have an exclamation token */
12343        readonly exclamationToken?: ExclamationToken | undefined;
12344    }
12345    interface ShorthandPropertyAssignment {
12346        /** @deprecated A shorthand property assignment cannot have modifiers */
12347        readonly modifiers?: NodeArray<Modifier> | undefined;
12348        /** @deprecated A shorthand property assignment cannot have a question token */
12349        readonly questionToken?: QuestionToken | undefined;
12350        /** @deprecated A shorthand property assignment cannot have an exclamation token */
12351        readonly exclamationToken?: ExclamationToken | undefined;
12352    }
12353    interface FunctionTypeNode {
12354        /** @deprecated A function type cannot have modifiers */
12355        readonly modifiers?: NodeArray<Modifier> | undefined;
12356    }
12357    interface NodeFactory {
12358        /**
12359         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12360         */
12361        createParameterDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken, type?: TypeNode, initializer?: Expression): ParameterDeclaration;
12362        /**
12363         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12364         */
12365        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;
12366        /**
12367         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12368         */
12369        createPropertyDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
12370        /**
12371         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12372         */
12373        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;
12374        /**
12375         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12376         */
12377        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;
12378        /**
12379         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12380         */
12381        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;
12382        /**
12383         * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter.
12384         */
12385        createConstructorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
12386        /**
12387         * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter.
12388         */
12389        updateConstructorDeclaration(node: ConstructorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
12390        /**
12391         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12392         */
12393        createGetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
12394        /**
12395         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12396         */
12397        updateGetAccessorDeclaration(node: GetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
12398        /**
12399         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12400         */
12401        createSetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
12402        /**
12403         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12404         */
12405        updateSetAccessorDeclaration(node: SetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
12406        /**
12407         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12408         */
12409        createIndexSignature(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
12410        /**
12411         * @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.
12412         */
12413        updateIndexSignature(node: IndexSignatureDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
12414        /**
12415         * @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.
12416         */
12417        createClassStaticBlockDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration;
12418        /**
12419         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12420         */
12421        updateClassStaticBlockDeclaration(node: ClassStaticBlockDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration;
12422        /**
12423         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12424         */
12425        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;
12426        /**
12427         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12428         */
12429        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;
12430        /**
12431         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12432         */
12433        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;
12434        /**
12435         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12436         */
12437        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;
12438        /**
12439         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12440         */
12441        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;
12442        /**
12443         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
12444         */
12445        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;
12446        /**
12447         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12448         */
12449        createInterfaceDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
12450        /**
12451         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12452         */
12453        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;
12454        /**
12455         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12456         */
12457        createTypeAliasDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
12458        /**
12459         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12460         */
12461        updateTypeAliasDeclaration(node: TypeAliasDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
12462        /**
12463         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12464         */
12465        createEnumDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration;
12466        /**
12467         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12468         */
12469        updateEnumDeclaration(node: EnumDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration;
12470        /**
12471         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12472         */
12473        createModuleDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration;
12474        /**
12475         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12476         */
12477        updateModuleDeclaration(node: ModuleDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration;
12478        /**
12479         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12480         */
12481        createImportEqualsDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
12482        /**
12483         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12484         */
12485        updateImportEqualsDeclaration(node: ImportEqualsDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
12486        /**
12487         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12488         */
12489        createImportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration;
12490        /**
12491         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12492         */
12493        updateImportDeclaration(node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration;
12494        /**
12495         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12496         */
12497        createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment;
12498        /**
12499         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12500         */
12501        updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment;
12502        /**
12503         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12504         */
12505        createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration;
12506        /**
12507         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
12508         */
12509        updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration;
12510    }
12511}
12512declare namespace ts {
12513    namespace ArkTSLinter_1_0 {
12514        namespace Common {
12515            interface AutofixInfo {
12516                problemID: string;
12517                start: number;
12518                end: number;
12519            }
12520            interface CommandLineOptions {
12521                strictMode?: boolean;
12522                ideMode?: boolean;
12523                logTscErrors?: boolean;
12524                warningsAsErrors: boolean;
12525                parsedConfigFile?: ParsedCommandLine;
12526                inputFiles: string[];
12527                autofixInfo?: AutofixInfo[];
12528            }
12529            interface LintOptions {
12530                cmdOptions: CommandLineOptions;
12531                tsProgram?: Program;
12532                [key: string]: any;
12533            }
12534        }
12535    }
12536}
12537declare namespace ts {
12538    namespace ArkTSLinter_1_0 {
12539        const cookBookMsg: string[];
12540        const cookBookTag: string[];
12541    }
12542}
12543declare namespace ts {
12544    namespace ArkTSLinter_1_0 {
12545        namespace DiagnosticCheckerNamespace {
12546            interface DiagnosticChecker {
12547                checkDiagnosticMessage(msgText: string | ts.DiagnosticMessageChain): boolean;
12548            }
12549        }
12550    }
12551}
12552declare namespace ts {
12553    namespace ArkTSLinter_1_0 {
12554        import DiagnosticChecker = DiagnosticCheckerNamespace.DiagnosticChecker;
12555        namespace LibraryTypeCallDiagnosticCheckerNamespace {
12556            const TYPE_0_IS_NOT_ASSIGNABLE_TO_TYPE_1_ERROR_CODE = 2322;
12557            const TYPE_UNKNOWN_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
12558            const TYPE_NULL_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
12559            const TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
12560            const ARGUMENT_OF_TYPE_0_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_ERROR_CODE = 2345;
12561            const ARGUMENT_OF_TYPE_NULL_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
12562            const ARGUMENT_OF_TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
12563            const NO_OVERLOAD_MATCHES_THIS_CALL_ERROR_CODE = 2769;
12564            class LibraryTypeCallDiagnosticChecker implements DiagnosticChecker {
12565                inLibCall: boolean;
12566                diagnosticMessages: Array<ts.DiagnosticMessageChain> | undefined;
12567                filteredDiagnosticMessages: DiagnosticMessageChain[];
12568                constructor(filteredDiagnosticMessages: DiagnosticMessageChain[]);
12569                configure(inLibCall: boolean, diagnosticMessages: Array<ts.DiagnosticMessageChain>): void;
12570                checkMessageText(msg: string): boolean;
12571                checkMessageChain(chain: ts.DiagnosticMessageChain): boolean;
12572                checkFilteredDiagnosticMessages(msgText: ts.DiagnosticMessageChain | string): boolean;
12573                checkDiagnosticMessage(msgText: string | ts.DiagnosticMessageChain): boolean;
12574            }
12575        }
12576    }
12577}
12578declare namespace ts {
12579    namespace ArkTSLinter_1_0 {
12580        namespace Utils {
12581            import AutofixInfo = Common.AutofixInfo;
12582            const PROPERTY_HAS_NO_INITIALIZER_ERROR_CODE = 2564;
12583            const NON_INITIALIZABLE_PROPERTY_DECORATORS: string[];
12584            const NON_INITIALIZABLE_PROPERTY_ClASS_DECORATORS: string[];
12585            const LIMITED_STANDARD_UTILITY_TYPES: string[];
12586            const ALLOWED_STD_SYMBOL_API: string[];
12587            enum ProblemSeverity {
12588                WARNING = 1,
12589                ERROR = 2
12590            }
12591            const ARKTS_IGNORE_DIRS: string[];
12592            const ARKTS_IGNORE_FILES: string[];
12593            function setTypeChecker(tsTypeChecker: TypeChecker): void;
12594            function clearTypeChecker(): void;
12595            function setTestMode(tsTestMode: boolean): void;
12596            function getStartPos(nodeOrComment: Node | CommentRange): number;
12597            function getEndPos(nodeOrComment: Node | CommentRange): number;
12598            function isAssignmentOperator(tsBinOp: BinaryOperatorToken): boolean;
12599            function isTypedArray(tsType: TypeNode | undefined): boolean;
12600            function isType(tsType: TypeNode | undefined, checkType: string): boolean;
12601            function entityNameToString(name: EntityName): string;
12602            function isNumberType(tsType: Type): boolean;
12603            function isBooleanType(tsType: Type): boolean;
12604            function isStringLikeType(tsType: Type): boolean;
12605            function isStringType(type: Type): boolean;
12606            function isPrimitiveEnumType(type: Type, primitiveType: TypeFlags): boolean;
12607            function isPrimitiveEnumMemberType(type: Type, primitiveType: TypeFlags): boolean;
12608            function unwrapParenthesizedType(tsType: TypeNode): TypeNode;
12609            function findParentIf(asExpr: AsExpression): IfStatement | null;
12610            function isDestructuringAssignmentLHS(tsExpr: ArrayLiteralExpression | ObjectLiteralExpression): boolean;
12611            function isEnumType(tsType: Type): boolean;
12612            function isEnumMemberType(tsType: Type): boolean;
12613            function isObjectLiteralType(tsType: Type): boolean;
12614            function isNumberLikeType(tsType: Type): boolean;
12615            function hasModifier(tsModifiers: readonly Modifier[] | undefined, tsModifierKind: number): boolean;
12616            function unwrapParenthesized(tsExpr: Expression): Expression;
12617            function followIfAliased(sym: Symbol): Symbol;
12618            function trueSymbolAtLocation(node: Node): Symbol | undefined;
12619            function clearTrueSymbolAtLocationCache(): void;
12620            function isTypeDeclSyntaxKind(kind: SyntaxKind): boolean;
12621            function symbolHasDuplicateName(symbol: Symbol, tsDeclKind: SyntaxKind): boolean;
12622            function isReferenceType(tsType: Type): boolean;
12623            function isPrimitiveType(type: Type): boolean;
12624            function isTypeSymbol(symbol: Symbol | undefined): boolean;
12625            function isGenericArrayType(tsType: Type): tsType is TypeReference;
12626            function isDerivedFrom(tsType: Type, checkType: CheckType): tsType is TypeReference;
12627            function isTypeReference(tsType: Type): tsType is TypeReference;
12628            function isNullType(tsTypeNode: TypeNode): boolean;
12629            function isThisOrSuperExpr(tsExpr: Expression): boolean;
12630            function isPrototypeSymbol(symbol: Symbol | undefined): boolean;
12631            function isFunctionSymbol(symbol: Symbol | undefined): boolean;
12632            function isInterfaceType(tsType: Type | undefined): boolean;
12633            function isAnyType(tsType: Type): tsType is TypeReference;
12634            function isUnknownType(tsType: Type): boolean;
12635            function isUnsupportedType(tsType: Type): boolean;
12636            function isUnsupportedUnionType(tsType: Type): boolean;
12637            function isFunctionOrMethod(tsSymbol: Symbol | undefined): boolean;
12638            function isMethodAssignment(tsSymbol: Symbol | undefined): boolean;
12639            function getDeclaration(tsSymbol: ts.Symbol | undefined): ts.Declaration | undefined;
12640            function isValidEnumMemberInit(tsExpr: Expression): boolean;
12641            function isCompileTimeExpression(tsExpr: Expression): boolean;
12642            function isConst(tsNode: Node): boolean;
12643            function isNumberConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
12644            function isIntegerConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
12645            function isStringConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression): boolean;
12646            function relatedByInheritanceOrIdentical(typeA: Type, typeB: Type): boolean;
12647            function needToDeduceStructuralIdentity(typeFrom: Type, typeTo: Type, allowPromotion?: boolean): boolean;
12648            function hasPredecessor(node: Node, predicate: (node: Node) => boolean): boolean;
12649            function processParentTypes(parentTypes: NodeArray<ExpressionWithTypeArguments>, typeB: Type, processInterfaces: boolean): boolean;
12650            function processParentTypesCheck(parentTypes: NodeArray<ExpressionWithTypeArguments>, checkType: CheckType): boolean;
12651            function isObjectType(tsType: Type): boolean;
12652            function logTscDiagnostic(diagnostics: readonly Diagnostic[], log: (message: any, ...args: any[]) => void): void;
12653            function encodeProblemInfo(problem: ProblemInfo): string;
12654            function decodeAutofixInfo(info: string): AutofixInfo;
12655            function isCallToFunctionWithOmittedReturnType(tsExpr: Expression): boolean;
12656            function validateObjectLiteralType(type: Type | undefined): boolean;
12657            function isStructDeclarationKind(kind: SyntaxKind): boolean;
12658            function isStructDeclaration(node: Node): boolean;
12659            function isStructObjectInitializer(objectLiteral: ObjectLiteralExpression): boolean;
12660            function hasMethods(type: Type): boolean;
12661            function isExpressionAssignableToType(lhsType: ts.Type | undefined, rhsExpr: ts.Expression): boolean;
12662            function isLiteralType(type: Type): boolean;
12663            function validateFields(type: Type, objectLiteral: ObjectLiteralExpression): boolean;
12664            function isSupportedType(typeNode: TypeNode): boolean;
12665            function isStruct(symbol: Symbol): boolean;
12666            enum CheckType {
12667                Array = 0,
12668                String = "String",
12669                Set = "Set",
12670                Map = "Map",
12671                Error = "Error"
12672            }
12673            const ES_OBJECT = "ESObject";
12674            const LIMITED_STD_GLOBAL_FUNC: string[];
12675            const LIMITED_STD_OBJECT_API: string[];
12676            const LIMITED_STD_REFLECT_API: string[];
12677            const LIMITED_STD_PROXYHANDLER_API: string[];
12678            const ARKUI_DECORATORS: string[];
12679            const FUNCTION_HAS_NO_RETURN_ERROR_CODE = 2366;
12680            const NON_RETURN_FUNCTION_DECORATORS: string[];
12681            const STANDARD_LIBRARIES: string[];
12682            const TYPED_ARRAYS: string[];
12683            function getParentSymbolName(symbol: Symbol): string | undefined;
12684            function isGlobalSymbol(symbol: Symbol): boolean;
12685            function isSymbolAPI(symbol: Symbol): boolean;
12686            function isStdSymbol(symbol: ts.Symbol): boolean;
12687            function isSymbolIterator(symbol: ts.Symbol): boolean;
12688            function isDefaultImport(importSpec: ImportSpecifier): boolean;
12689            function hasAccessModifier(decl: Declaration): boolean;
12690            function getModifier(modifiers: readonly Modifier[] | undefined, modifierKind: SyntaxKind): Modifier | undefined;
12691            function getAccessModifier(modifiers: readonly Modifier[] | undefined): Modifier | undefined;
12692            function isStdRecordType(type: Type): boolean;
12693            function isStdPartialType(type: Type): boolean;
12694            function isStdRequiredType(type: Type): boolean;
12695            function isStdReadonlyType(type: Type): boolean;
12696            function isLibraryType(type: Type): boolean;
12697            function hasLibraryType(node: Node): boolean;
12698            function isLibrarySymbol(sym: Symbol | undefined): boolean;
12699            function pathContainsDirectory(targetPath: string, dir: string): boolean;
12700            function getScriptKind(srcFile: SourceFile): ScriptKind;
12701            function isStdLibraryType(type: Type): boolean;
12702            function isStdLibrarySymbol(sym: Symbol | undefined): boolean;
12703            function isIntrinsicObjectType(type: Type): boolean;
12704            function isDynamicType(type: Type | undefined): boolean | undefined;
12705            function isDynamicLiteralInitializer(expr: Expression): boolean;
12706            function isEsObjectType(typeNode: TypeNode): boolean;
12707            function isInsideBlock(node: ts.Node): boolean;
12708            function isEsObjectPossiblyAllowed(typeRef: ts.TypeReferenceNode): boolean;
12709            function isValueAssignableToESObject(node: ts.Node): boolean;
12710            function getVariableDeclarationTypeNode(node: Node): TypeNode | undefined;
12711            function getSymbolDeclarationTypeNode(sym: ts.Symbol): ts.TypeNode | undefined;
12712            function hasEsObjectType(node: Node): boolean;
12713            function symbolHasEsObjectType(sym: ts.Symbol): boolean;
12714            function isEsObjectSymbol(sym: Symbol): boolean;
12715            function isAnonymousType(type: Type): boolean;
12716            function getSymbolOfCallExpression(callExpr: CallExpression): Symbol | undefined;
12717            function typeIsRecursive(topType: Type, type?: Type | undefined): boolean;
12718        }
12719    }
12720}
12721declare namespace ts {
12722    namespace ArkTSLinter_1_0 {
12723        namespace Problems {
12724            enum FaultID {
12725                AnyType = 0,
12726                SymbolType = 1,
12727                ObjectLiteralNoContextType = 2,
12728                ArrayLiteralNoContextType = 3,
12729                ComputedPropertyName = 4,
12730                LiteralAsPropertyName = 5,
12731                TypeQuery = 6,
12732                RegexLiteral = 7,
12733                IsOperator = 8,
12734                DestructuringParameter = 9,
12735                YieldExpression = 10,
12736                InterfaceMerging = 11,
12737                EnumMerging = 12,
12738                InterfaceExtendsClass = 13,
12739                IndexMember = 14,
12740                WithStatement = 15,
12741                ThrowStatement = 16,
12742                IndexedAccessType = 17,
12743                UnknownType = 18,
12744                ForInStatement = 19,
12745                InOperator = 20,
12746                ImportFromPath = 21,
12747                FunctionExpression = 22,
12748                IntersectionType = 23,
12749                ObjectTypeLiteral = 24,
12750                CommaOperator = 25,
12751                LimitedReturnTypeInference = 26,
12752                LambdaWithTypeParameters = 27,
12753                ClassExpression = 28,
12754                DestructuringAssignment = 29,
12755                DestructuringDeclaration = 30,
12756                VarDeclaration = 31,
12757                CatchWithUnsupportedType = 32,
12758                DeleteOperator = 33,
12759                DeclWithDuplicateName = 34,
12760                UnaryArithmNotNumber = 35,
12761                ConstructorType = 36,
12762                ConstructorIface = 37,
12763                ConstructorFuncs = 38,
12764                CallSignature = 39,
12765                TypeAssertion = 40,
12766                PrivateIdentifier = 41,
12767                LocalFunction = 42,
12768                ConditionalType = 43,
12769                MappedType = 44,
12770                NamespaceAsObject = 45,
12771                ClassAsObject = 46,
12772                NonDeclarationInNamespace = 47,
12773                GeneratorFunction = 48,
12774                FunctionContainsThis = 49,
12775                PropertyAccessByIndex = 50,
12776                JsxElement = 51,
12777                EnumMemberNonConstInit = 52,
12778                ImplementsClass = 53,
12779                NoUndefinedPropAccess = 54,
12780                MultipleStaticBlocks = 55,
12781                ThisType = 56,
12782                IntefaceExtendDifProps = 57,
12783                StructuralIdentity = 58,
12784                DefaultImport = 59,
12785                ExportAssignment = 60,
12786                ImportAssignment = 61,
12787                GenericCallNoTypeArgs = 62,
12788                ParameterProperties = 63,
12789                InstanceofUnsupported = 64,
12790                ShorthandAmbientModuleDecl = 65,
12791                WildcardsInModuleName = 66,
12792                UMDModuleDefinition = 67,
12793                NewTarget = 68,
12794                DefiniteAssignment = 69,
12795                Prototype = 70,
12796                GlobalThis = 71,
12797                UtilityType = 72,
12798                PropertyDeclOnFunction = 73,
12799                FunctionApplyBindCall = 74,
12800                ConstAssertion = 75,
12801                ImportAssertion = 76,
12802                SpreadOperator = 77,
12803                LimitedStdLibApi = 78,
12804                ErrorSuppression = 79,
12805                StrictDiagnostic = 80,
12806                UnsupportedDecorators = 81,
12807                ImportAfterStatement = 82,
12808                EsObjectType = 83,
12809                LAST_ID = 84
12810            }
12811            class FaultAttributs {
12812                migratable?: boolean;
12813                warning?: boolean;
12814                cookBookRef: string;
12815            }
12816            const faultsAttrs: FaultAttributs[];
12817        }
12818    }
12819}
12820declare namespace ts {
12821    namespace ArkTSLinter_1_0 {
12822        namespace Autofixer {
12823            import AutofixInfo = Common.AutofixInfo;
12824            import FaultID = Problems.FaultID;
12825            const AUTOFIX_ALL: AutofixInfo;
12826            const autofixInfo: AutofixInfo[];
12827            function shouldAutofix(node: Node, faultID: FaultID): boolean;
12828            interface Autofix {
12829                replacementText: string;
12830                start: number;
12831                end: number;
12832            }
12833            function fixLiteralAsPropertyName(node: Node): Autofix[] | undefined;
12834            function fixPropertyAccessByIndex(node: Node): Autofix[] | undefined;
12835            function fixFunctionExpression(funcExpr: FunctionExpression, params?: NodeArray<ParameterDeclaration>, retType?: TypeNode | undefined): Autofix;
12836            function fixReturnType(funcLikeDecl: FunctionLikeDeclaration, typeNode: TypeNode): Autofix;
12837            function fixCtorParameterProperties(ctorDecl: ConstructorDeclaration, paramTypes: TypeNode[]): Autofix[] | undefined;
12838        }
12839    }
12840}
12841declare namespace ts {
12842    namespace ArkTSLinter_1_0 {
12843        import FaultID = Problems.FaultID;
12844        class LinterConfig {
12845            static nodeDesc: string[];
12846            static tsSyntaxKindNames: string[];
12847            static initStatic(): void;
12848            static terminalTokens: Set<SyntaxKind>;
12849            static incrementOnlyTokens: ESMap<SyntaxKind, FaultID>;
12850        }
12851    }
12852}
12853declare namespace ts {
12854    namespace ArkTSLinter_1_0 {
12855        import Autofix = Autofixer.Autofix;
12856        import LibraryTypeCallDiagnosticChecker = LibraryTypeCallDiagnosticCheckerNamespace.LibraryTypeCallDiagnosticChecker;
12857        interface ProblemInfo {
12858            line: number;
12859            column: number;
12860            start: number;
12861            end: number;
12862            type: string;
12863            severity: number;
12864            problem: string;
12865            suggest: string;
12866            rule: string;
12867            ruleTag: number;
12868            autofixable: boolean;
12869            autofix?: Autofix[];
12870        }
12871        class TypeScriptLinter {
12872            private sourceFile;
12873            private tscStrictDiagnostics?;
12874            static ideMode: boolean;
12875            static strictMode: boolean;
12876            static logTscErrors: boolean;
12877            static warningsAsErrors: boolean;
12878            static lintEtsOnly: boolean;
12879            static totalVisitedNodes: number;
12880            static nodeCounters: number[];
12881            static lineCounters: number[];
12882            static totalErrorLines: number;
12883            static errorLineNumbersString: string;
12884            static totalWarningLines: number;
12885            static warningLineNumbersString: string;
12886            static reportDiagnostics: boolean;
12887            static problemsInfos: ProblemInfo[];
12888            static filteredDiagnosticMessages: DiagnosticMessageChain[];
12889            static initGlobals(): void;
12890            static initStatic(): void;
12891            static tsTypeChecker: TypeChecker;
12892            currentErrorLine: number;
12893            currentWarningLine: number;
12894            staticBlocks: Set<string>;
12895            libraryTypeCallDiagnosticChecker: LibraryTypeCallDiagnosticChecker;
12896            skipArkTSStaticBlocksCheck: boolean;
12897            constructor(sourceFile: SourceFile, tsProgram: Program, tscStrictDiagnostics?: Map<Diagnostic[]> | undefined);
12898            static clearTsTypeChecker(): void;
12899            readonly handlersMap: ESMap<SyntaxKind, (node: Node) => void>;
12900            incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void;
12901            visitTSNode(node: Node): void;
12902            private countInterfaceExtendsDifferentPropertyTypes;
12903            private countDeclarationsWithDuplicateName;
12904            private countClassMembersWithDuplicateName;
12905            private functionContainsThis;
12906            private isPrototypePropertyAccess;
12907            private interfaceInheritanceLint;
12908            private lintForInterfaceExtendsDifferentPorpertyTypes;
12909            private handleObjectLiteralExpression;
12910            private handleArrayLiteralExpression;
12911            private handleParameter;
12912            private handleEnumDeclaration;
12913            private handleInterfaceDeclaration;
12914            private handleThrowStatement;
12915            private handleForStatement;
12916            private handleForInStatement;
12917            private handleForOfStatement;
12918            private handleImportDeclaration;
12919            private handlePropertyAccessExpression;
12920            private handlePropertyAssignmentOrDeclaration;
12921            private filterOutDecoratorsDiagnostics;
12922            private checkInRange;
12923            private filterStrictDiagnostics;
12924            private handleFunctionExpression;
12925            private handleArrowFunction;
12926            private handleClassExpression;
12927            private handleFunctionDeclaration;
12928            private handleMissingReturnType;
12929            private hasLimitedTypeInferenceFromReturnExpr;
12930            private handlePrefixUnaryExpression;
12931            private handleBinaryExpression;
12932            private handleVariableDeclarationList;
12933            private handleVariableDeclaration;
12934            private handleEsObjectDelaration;
12935            private handleEsObjectAssignment;
12936            private handleCatchClause;
12937            private handleClassDeclaration;
12938            private handleModuleDeclaration;
12939            private handleTypeAliasDeclaration;
12940            private handleImportClause;
12941            private handleImportSpecifier;
12942            private handleNamespaceImport;
12943            private handleTypeAssertionExpression;
12944            private handleMethodDeclaration;
12945            private handleIdentifier;
12946            private isAllowedClassValueContext;
12947            private handleRestrictedValues;
12948            private identiferUseInValueContext;
12949            private isEnumPropAccess;
12950            private handleElementAccessExpression;
12951            private handleEnumMember;
12952            private handleExportAssignment;
12953            private handleCallExpression;
12954            private handleImportCall;
12955            private handleRequireCall;
12956            private handleGenericCallWithNoTypeArgs;
12957            private static listApplyBindCallApis;
12958            private handleFunctionApplyBindPropCall;
12959            private handleStructIdentAndUndefinedInArgs;
12960            private static LimitedApis;
12961            private handleStdlibAPICall;
12962            private findNonFilteringRangesFunctionCalls;
12963            private handleLibraryTypeCall;
12964            private handleNewExpression;
12965            private handleAsExpression;
12966            private handleTypeReference;
12967            private handleMetaProperty;
12968            private handleStructDeclaration;
12969            private handleSpreadOp;
12970            private handleConstructSignature;
12971            private handleComments;
12972            private handleExpressionWithTypeArguments;
12973            private handleComputedPropertyName;
12974            private checkErrorSuppressingAnnotation;
12975            private handleDecorators;
12976            private handleGetAccessor;
12977            private handleSetAccessor;
12978            private handleDeclarationInferredType;
12979            private handleDefiniteAssignmentAssertion;
12980            private validatedTypesSet;
12981            private checkAnyOrUnknownChildNode;
12982            private handleInferredObjectreference;
12983            private validateDeclInferredType;
12984            private handleClassStaticBlockDeclaration;
12985            lint(): void;
12986        }
12987    }
12988}
12989declare namespace ts {
12990    namespace ArkTSLinter_1_0 {
12991        class TSCCompiledProgram {
12992            private diagnosticsExtractor;
12993            constructor(program: BuilderProgram);
12994            getProgram(): Program;
12995            getBuilderProgram(): BuilderProgram;
12996            getStrictDiagnostics(fileName: string): Diagnostic[];
12997            doAllGetDiagnostics(): void;
12998        }
12999    }
13000}
13001declare namespace ts {
13002    namespace ArkTSLinter_1_0 {
13003        function translateDiag(srcFile: SourceFile, problemInfo: ProblemInfo): Diagnostic;
13004        function runArkTSLinter(tsBuilderProgram: BuilderProgram, srcFile?: SourceFile, buildInfoWriteFile?: WriteFileCallback, arkTSVersion?: string): Diagnostic[];
13005    }
13006}
13007declare namespace ts {
13008    namespace ArkTSLinter_1_1 {
13009        namespace Common {
13010            interface AutofixInfo {
13011                problemID: string;
13012                start: number;
13013                end: number;
13014            }
13015            interface CommandLineOptions {
13016                strictMode?: boolean;
13017                ideMode?: boolean;
13018                logTscErrors?: boolean;
13019                warningsAsErrors: boolean;
13020                parsedConfigFile?: ParsedCommandLine;
13021                inputFiles: string[];
13022                autofixInfo?: AutofixInfo[];
13023            }
13024            interface LintOptions {
13025                cmdOptions: CommandLineOptions;
13026                tsProgram?: Program;
13027                [key: string]: any;
13028            }
13029            enum ProblemSeverity {
13030                WARNING = 1,
13031                ERROR = 2
13032            }
13033        }
13034    }
13035}
13036declare namespace ts {
13037    namespace ArkTSLinter_1_1 {
13038        const cookBookMsg: string[];
13039        const cookBookTag: string[];
13040    }
13041}
13042declare namespace ts {
13043    namespace ArkTSLinter_1_1 {
13044        namespace DiagnosticCheckerNamespace {
13045            interface DiagnosticChecker {
13046                checkDiagnosticMessage(msgText: string | ts.DiagnosticMessageChain): boolean;
13047            }
13048        }
13049    }
13050}
13051declare namespace ts {
13052    namespace ArkTSLinter_1_1 {
13053        import DiagnosticChecker = DiagnosticCheckerNamespace.DiagnosticChecker;
13054        namespace LibraryTypeCallDiagnosticCheckerNamespace {
13055            const TYPE_0_IS_NOT_ASSIGNABLE_TO_TYPE_1_ERROR_CODE = 2322;
13056            const TYPE_UNKNOWN_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
13057            const TYPE_NULL_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
13058            const TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
13059            const ARGUMENT_OF_TYPE_0_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_ERROR_CODE = 2345;
13060            const ARGUMENT_OF_TYPE_NULL_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
13061            const ARGUMENT_OF_TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
13062            const NO_OVERLOAD_MATCHES_THIS_CALL_ERROR_CODE = 2769;
13063            const TYPE = "Type";
13064            const IS_NOT_ASSIGNABLE_TO_TYPE = "is not assignable to type";
13065            const ARGUMENT_OF_TYPE = "Argument of type";
13066            const IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE = "is not assignable to parameter of type";
13067            enum ErrorType {
13068                NO_ERROR = 0,
13069                UNKNOW = 1,
13070                NULL = 2,
13071                UNDEFINED = 3
13072            }
13073            class LibraryTypeCallDiagnosticChecker implements DiagnosticChecker {
13074                inLibCall: boolean;
13075                diagnosticMessages: Array<ts.DiagnosticMessageChain> | undefined;
13076                filteredDiagnosticMessages: DiagnosticMessageChain[];
13077                constructor(filteredDiagnosticMessages: DiagnosticMessageChain[]);
13078                configure(inLibCall: boolean, diagnosticMessages: Array<ts.DiagnosticMessageChain>): void;
13079                checkMessageText(msg: string): boolean;
13080                static checkMessageChain(chain: ts.DiagnosticMessageChain, inLibCall: boolean): ErrorType;
13081                checkFilteredDiagnosticMessages(msgText: ts.DiagnosticMessageChain | string): boolean;
13082                checkDiagnosticMessage(msgText: string | ts.DiagnosticMessageChain): boolean;
13083                static rebuildTscDiagnostics(tscStrictDiagnostics: Map<Diagnostic[]>): void;
13084                static collectDiagnosticMessage(diagnosticMessageChain: DiagnosticMessageChain, textSet: Set<string>): void;
13085            }
13086        }
13087    }
13088}
13089declare namespace ts {
13090    namespace ArkTSLinter_1_1 {
13091        namespace Problems {
13092            import ProblemSeverity = Common.ProblemSeverity;
13093            enum FaultID {
13094                AnyType = 0,
13095                SymbolType = 1,
13096                ObjectLiteralNoContextType = 2,
13097                ArrayLiteralNoContextType = 3,
13098                ComputedPropertyName = 4,
13099                LiteralAsPropertyName = 5,
13100                TypeQuery = 6,
13101                IsOperator = 7,
13102                DestructuringParameter = 8,
13103                YieldExpression = 9,
13104                InterfaceMerging = 10,
13105                EnumMerging = 11,
13106                InterfaceExtendsClass = 12,
13107                IndexMember = 13,
13108                WithStatement = 14,
13109                ThrowStatement = 15,
13110                IndexedAccessType = 16,
13111                UnknownType = 17,
13112                ForInStatement = 18,
13113                InOperator = 19,
13114                FunctionExpression = 20,
13115                IntersectionType = 21,
13116                ObjectTypeLiteral = 22,
13117                CommaOperator = 23,
13118                LimitedReturnTypeInference = 24,
13119                ClassExpression = 25,
13120                DestructuringAssignment = 26,
13121                DestructuringDeclaration = 27,
13122                VarDeclaration = 28,
13123                CatchWithUnsupportedType = 29,
13124                DeleteOperator = 30,
13125                DeclWithDuplicateName = 31,
13126                UnaryArithmNotNumber = 32,
13127                ConstructorType = 33,
13128                ConstructorIface = 34,
13129                ConstructorFuncs = 35,
13130                CallSignature = 36,
13131                TypeAssertion = 37,
13132                PrivateIdentifier = 38,
13133                LocalFunction = 39,
13134                ConditionalType = 40,
13135                MappedType = 41,
13136                NamespaceAsObject = 42,
13137                ClassAsObject = 43,
13138                NonDeclarationInNamespace = 44,
13139                GeneratorFunction = 45,
13140                FunctionContainsThis = 46,
13141                PropertyAccessByIndex = 47,
13142                JsxElement = 48,
13143                EnumMemberNonConstInit = 49,
13144                ImplementsClass = 50,
13145                MethodReassignment = 51,
13146                MultipleStaticBlocks = 52,
13147                ThisType = 53,
13148                IntefaceExtendDifProps = 54,
13149                StructuralIdentity = 55,
13150                ExportAssignment = 56,
13151                ImportAssignment = 57,
13152                GenericCallNoTypeArgs = 58,
13153                ParameterProperties = 59,
13154                InstanceofUnsupported = 60,
13155                ShorthandAmbientModuleDecl = 61,
13156                WildcardsInModuleName = 62,
13157                UMDModuleDefinition = 63,
13158                NewTarget = 64,
13159                DefiniteAssignment = 65,
13160                Prototype = 66,
13161                GlobalThis = 67,
13162                UtilityType = 68,
13163                PropertyDeclOnFunction = 69,
13164                FunctionApplyCall = 70,
13165                FunctionBind = 71,
13166                ConstAssertion = 72,
13167                ImportAssertion = 73,
13168                SpreadOperator = 74,
13169                LimitedStdLibApi = 75,
13170                ErrorSuppression = 76,
13171                StrictDiagnostic = 77,
13172                ImportAfterStatement = 78,
13173                EsObjectType = 79,
13174                SendableClassInheritance = 80,
13175                SendablePropType = 81,
13176                SendableDefiniteAssignment = 82,
13177                SendableGenericTypes = 83,
13178                SendableCapturedVars = 84,
13179                SendableClassDecorator = 85,
13180                SendableObjectInitialization = 86,
13181                SendableComputedPropName = 87,
13182                SendableAsExpr = 88,
13183                SharedNoSideEffectImport = 89,
13184                SharedModuleExports = 90,
13185                SharedModuleNoWildcardExport = 91,
13186                NoTsImportEts = 92,
13187                SendableTypeInheritance = 93,
13188                SendableTypeExported = 94,
13189                NoTsReExportEts = 95,
13190                NoNamespaceImportEtsToTs = 96,
13191                NoSideEffectImportEtsToTs = 97,
13192                SendableExplicitFieldType = 98,
13193                SendableFunctionImportedVariables = 99,
13194                SendableFunctionDecorator = 100,
13195                SendableTypeAliasDecorator = 101,
13196                SendableTypeAliasDeclaration = 102,
13197                SendableFunctionAssignment = 103,
13198                SendableFunctionOverloadDecorator = 104,
13199                SendableFunctionProperty = 105,
13200                SendableFunctionAsExpr = 106,
13201                SendableDecoratorLimited = 107,
13202                SendableClosureExport = 108,
13203                SharedModuleExportsWarning = 109,
13204                SendableBetaCompatible = 110,
13205                SendablePropTypeWarning = 111,
13206                LAST_ID = 112
13207            }
13208            class FaultAttributes {
13209                cookBookRef: number;
13210                migratable: boolean;
13211                severity: ProblemSeverity;
13212                constructor(cookBookRef: number, migratable?: boolean, severity?: ProblemSeverity);
13213            }
13214            const faultsAttrs: FaultAttributes[];
13215        }
13216    }
13217}
13218declare namespace ts {
13219    namespace ArkTSLinter_1_1 {
13220        import AutofixInfo = Common.AutofixInfo;
13221        namespace Utils {
13222            const PROPERTY_HAS_NO_INITIALIZER_ERROR_CODE = 2564;
13223            const NON_INITIALIZABLE_PROPERTY_DECORATORS: string[];
13224            const NON_INITIALIZABLE_PROPERTY_CLASS_DECORATORS: string[];
13225            const LIMITED_STANDARD_UTILITY_TYPES: string[];
13226            const ALLOWED_STD_SYMBOL_API: string[];
13227            const ARKTS_IGNORE_DIRS: string[];
13228            const ARKTS_IGNORE_FILES: string[];
13229            const SENDABLE_DECORATOR = "Sendable";
13230            const SENDABLE_INTERFACE = "ISendable";
13231            const SENDABLE_DECORATOR_NODES: SyntaxKind[];
13232            const SENDABLE_CLOSURE_DECLS: SyntaxKind[];
13233            const ARKTS_COLLECTIONS_D_ETS = "@arkts.collections.d.ets";
13234            const COLLECTIONS_NAMESPACE = "collections";
13235            const ARKTS_LANG_D_ETS = "@arkts.lang.d.ets";
13236            const LANG_NAMESPACE = "lang";
13237            const ISENDABLE_TYPE = "ISendable";
13238            const USE_SHARED = "use shared";
13239            const D_TS = ".d.ts";
13240            function setTypeChecker(tsTypeChecker: TypeChecker): void;
13241            function clearTypeChecker(): void;
13242            function setTestMode(tsTestMode: boolean): void;
13243            function getStartPos(nodeOrComment: Node | CommentRange): number;
13244            function getEndPos(nodeOrComment: Node | CommentRange): number;
13245            function getHighlightRange(nodeOrComment: Node | CommentRange, faultId: number): [number, number];
13246            function getVarDeclarationHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13247            function getCatchWithUnsupportedTypeHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13248            function getForInStatementHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13249            function getWithStatementHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13250            function getDeleteOperatorHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13251            function getTypeQueryHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13252            function getInstanceofUnsupportedHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13253            function getConstAssertionHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13254            function getLimitedReturnTypeInferenceHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13255            function getLocalFunctionHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13256            function getFunctionApplyCallHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13257            function getDeclWithDuplicateNameHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13258            function getObjectLiteralNoContextTypeHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13259            function getClassExpressionHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
13260            function getMultipleStaticBlocksHighlightRange(nodeOrComment: ts.Node | ts.CommentRange): [number, number] | undefined;
13261            function getSendableDefiniteAssignmentHighlightRange(nodeOrComment: ts.Node | ts.CommentRange): [number, number] | undefined;
13262            function getKeywordHighlightRange(nodeOrComment: Node | CommentRange, keyword: string): [number, number];
13263            function isAssignmentOperator(tsBinOp: BinaryOperatorToken): boolean;
13264            function isType(tsType: TypeNode | undefined, checkType: string): boolean;
13265            function entityNameToString(name: EntityName): string;
13266            function isNumberLikeType(tsType: Type): boolean;
13267            function isBooleanLikeType(tsType: Type): boolean;
13268            function isStringLikeType(tsType: Type): boolean;
13269            function isStringType(tsType: ts.Type): boolean;
13270            function isPrimitiveEnumMemberType(type: Type, primitiveType: TypeFlags): boolean;
13271            function unwrapParenthesizedType(tsType: TypeNode): TypeNode;
13272            function findParentIf(asExpr: AsExpression): IfStatement | null;
13273            function isDestructuringAssignmentLHS(tsExpr: ArrayLiteralExpression | ObjectLiteralExpression): boolean;
13274            function isEnumType(tsType: ts.Type): boolean;
13275            function isEnum(tsSymbol: ts.Symbol): boolean;
13276            function isEnumMemberType(tsType: Type): boolean;
13277            function isObjectLiteralType(tsType: Type): boolean;
13278            function hasModifier(tsModifiers: readonly Modifier[] | undefined, tsModifierKind: number): boolean;
13279            function unwrapParenthesized(tsExpr: Expression): Expression;
13280            function followIfAliased(sym: Symbol): Symbol;
13281            function trueSymbolAtLocation(node: Node): Symbol | undefined;
13282            function clearTrueSymbolAtLocationCache(): void;
13283            function isTypeDeclSyntaxKind(kind: SyntaxKind): boolean;
13284            function symbolHasDuplicateName(symbol: Symbol, tsDeclKind: SyntaxKind): boolean;
13285            function isReferenceType(tsType: Type): boolean;
13286            function isPrimitiveType(type: Type): boolean;
13287            function isPrimitiveLiteralType(type: ts.Type): boolean;
13288            function isPurePrimitiveLiteralType(type: ts.Type): boolean;
13289            function isTypeSymbol(symbol: Symbol | undefined): boolean;
13290            function isGenericArrayType(tsType: Type): tsType is TypeReference;
13291            function isReadonlyArrayType(tsType: Type): boolean;
13292            function isTypedArray(tsType: ts.Type): boolean;
13293            function isArray(tsType: ts.Type): boolean;
13294            function isTuple(tsType: ts.Type): boolean;
13295            function isOrDerivedFrom(tsType: ts.Type, checkType: CheckType, checkedBaseTypes?: Set<ts.Type>): boolean;
13296            function isTypeReference(tsType: Type): tsType is TypeReference;
13297            function isNullType(tsTypeNode: TypeNode): boolean;
13298            function isThisOrSuperExpr(tsExpr: Expression): boolean;
13299            function isPrototypeSymbol(symbol: Symbol | undefined): boolean;
13300            function isFunctionSymbol(symbol: Symbol | undefined): boolean;
13301            function isInterfaceType(tsType: Type | undefined): boolean;
13302            function isAnyType(tsType: Type): tsType is TypeReference;
13303            function isUnknownType(tsType: Type): boolean;
13304            function isUnsupportedType(tsType: Type): boolean;
13305            function isUnsupportedUnionType(tsType: Type): boolean;
13306            function isFunctionOrMethod(tsSymbol: Symbol | undefined): boolean;
13307            function isMethodAssignment(tsSymbol: Symbol | undefined): boolean;
13308            function getDeclaration(tsSymbol: ts.Symbol | undefined): ts.Declaration | undefined;
13309            function isValidEnumMemberInit(tsExpr: Expression): boolean;
13310            function isCompileTimeExpression(tsExpr: Expression): boolean;
13311            function isConst(tsNode: Node): boolean;
13312            function isNumberConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
13313            function isIntegerConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
13314            function isStringConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression): boolean;
13315            function relatedByInheritanceOrIdentical(typeA: Type, typeB: Type): boolean;
13316            function reduceReference(t: ts.Type): ts.Type;
13317            function needToDeduceStructuralIdentity(lhsType: Type, rhsType: Type, rhsExpr: Expression, isStrict?: boolean): boolean;
13318            function needStrictMatchType(lhsType: ts.Type, rhsType: ts.Type): boolean;
13319            function hasPredecessor(node: Node, predicate: (node: Node) => boolean): boolean;
13320            function processParentTypes(parentTypes: NodeArray<ExpressionWithTypeArguments>, typeB: Type, processInterfaces: boolean): boolean;
13321            function isObject(tsType: Type): boolean;
13322            function logTscDiagnostic(diagnostics: readonly Diagnostic[], log: (message: any, ...args: any[]) => void): void;
13323            function encodeProblemInfo(problem: ProblemInfo): string;
13324            function decodeAutofixInfo(info: string): AutofixInfo;
13325            function isCallToFunctionWithOmittedReturnType(tsExpr: Expression): boolean;
13326            function validateObjectLiteralType(type: Type | undefined): boolean;
13327            function isStructDeclarationKind(kind: SyntaxKind): boolean;
13328            function isStructDeclaration(node: Node): boolean;
13329            function isStructObjectInitializer(objectLiteral: ObjectLiteralExpression): boolean;
13330            function hasMethods(type: Type): boolean;
13331            function checkTypeSet(typeSet: ts.Type, predicate: CheckType): boolean;
13332            function getNonNullableType(t: ts.Type): ts.Type;
13333            function isObjectLiteralAssignable(lhsType: ts.Type | undefined, rhsExpr: ts.ObjectLiteralExpression): boolean;
13334            function isLiteralType(type: Type): boolean;
13335            function validateFields(objectType: Type, objectLiteral: ObjectLiteralExpression): boolean;
13336            function isSupportedType(typeNode: TypeNode): boolean;
13337            function isStruct(symbol: Symbol): boolean;
13338            type CheckType = ((t: Type) => boolean);
13339            const ES_OBJECT = "ESObject";
13340            const LIMITED_STD_GLOBAL_FUNC: string[];
13341            const LIMITED_STD_OBJECT_API: string[];
13342            const LIMITED_STD_REFLECT_API: string[];
13343            const LIMITED_STD_PROXYHANDLER_API: string[];
13344            const FUNCTION_HAS_NO_RETURN_ERROR_CODE = 2366;
13345            const NON_RETURN_FUNCTION_DECORATORS: string[];
13346            const STANDARD_LIBRARIES: string[];
13347            const TYPED_ARRAYS: string[];
13348            function getParentSymbolName(symbol: Symbol): string | undefined;
13349            function isGlobalSymbol(symbol: Symbol): boolean;
13350            function isSymbolAPI(symbol: Symbol): boolean;
13351            function isStdSymbol(symbol: ts.Symbol): boolean;
13352            function isSymbolIterator(symbol: ts.Symbol): boolean;
13353            function isSymbolIteratorExpression(expr: ts.Expression): boolean;
13354            function isDefaultImport(importSpec: ImportSpecifier): boolean;
13355            function hasAccessModifier(decl: Declaration): boolean;
13356            function getModifier(modifiers: readonly Modifier[] | undefined, modifierKind: SyntaxKind): Modifier | undefined;
13357            function getAccessModifier(modifiers: readonly Modifier[] | undefined): Modifier | undefined;
13358            function isStdRecordType(type: Type): boolean;
13359            function isStdMapType(type: Type): boolean;
13360            function isStdErrorType(type: ts.Type): boolean;
13361            function isStdPartialType(type: Type): boolean;
13362            function isStdRequiredType(type: Type): boolean;
13363            function isStdReadonlyType(type: Type): boolean;
13364            function isLibraryType(type: Type): boolean;
13365            function hasLibraryType(node: Node): boolean;
13366            function isLibrarySymbol(sym: Symbol | undefined): boolean;
13367            function srcFilePathContainsDirectory(srcFile: SourceFile, dir: string): boolean;
13368            function pathContainsDirectory(targetPath: string, dir: string): boolean;
13369            function getScriptKind(srcFile: SourceFile): ScriptKind;
13370            function isStdLibraryType(type: Type): boolean;
13371            function isStdLibrarySymbol(sym: Symbol | undefined): boolean;
13372            function isIntrinsicObjectType(type: Type): boolean;
13373            function isDynamicType(type: Type | undefined): boolean | undefined;
13374            function isObjectType(type: ts.Type): type is ts.ObjectType;
13375            function isAnonymous(type: ts.Type): boolean;
13376            function isDynamicLiteralInitializer(expr: Expression): boolean;
13377            function isEsObjectType(typeNode: ts.TypeNode | undefined): boolean;
13378            function isInsideBlock(node: ts.Node): boolean;
13379            function isEsObjectPossiblyAllowed(typeRef: ts.TypeReferenceNode): boolean;
13380            function isValueAssignableToESObject(node: ts.Node): boolean;
13381            function getVariableDeclarationTypeNode(node: Node): TypeNode | undefined;
13382            function getSymbolDeclarationTypeNode(sym: ts.Symbol): ts.TypeNode | undefined;
13383            function hasEsObjectType(node: Node): boolean;
13384            function symbolHasEsObjectType(sym: ts.Symbol): boolean;
13385            function isEsObjectSymbol(sym: Symbol): boolean;
13386            function isAnonymousType(type: Type): boolean;
13387            function getSymbolOfCallExpression(callExpr: CallExpression): Symbol | undefined;
13388            function typeIsRecursive(topType: Type, type?: Type | undefined): boolean;
13389            function getTypeOrTypeConstraintAtLocation(expr: ts.Expression): ts.Type;
13390            function isStdBigIntType(type: ts.Type): boolean;
13391            function isStdNumberType(type: ts.Type): boolean;
13392            function isStdBooleanType(type: ts.Type): boolean;
13393            function isEnumStringLiteral(expr: ts.Expression): boolean;
13394            function isValidComputedPropertyName(computedProperty: ComputedPropertyName, isRecordObjectInitializer?: boolean): boolean;
13395            function isAllowedIndexSignature(node: ts.IndexSignatureDeclaration): boolean;
13396            function isArkTSCollectionsArrayLikeType(type: ts.Type): boolean;
13397            function isArkTSCollectionsClassOrInterfaceDeclaration(decl: ts.Node): boolean;
13398            function getDecoratorName(decorator: ts.Decorator): string;
13399            function unwrapParenthesizedTypeNode(typeNode: ts.TypeNode): ts.TypeNode;
13400            function isSendableTypeNode(typeNode: ts.TypeNode, isShared?: boolean): boolean;
13401            function isSendableType(type: ts.Type): boolean;
13402            function isShareableType(tsType: ts.Type): boolean;
13403            function isSendableClassOrInterface(type: ts.Type): boolean;
13404            function typeContainsSendableClassOrInterface(type: ts.Type): boolean;
13405            function typeContainsNonSendableClassOrInterface(type: ts.Type): boolean;
13406            function isConstEnum(sym: ts.Symbol | undefined): boolean;
13407            function isSendableUnionType(type: ts.UnionType): boolean;
13408            function hasSendableDecorator(decl: ts.ClassDeclaration | ts.FunctionDeclaration | ts.TypeAliasDeclaration): boolean;
13409            function getNonSendableDecorators(decl: ts.ClassDeclaration | ts.FunctionDeclaration | ts.TypeAliasDeclaration): ts.Decorator[] | undefined;
13410            function getSendableDecorator(decl: ts.ClassDeclaration | ts.FunctionDeclaration | ts.TypeAliasDeclaration): ts.Decorator | undefined;
13411            function getDecoratorsIfInSendableClass(declaration: ts.HasDecorators): readonly ts.Decorator[] | undefined;
13412            function isISendableInterface(type: ts.Type): boolean;
13413            function isSharedModule(sourceFile: ts.SourceFile): boolean;
13414            function getDeclarationNode(node: ts.Node): ts.Declaration | undefined;
13415            function isShareableEntity(node: ts.Node): boolean;
13416            function isSendableClassOrInterfaceEntity(node: ts.Node): boolean;
13417            function isInImportWhiteList(resolvedModule: ResolvedModuleFull): boolean;
13418            function hasSendableDecoratorFunctionOverload(decl: ts.FunctionDeclaration): boolean;
13419            function isSendableFunction(type: ts.Type): boolean;
13420            function isSendableTypeAlias(type: ts.Type): boolean;
13421            function hasSendableTypeAlias(type: ts.Type): boolean;
13422            function isNonSendableFunctionTypeAlias(type: ts.Type): boolean;
13423            function isWrongSendableFunctionAssignment(lhsType: ts.Type, rhsType: ts.Type): boolean;
13424            function searchFileExportDecl(sourceFile: ts.SourceFile, targetDecls?: ts.SyntaxKind[]): Set<ts.Node>;
13425            function normalizePath(path: string): string;
13426            function clearUtilsGlobalvariables(): void;
13427        }
13428    }
13429}
13430declare namespace ts {
13431    namespace ArkTSLinter_1_1 {
13432        namespace Autofixer {
13433            import AutofixInfo = Common.AutofixInfo;
13434            import FaultID = Problems.FaultID;
13435            const AUTOFIX_ALL: AutofixInfo;
13436            const autofixInfo: AutofixInfo[];
13437            function shouldAutofix(node: Node, faultID: FaultID): boolean;
13438            interface Autofix {
13439                replacementText: string;
13440                start: number;
13441                end: number;
13442            }
13443            function fixLiteralAsPropertyName(node: Node): Autofix[] | undefined;
13444            function fixPropertyAccessByIndex(node: Node): Autofix[] | undefined;
13445            function fixFunctionExpression(funcExpr: FunctionExpression, params?: NodeArray<ParameterDeclaration>, retType?: TypeNode | undefined): Autofix;
13446            function fixReturnType(funcLikeDecl: FunctionLikeDeclaration, typeNode: TypeNode): Autofix;
13447            function fixCtorParameterProperties(ctorDecl: ConstructorDeclaration, paramTypes: TypeNode[]): Autofix[] | undefined;
13448        }
13449    }
13450}
13451declare namespace ts {
13452    namespace ArkTSLinter_1_1 {
13453        import FaultID = Problems.FaultID;
13454        class LinterConfig {
13455            static nodeDesc: string[];
13456            static tsSyntaxKindNames: string[];
13457            static initStatic(): void;
13458            static terminalTokens: Set<SyntaxKind>;
13459            static incrementOnlyTokens: ESMap<SyntaxKind, FaultID>;
13460        }
13461    }
13462}
13463declare namespace ts {
13464    namespace ArkTSLinter_1_1 {
13465        import Autofix = Autofixer.Autofix;
13466        import LibraryTypeCallDiagnosticChecker = LibraryTypeCallDiagnosticCheckerNamespace.LibraryTypeCallDiagnosticChecker;
13467        interface ProblemInfo {
13468            line: number;
13469            column: number;
13470            start: number;
13471            end: number;
13472            type: string;
13473            severity: number;
13474            problem: string;
13475            suggest: string;
13476            rule: string;
13477            ruleTag: number;
13478            autofixable: boolean;
13479            autofix?: Autofix[];
13480        }
13481        class TypeScriptLinter {
13482            private sourceFile;
13483            private tscStrictDiagnostics?;
13484            static ideMode: boolean;
13485            static strictMode: boolean;
13486            static logTscErrors: boolean;
13487            static warningsAsErrors: boolean;
13488            static lintEtsOnly: boolean;
13489            static totalVisitedNodes: number;
13490            static nodeCounters: number[];
13491            static lineCounters: number[];
13492            static totalErrorLines: number;
13493            static errorLineNumbersString: string;
13494            static totalWarningLines: number;
13495            static warningLineNumbersString: string;
13496            static reportDiagnostics: boolean;
13497            static problemsInfos: ProblemInfo[];
13498            static filteredDiagnosticMessages: DiagnosticMessageChain[];
13499            static sharedModulesCache: ESMap<string, boolean>;
13500            static strictDiagnosticCache: Set<Diagnostic>;
13501            static unknowDiagnosticCache: Set<Diagnostic>;
13502            static initGlobals(): void;
13503            static initStatic(): void;
13504            static tsTypeChecker: TypeChecker;
13505            currentErrorLine: number;
13506            currentWarningLine: number;
13507            staticBlocks: Set<string>;
13508            libraryTypeCallDiagnosticChecker: LibraryTypeCallDiagnosticChecker;
13509            skipArkTSStaticBlocksCheck: boolean;
13510            private fileExportSendableDeclCaches?;
13511            private compatibleSdkVersionStage;
13512            private compatibleSdkVersion;
13513            constructor(sourceFile: SourceFile, tsProgram: Program, tscStrictDiagnostics?: Map<Diagnostic[]> | undefined);
13514            static clearTsTypeChecker(): void;
13515            readonly handlersMap: ESMap<SyntaxKind, (node: Node) => void>;
13516            incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void;
13517            private forEachNodeInSubtree;
13518            private visitSourceFile;
13519            private countInterfaceExtendsDifferentPropertyTypes;
13520            private countDeclarationsWithDuplicateName;
13521            private countClassMembersWithDuplicateName;
13522            private static scopeContainsThis;
13523            private isPrototypePropertyAccess;
13524            private interfaceInheritanceLint;
13525            private lintForInterfaceExtendsDifferentPorpertyTypes;
13526            private handleObjectLiteralExpression;
13527            private handleArrayLiteralExpression;
13528            private handleParameter;
13529            private handleEnumDeclaration;
13530            private handleInterfaceDeclaration;
13531            private handleThrowStatement;
13532            private handleForStatement;
13533            private handleForInStatement;
13534            private handleForOfStatement;
13535            private handleImportDeclaration;
13536            private handleSharedModuleNoSideEffectImport;
13537            private static inSharedModule;
13538            private handlePropertyAccessExpression;
13539            private handlePropertyDeclaration;
13540            private handleSendableClassProperty;
13541            private checkTypeAliasInSendableScope;
13542            private isNoneSendableTypeAlias;
13543            private handlePropertyAssignment;
13544            private handlePropertySignature;
13545            private handleSendableInterfaceProperty;
13546            private filterOutDecoratorsDiagnostics;
13547            private checkInRange;
13548            private filterStrictDiagnostics;
13549            private static isClassLikeOrIface;
13550            private handleFunctionExpression;
13551            private handleArrowFunction;
13552            private handleFunctionDeclaration;
13553            private handleMissingReturnType;
13554            private hasLimitedTypeInferenceFromReturnExpr;
13555            private isValidTypeForUnaryArithmeticOperator;
13556            private handlePrefixUnaryExpression;
13557            private handleBinaryExpression;
13558            private handleVariableDeclarationList;
13559            private handleVariableDeclaration;
13560            private handleEsObjectDelaration;
13561            private handleEsObjectAssignment;
13562            private handleCatchClause;
13563            private handleClassDeclaration;
13564            private scanCapturedVarsInSendableScope;
13565            private checkLocalDecl;
13566            private checkLocalDeclWithSendableClosure;
13567            private checkIsTopClosure;
13568            private checkNamespaceImportVar;
13569            isFileExportSendableDecl(decl: ts.Declaration): boolean;
13570            private checkClassDeclarationHeritageClause;
13571            private isValidSendableClassExtends;
13572            private checkSendableTypeParameter;
13573            private processClassStaticBlocks;
13574            private handleModuleDeclaration;
13575            private handleTypeAliasDeclaration;
13576            private handleImportClause;
13577            private handleImportSpecifier;
13578            private handleNamespaceImport;
13579            private handleTypeAssertionExpression;
13580            private handleMethodDeclaration;
13581            private handleMethodSignature;
13582            private handleIdentifier;
13583            private isAllowedClassValueContext;
13584            private handleRestrictedValues;
13585            private identiferUseInValueContext;
13586            private isEnumPropAccess;
13587            private isElementAcessAllowed;
13588            private handleElementAccessExpression;
13589            private handleEnumMember;
13590            private handleExportAssignment;
13591            private handleCallExpression;
13592            private handleEtsComponentExpression;
13593            private handleImportCall;
13594            private handleRequireCall;
13595            private handleGenericCallWithNoTypeArgs;
13596            private static readonly listFunctionApplyCallApis;
13597            private static readonly listFunctionBindApis;
13598            private handleFunctionApplyBindPropCall;
13599            private handleStructIdentAndUndefinedInArgs;
13600            private static LimitedApis;
13601            private handleStdlibAPICall;
13602            private findNonFilteringRangesFunctionCalls;
13603            private handleLibraryTypeCall;
13604            private handleNewExpression;
13605            private handleSendableGenericTypes;
13606            private handleAsExpression;
13607            private handleTypeReference;
13608            private checkSendableTypeArguments;
13609            private handleMetaProperty;
13610            private handleSpreadOp;
13611            private handleConstructSignature;
13612            private handleExpressionWithTypeArguments;
13613            private handleComputedPropertyName;
13614            private isSendableCompPropName;
13615            private handleGetAccessor;
13616            private handleSetAccessor;
13617            private handleDeclarationInferredType;
13618            private handleDefiniteAssignmentAssertion;
13619            private validatedTypesSet;
13620            private checkAnyOrUnknownChildNode;
13621            private handleInferredObjectreference;
13622            private validateDeclInferredType;
13623            private processNoCheckEntry;
13624            private reportThisKeywordsInScope;
13625            private handleCommentDirectives;
13626            private handleClassStaticBlockDeclaration;
13627            private handleIndexSignature;
13628            lint(): void;
13629            private handleExportKeyword;
13630            private handleExportDeclaration;
13631            private handleReturnStatement;
13632            /**
13633             * 'arkts-no-structural-typing' check was missing in some scenarios,
13634             * in order not to cause incompatibility,
13635             * only need to strictly match the type of filling the check again
13636             */
13637            private checkAssignmentMatching;
13638            private handleDecorator;
13639            private isSendableDecoratorValid;
13640        }
13641    }
13642}
13643declare namespace ts {
13644    namespace ArkTSLinter_1_1 {
13645        import Autofix = Autofixer.Autofix;
13646        interface KitSymbol {
13647            source: string;
13648            bindings: string;
13649        }
13650        type KitSymbols = Record<string, KitSymbol>;
13651        interface KitInfo {
13652            symbols?: KitSymbols;
13653        }
13654        class InteropTypescriptLinter {
13655            private sourceFile;
13656            private isInSdk;
13657            static strictMode: boolean;
13658            static totalVisitedNodes: number;
13659            static nodeCounters: number[];
13660            static lineCounters: number[];
13661            static totalErrorLines: number;
13662            static errorLineNumbersString: string;
13663            static totalWarningLines: number;
13664            static warningLineNumbersString: string;
13665            static reportDiagnostics: boolean;
13666            static problemsInfos: ProblemInfo[];
13667            static initGlobals(): void;
13668            static initStatic(): void;
13669            static tsTypeChecker: TypeChecker;
13670            static etsLoaderPath?: string;
13671            static kitInfos: Map<KitInfo>;
13672            private KIT;
13673            private D_TS;
13674            private D_ETS;
13675            private ETS;
13676            private SDK_PATH;
13677            currentErrorLine: number;
13678            currentWarningLine: number;
13679            constructor(sourceFile: SourceFile, tsProgram: Program, isInSdk: boolean);
13680            static clearTsTypeChecker(): void;
13681            readonly handlersMap: ESMap<SyntaxKind, (node: Node) => void>;
13682            incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void;
13683            private forEachNodeInSubtree;
13684            private visitSourceFile;
13685            private handleImportDeclaration;
13686            private checkSendableClassorISendable;
13687            private checkKitImportClause;
13688            private checkImportClause;
13689            private allowInSdkImportSendable;
13690            private handleClassDeclaration;
13691            private checkClassOrInterfaceDeclarationHeritageClause;
13692            private handleInterfaceDeclaration;
13693            private handleNewExpression;
13694            private handleSendableGenericTypes;
13695            private handleObjectLiteralExpression;
13696            private handleArrayLiteralExpression;
13697            private handleAsExpression;
13698            private handleExportDeclaration;
13699            private handleExportAssignment;
13700            private initKitInfos;
13701            private getKitModuleFileNames;
13702            lint(): void;
13703        }
13704    }
13705}
13706declare namespace ts {
13707    namespace ArkTSLinter_1_1 {
13708        class TSCCompiledProgram {
13709            private diagnosticsExtractor;
13710            constructor(program: BuilderProgram);
13711            getProgram(): Program;
13712            getBuilderProgram(): BuilderProgram;
13713            getStrictDiagnostics(sourceFile: SourceFile): Diagnostic[];
13714            doAllGetDiagnostics(): void;
13715        }
13716    }
13717}
13718declare namespace ts {
13719    namespace ArkTSLinter_1_1 {
13720        function translateDiag(srcFile: SourceFile, problemInfo: ProblemInfo): Diagnostic;
13721        function runArkTSLinter(tsBuilderProgram: BuilderProgram, srcFile?: SourceFile, buildInfoWriteFile?: WriteFileCallback, arkTSVersion?: string): Diagnostic[];
13722    }
13723}
13724declare namespace ts {
13725    enum TimePhase {
13726        START = "start",
13727        GET_PROGRAM = "getProgram(not ArkTSLinter)",
13728        UPDATE_ERROR_FILE = "updateErrorFile",
13729        INIT = "init",
13730        STRICT_PROGRAM_GET_SEMANTIC_DIAGNOSTICS = "strictProgramGetSemanticDiagnostics",
13731        NON_STRICT_PROGRAM_GET_SEMANTIC_DIAGNOSTICS = "nonStrictProgramGetSemanticDiagnostics",
13732        NON_STRICT_PROGRAM_GET_SYNTACTIC_DIAGNOSTICS = "nonStrictProgramGetSyntacticDiagnostics",
13733        GET_TSC_DIAGNOSTICS = "getTscDiagnostics",
13734        EMIT_BUILD_INFO = "emitBuildInfo",
13735        LINT = "lint"
13736    }
13737    class ArkTSLinterTimePrinter {
13738        private static instance?;
13739        private arkTSTimePrintSwitch;
13740        private timeMap;
13741        private constructor();
13742        static getInstance(): ArkTSLinterTimePrinter;
13743        static destroyInstance(): void;
13744        setArkTSTimePrintSwitch(arkTSTimePrintSwitch: boolean): void;
13745        appendTime(key: string): void;
13746        private formatMapAsTable;
13747        printTimes(): void;
13748    }
13749}
13750
13751export = ts;
13752export as namespace ts;