• 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    namespace server {
18        type ActionSet = "action::set";
19        type ActionInvalidate = "action::invalidate";
20        type ActionPackageInstalled = "action::packageInstalled";
21        type EventTypesRegistry = "event::typesRegistry";
22        type EventBeginInstallTypes = "event::beginInstallTypes";
23        type EventEndInstallTypes = "event::endInstallTypes";
24        type EventInitializationFailed = "event::initializationFailed";
25        interface TypingInstallerResponse {
26            readonly kind: ActionSet | ActionInvalidate | EventTypesRegistry | ActionPackageInstalled | EventBeginInstallTypes | EventEndInstallTypes | EventInitializationFailed;
27        }
28        interface TypingInstallerRequestWithProjectName {
29            readonly projectName: string;
30        }
31        interface DiscoverTypings extends TypingInstallerRequestWithProjectName {
32            readonly fileNames: string[];
33            readonly projectRootPath: Path;
34            readonly compilerOptions: CompilerOptions;
35            readonly watchOptions?: WatchOptions;
36            readonly typeAcquisition: TypeAcquisition;
37            readonly unresolvedImports: SortedReadonlyArray<string>;
38            readonly cachePath?: string;
39            readonly kind: "discover";
40        }
41        interface CloseProject extends TypingInstallerRequestWithProjectName {
42            readonly kind: "closeProject";
43        }
44        interface TypesRegistryRequest {
45            readonly kind: "typesRegistry";
46        }
47        interface InstallPackageRequest extends TypingInstallerRequestWithProjectName {
48            readonly kind: "installPackage";
49            readonly fileName: Path;
50            readonly packageName: string;
51            readonly projectRootPath: Path;
52        }
53        interface PackageInstalledResponse extends ProjectResponse {
54            readonly kind: ActionPackageInstalled;
55            readonly success: boolean;
56            readonly message: string;
57        }
58        interface InitializationFailedResponse extends TypingInstallerResponse {
59            readonly kind: EventInitializationFailed;
60            readonly message: string;
61            readonly stack?: string;
62        }
63        interface ProjectResponse extends TypingInstallerResponse {
64            readonly projectName: string;
65        }
66        interface InvalidateCachedTypings extends ProjectResponse {
67            readonly kind: ActionInvalidate;
68        }
69        interface InstallTypes extends ProjectResponse {
70            readonly kind: EventBeginInstallTypes | EventEndInstallTypes;
71            readonly eventId: number;
72            readonly typingsInstallerVersion: string;
73            readonly packagesToInstall: readonly string[];
74        }
75        interface BeginInstallTypes extends InstallTypes {
76            readonly kind: EventBeginInstallTypes;
77        }
78        interface EndInstallTypes extends InstallTypes {
79            readonly kind: EventEndInstallTypes;
80            readonly installSuccess: boolean;
81        }
82        interface SetTypings extends ProjectResponse {
83            readonly typeAcquisition: TypeAcquisition;
84            readonly compilerOptions: CompilerOptions;
85            readonly typings: string[];
86            readonly unresolvedImports: SortedReadonlyArray<string>;
87            readonly kind: ActionSet;
88        }
89        namespace protocol {
90            /**
91             * Declaration module describing the TypeScript Server protocol
92             */
93            enum CommandTypes {
94                JsxClosingTag = "jsxClosingTag",
95                Brace = "brace",
96                BraceCompletion = "braceCompletion",
97                GetSpanOfEnclosingComment = "getSpanOfEnclosingComment",
98                Change = "change",
99                Close = "close",
100                /** @deprecated Prefer CompletionInfo -- see comment on CompletionsResponse */
101                Completions = "completions",
102                CompletionInfo = "completionInfo",
103                CompletionDetails = "completionEntryDetails",
104                CompileOnSaveAffectedFileList = "compileOnSaveAffectedFileList",
105                CompileOnSaveEmitFile = "compileOnSaveEmitFile",
106                Configure = "configure",
107                Definition = "definition",
108                DefinitionAndBoundSpan = "definitionAndBoundSpan",
109                Implementation = "implementation",
110                Exit = "exit",
111                FileReferences = "fileReferences",
112                Format = "format",
113                Formatonkey = "formatonkey",
114                Geterr = "geterr",
115                GeterrForProject = "geterrForProject",
116                SemanticDiagnosticsSync = "semanticDiagnosticsSync",
117                SyntacticDiagnosticsSync = "syntacticDiagnosticsSync",
118                SuggestionDiagnosticsSync = "suggestionDiagnosticsSync",
119                NavBar = "navbar",
120                Navto = "navto",
121                NavTree = "navtree",
122                NavTreeFull = "navtree-full",
123                /** @deprecated */
124                Occurrences = "occurrences",
125                DocumentHighlights = "documentHighlights",
126                Open = "open",
127                Quickinfo = "quickinfo",
128                References = "references",
129                Reload = "reload",
130                Rename = "rename",
131                Saveto = "saveto",
132                SignatureHelp = "signatureHelp",
133                FindSourceDefinition = "findSourceDefinition",
134                Status = "status",
135                TypeDefinition = "typeDefinition",
136                ProjectInfo = "projectInfo",
137                ReloadProjects = "reloadProjects",
138                Unknown = "unknown",
139                OpenExternalProject = "openExternalProject",
140                OpenExternalProjects = "openExternalProjects",
141                CloseExternalProject = "closeExternalProject",
142                UpdateOpen = "updateOpen",
143                GetOutliningSpans = "getOutliningSpans",
144                TodoComments = "todoComments",
145                Indentation = "indentation",
146                DocCommentTemplate = "docCommentTemplate",
147                CompilerOptionsForInferredProjects = "compilerOptionsForInferredProjects",
148                GetCodeFixes = "getCodeFixes",
149                GetCombinedCodeFix = "getCombinedCodeFix",
150                ApplyCodeActionCommand = "applyCodeActionCommand",
151                GetSupportedCodeFixes = "getSupportedCodeFixes",
152                GetApplicableRefactors = "getApplicableRefactors",
153                GetEditsForRefactor = "getEditsForRefactor",
154                OrganizeImports = "organizeImports",
155                GetEditsForFileRename = "getEditsForFileRename",
156                ConfigurePlugin = "configurePlugin",
157                SelectionRange = "selectionRange",
158                ToggleLineComment = "toggleLineComment",
159                ToggleMultilineComment = "toggleMultilineComment",
160                CommentSelection = "commentSelection",
161                UncommentSelection = "uncommentSelection",
162                PrepareCallHierarchy = "prepareCallHierarchy",
163                ProvideCallHierarchyIncomingCalls = "provideCallHierarchyIncomingCalls",
164                ProvideCallHierarchyOutgoingCalls = "provideCallHierarchyOutgoingCalls",
165                ProvideInlayHints = "provideInlayHints"
166            }
167            /**
168             * A TypeScript Server message
169             */
170            interface Message {
171                /**
172                 * Sequence number of the message
173                 */
174                seq: number;
175                /**
176                 * One of "request", "response", or "event"
177                 */
178                type: "request" | "response" | "event";
179            }
180            /**
181             * Client-initiated request message
182             */
183            interface Request extends Message {
184                type: "request";
185                /**
186                 * The command to execute
187                 */
188                command: string;
189                /**
190                 * Object containing arguments for the command
191                 */
192                arguments?: any;
193            }
194            /**
195             * Request to reload the project structure for all the opened files
196             */
197            interface ReloadProjectsRequest extends Message {
198                command: CommandTypes.ReloadProjects;
199            }
200            /**
201             * Server-initiated event message
202             */
203            interface Event extends Message {
204                type: "event";
205                /**
206                 * Name of event
207                 */
208                event: string;
209                /**
210                 * Event-specific information
211                 */
212                body?: any;
213            }
214            /**
215             * Response by server to client request message.
216             */
217            interface Response extends Message {
218                type: "response";
219                /**
220                 * Sequence number of the request message.
221                 */
222                request_seq: number;
223                /**
224                 * Outcome of the request.
225                 */
226                success: boolean;
227                /**
228                 * The command requested.
229                 */
230                command: string;
231                /**
232                 * If success === false, this should always be provided.
233                 * Otherwise, may (or may not) contain a success message.
234                 */
235                message?: string;
236                /**
237                 * Contains message body if success === true.
238                 */
239                body?: any;
240                /**
241                 * Contains extra information that plugin can include to be passed on
242                 */
243                metadata?: unknown;
244                /**
245                 * Exposes information about the performance of this request-response pair.
246                 */
247                performanceData?: PerformanceData;
248            }
249            interface PerformanceData {
250                /**
251                 * Time spent updating the program graph, in milliseconds.
252                 */
253                updateGraphDurationMs?: number;
254                /**
255                 * The time spent creating or updating the auto-import program, in milliseconds.
256                 */
257                createAutoImportProviderProgramDurationMs?: number;
258            }
259            /**
260             * Arguments for FileRequest messages.
261             */
262            interface FileRequestArgs {
263                /**
264                 * The file for the request (absolute pathname required).
265                 */
266                file: string;
267                projectFileName?: string;
268            }
269            interface StatusRequest extends Request {
270                command: CommandTypes.Status;
271            }
272            interface StatusResponseBody {
273                /**
274                 * The TypeScript version (`ts.version`).
275                 */
276                version: string;
277            }
278            /**
279             * Response to StatusRequest
280             */
281            interface StatusResponse extends Response {
282                body: StatusResponseBody;
283            }
284            /**
285             * Requests a JS Doc comment template for a given position
286             */
287            interface DocCommentTemplateRequest extends FileLocationRequest {
288                command: CommandTypes.DocCommentTemplate;
289            }
290            /**
291             * Response to DocCommentTemplateRequest
292             */
293            interface DocCommandTemplateResponse extends Response {
294                body?: TextInsertion;
295            }
296            /**
297             * A request to get TODO comments from the file
298             */
299            interface TodoCommentRequest extends FileRequest {
300                command: CommandTypes.TodoComments;
301                arguments: TodoCommentRequestArgs;
302            }
303            /**
304             * Arguments for TodoCommentRequest request.
305             */
306            interface TodoCommentRequestArgs extends FileRequestArgs {
307                /**
308                 * Array of target TodoCommentDescriptors that describes TODO comments to be found
309                 */
310                descriptors: TodoCommentDescriptor[];
311            }
312            /**
313             * Response for TodoCommentRequest request.
314             */
315            interface TodoCommentsResponse extends Response {
316                body?: TodoComment[];
317            }
318            /**
319             * A request to determine if the caret is inside a comment.
320             */
321            interface SpanOfEnclosingCommentRequest extends FileLocationRequest {
322                command: CommandTypes.GetSpanOfEnclosingComment;
323                arguments: SpanOfEnclosingCommentRequestArgs;
324            }
325            interface SpanOfEnclosingCommentRequestArgs extends FileLocationRequestArgs {
326                /**
327                 * Requires that the enclosing span be a multi-line comment, or else the request returns undefined.
328                 */
329                onlyMultiLine: boolean;
330            }
331            /**
332             * Request to obtain outlining spans in file.
333             */
334            interface OutliningSpansRequest extends FileRequest {
335                command: CommandTypes.GetOutliningSpans;
336            }
337            interface OutliningSpan {
338                /** The span of the document to actually collapse. */
339                textSpan: TextSpan;
340                /** The span of the document to display when the user hovers over the collapsed span. */
341                hintSpan: TextSpan;
342                /** The text to display in the editor for the collapsed region. */
343                bannerText: string;
344                /**
345                 * Whether or not this region should be automatically collapsed when
346                 * the 'Collapse to Definitions' command is invoked.
347                 */
348                autoCollapse: boolean;
349                /**
350                 * Classification of the contents of the span
351                 */
352                kind: OutliningSpanKind;
353            }
354            /**
355             * Response to OutliningSpansRequest request.
356             */
357            interface OutliningSpansResponse extends Response {
358                body?: OutliningSpan[];
359            }
360            /**
361             * A request to get indentation for a location in file
362             */
363            interface IndentationRequest extends FileLocationRequest {
364                command: CommandTypes.Indentation;
365                arguments: IndentationRequestArgs;
366            }
367            /**
368             * Response for IndentationRequest request.
369             */
370            interface IndentationResponse extends Response {
371                body?: IndentationResult;
372            }
373            /**
374             * Indentation result representing where indentation should be placed
375             */
376            interface IndentationResult {
377                /**
378                 * The base position in the document that the indent should be relative to
379                 */
380                position: number;
381                /**
382                 * The number of columns the indent should be at relative to the position's column.
383                 */
384                indentation: number;
385            }
386            /**
387             * Arguments for IndentationRequest request.
388             */
389            interface IndentationRequestArgs extends FileLocationRequestArgs {
390                /**
391                 * An optional set of settings to be used when computing indentation.
392                 * If argument is omitted - then it will use settings for file that were previously set via 'configure' request or global settings.
393                 */
394                options?: EditorSettings;
395            }
396            /**
397             * Arguments for ProjectInfoRequest request.
398             */
399            interface ProjectInfoRequestArgs extends FileRequestArgs {
400                /**
401                 * Indicate if the file name list of the project is needed
402                 */
403                needFileNameList: boolean;
404            }
405            /**
406             * A request to get the project information of the current file.
407             */
408            interface ProjectInfoRequest extends Request {
409                command: CommandTypes.ProjectInfo;
410                arguments: ProjectInfoRequestArgs;
411            }
412            /**
413             * A request to retrieve compiler options diagnostics for a project
414             */
415            interface CompilerOptionsDiagnosticsRequest extends Request {
416                arguments: CompilerOptionsDiagnosticsRequestArgs;
417            }
418            /**
419             * Arguments for CompilerOptionsDiagnosticsRequest request.
420             */
421            interface CompilerOptionsDiagnosticsRequestArgs {
422                /**
423                 * Name of the project to retrieve compiler options diagnostics.
424                 */
425                projectFileName: string;
426            }
427            /**
428             * Response message body for "projectInfo" request
429             */
430            interface ProjectInfo {
431                /**
432                 * For configured project, this is the normalized path of the 'tsconfig.json' file
433                 * For inferred project, this is undefined
434                 */
435                configFileName: string;
436                /**
437                 * The list of normalized file name in the project, including 'lib.d.ts'
438                 */
439                fileNames?: string[];
440                /**
441                 * Indicates if the project has a active language service instance
442                 */
443                languageServiceDisabled?: boolean;
444            }
445            /**
446             * Represents diagnostic info that includes location of diagnostic in two forms
447             * - start position and length of the error span
448             * - startLocation and endLocation - a pair of Location objects that store start/end line and offset of the error span.
449             */
450            interface DiagnosticWithLinePosition {
451                message: string;
452                start: number;
453                length: number;
454                startLocation: Location;
455                endLocation: Location;
456                category: string;
457                code: number;
458                /** May store more in future. For now, this will simply be `true` to indicate when a diagnostic is an unused-identifier diagnostic. */
459                reportsUnnecessary?: {};
460                reportsDeprecated?: {};
461                relatedInformation?: DiagnosticRelatedInformation[];
462            }
463            /**
464             * Response message for "projectInfo" request
465             */
466            interface ProjectInfoResponse extends Response {
467                body?: ProjectInfo;
468            }
469            /**
470             * Request whose sole parameter is a file name.
471             */
472            interface FileRequest extends Request {
473                arguments: FileRequestArgs;
474            }
475            /**
476             * Instances of this interface specify a location in a source file:
477             * (file, line, character offset), where line and character offset are 1-based.
478             */
479            interface FileLocationRequestArgs extends FileRequestArgs {
480                /**
481                 * The line number for the request (1-based).
482                 */
483                line: number;
484                /**
485                 * The character offset (on the line) for the request (1-based).
486                 */
487                offset: number;
488            }
489            type FileLocationOrRangeRequestArgs = FileLocationRequestArgs | FileRangeRequestArgs;
490            /**
491             * Request refactorings at a given position or selection area.
492             */
493            interface GetApplicableRefactorsRequest extends Request {
494                command: CommandTypes.GetApplicableRefactors;
495                arguments: GetApplicableRefactorsRequestArgs;
496            }
497            type GetApplicableRefactorsRequestArgs = FileLocationOrRangeRequestArgs & {
498                triggerReason?: RefactorTriggerReason;
499                kind?: string;
500            };
501            type RefactorTriggerReason = "implicit" | "invoked";
502            /**
503             * Response is a list of available refactorings.
504             * Each refactoring exposes one or more "Actions"; a user selects one action to invoke a refactoring
505             */
506            interface GetApplicableRefactorsResponse extends Response {
507                body?: ApplicableRefactorInfo[];
508            }
509            /**
510             * A set of one or more available refactoring actions, grouped under a parent refactoring.
511             */
512            interface ApplicableRefactorInfo {
513                /**
514                 * The programmatic name of the refactoring
515                 */
516                name: string;
517                /**
518                 * A description of this refactoring category to show to the user.
519                 * If the refactoring gets inlined (see below), this text will not be visible.
520                 */
521                description: string;
522                /**
523                 * Inlineable refactorings can have their actions hoisted out to the top level
524                 * of a context menu. Non-inlineanable refactorings should always be shown inside
525                 * their parent grouping.
526                 *
527                 * If not specified, this value is assumed to be 'true'
528                 */
529                inlineable?: boolean;
530                actions: RefactorActionInfo[];
531            }
532            /**
533             * Represents a single refactoring action - for example, the "Extract Method..." refactor might
534             * offer several actions, each corresponding to a surround class or closure to extract into.
535             */
536            interface RefactorActionInfo {
537                /**
538                 * The programmatic name of the refactoring action
539                 */
540                name: string;
541                /**
542                 * A description of this refactoring action to show to the user.
543                 * If the parent refactoring is inlined away, this will be the only text shown,
544                 * so this description should make sense by itself if the parent is inlineable=true
545                 */
546                description: string;
547                /**
548                 * A message to show to the user if the refactoring cannot be applied in
549                 * the current context.
550                 */
551                notApplicableReason?: string;
552                /**
553                 * The hierarchical dotted name of the refactor action.
554                 */
555                kind?: string;
556            }
557            interface GetEditsForRefactorRequest extends Request {
558                command: CommandTypes.GetEditsForRefactor;
559                arguments: GetEditsForRefactorRequestArgs;
560            }
561            /**
562             * Request the edits that a particular refactoring action produces.
563             * Callers must specify the name of the refactor and the name of the action.
564             */
565            type GetEditsForRefactorRequestArgs = FileLocationOrRangeRequestArgs & {
566                refactor: string;
567                action: string;
568            };
569            interface GetEditsForRefactorResponse extends Response {
570                body?: RefactorEditInfo;
571            }
572            interface RefactorEditInfo {
573                edits: FileCodeEdits[];
574                /**
575                 * An optional location where the editor should start a rename operation once
576                 * the refactoring edits have been applied
577                 */
578                renameLocation?: Location;
579                renameFilename?: string;
580            }
581            /**
582             * Organize imports by:
583             *   1) Removing unused imports
584             *   2) Coalescing imports from the same module
585             *   3) Sorting imports
586             */
587            interface OrganizeImportsRequest extends Request {
588                command: CommandTypes.OrganizeImports;
589                arguments: OrganizeImportsRequestArgs;
590            }
591            type OrganizeImportsScope = GetCombinedCodeFixScope;
592            enum OrganizeImportsMode {
593                All = "All",
594                SortAndCombine = "SortAndCombine",
595                RemoveUnused = "RemoveUnused"
596            }
597            interface OrganizeImportsRequestArgs {
598                scope: OrganizeImportsScope;
599                /** @deprecated Use `mode` instead */
600                skipDestructiveCodeActions?: boolean;
601                mode?: OrganizeImportsMode;
602            }
603            interface OrganizeImportsResponse extends Response {
604                body: readonly FileCodeEdits[];
605            }
606            interface GetEditsForFileRenameRequest extends Request {
607                command: CommandTypes.GetEditsForFileRename;
608                arguments: GetEditsForFileRenameRequestArgs;
609            }
610            /** Note: Paths may also be directories. */
611            interface GetEditsForFileRenameRequestArgs {
612                readonly oldFilePath: string;
613                readonly newFilePath: string;
614            }
615            interface GetEditsForFileRenameResponse extends Response {
616                body: readonly FileCodeEdits[];
617            }
618            /**
619             * Request for the available codefixes at a specific position.
620             */
621            interface CodeFixRequest extends Request {
622                command: CommandTypes.GetCodeFixes;
623                arguments: CodeFixRequestArgs;
624            }
625            interface GetCombinedCodeFixRequest extends Request {
626                command: CommandTypes.GetCombinedCodeFix;
627                arguments: GetCombinedCodeFixRequestArgs;
628            }
629            interface GetCombinedCodeFixResponse extends Response {
630                body: CombinedCodeActions;
631            }
632            interface ApplyCodeActionCommandRequest extends Request {
633                command: CommandTypes.ApplyCodeActionCommand;
634                arguments: ApplyCodeActionCommandRequestArgs;
635            }
636            interface ApplyCodeActionCommandResponse extends Response {
637            }
638            interface FileRangeRequestArgs extends FileRequestArgs {
639                /**
640                 * The line number for the request (1-based).
641                 */
642                startLine: number;
643                /**
644                 * The character offset (on the line) for the request (1-based).
645                 */
646                startOffset: number;
647                /**
648                 * The line number for the request (1-based).
649                 */
650                endLine: number;
651                /**
652                 * The character offset (on the line) for the request (1-based).
653                 */
654                endOffset: number;
655            }
656            /**
657             * Instances of this interface specify errorcodes on a specific location in a sourcefile.
658             */
659            interface CodeFixRequestArgs extends FileRangeRequestArgs {
660                /**
661                 * Errorcodes we want to get the fixes for.
662                 */
663                errorCodes: readonly number[];
664            }
665            interface GetCombinedCodeFixRequestArgs {
666                scope: GetCombinedCodeFixScope;
667                fixId: {};
668            }
669            interface GetCombinedCodeFixScope {
670                type: "file";
671                args: FileRequestArgs;
672            }
673            interface ApplyCodeActionCommandRequestArgs {
674                /** May also be an array of commands. */
675                command: {};
676            }
677            /**
678             * Response for GetCodeFixes request.
679             */
680            interface GetCodeFixesResponse extends Response {
681                body?: CodeAction[];
682            }
683            /**
684             * A request whose arguments specify a file location (file, line, col).
685             */
686            interface FileLocationRequest extends FileRequest {
687                arguments: FileLocationRequestArgs;
688            }
689            /**
690             * A request to get codes of supported code fixes.
691             */
692            interface GetSupportedCodeFixesRequest extends Request {
693                command: CommandTypes.GetSupportedCodeFixes;
694            }
695            /**
696             * A response for GetSupportedCodeFixesRequest request.
697             */
698            interface GetSupportedCodeFixesResponse extends Response {
699                /**
700                 * List of error codes supported by the server.
701                 */
702                body?: string[];
703            }
704            /**
705             * A request to get encoded semantic classifications for a span in the file
706             */
707            interface EncodedSemanticClassificationsRequest extends FileRequest {
708                arguments: EncodedSemanticClassificationsRequestArgs;
709            }
710            /**
711             * Arguments for EncodedSemanticClassificationsRequest request.
712             */
713            interface EncodedSemanticClassificationsRequestArgs extends FileRequestArgs {
714                /**
715                 * Start position of the span.
716                 */
717                start: number;
718                /**
719                 * Length of the span.
720                 */
721                length: number;
722                /**
723                 * Optional parameter for the semantic highlighting response, if absent it
724                 * defaults to "original".
725                 */
726                format?: "original" | "2020";
727            }
728            /** The response for a EncodedSemanticClassificationsRequest */
729            interface EncodedSemanticClassificationsResponse extends Response {
730                body?: EncodedSemanticClassificationsResponseBody;
731            }
732            /**
733             * Implementation response message. Gives series of text spans depending on the format ar.
734             */
735            interface EncodedSemanticClassificationsResponseBody {
736                endOfLineState: EndOfLineState;
737                spans: number[];
738            }
739            /**
740             * Arguments in document highlight request; include: filesToSearch, file,
741             * line, offset.
742             */
743            interface DocumentHighlightsRequestArgs extends FileLocationRequestArgs {
744                /**
745                 * List of files to search for document highlights.
746                 */
747                filesToSearch: string[];
748            }
749            /**
750             * Go to definition request; value of command field is
751             * "definition". Return response giving the file locations that
752             * define the symbol found in file at location line, col.
753             */
754            interface DefinitionRequest extends FileLocationRequest {
755                command: CommandTypes.Definition;
756            }
757            interface DefinitionAndBoundSpanRequest extends FileLocationRequest {
758                readonly command: CommandTypes.DefinitionAndBoundSpan;
759            }
760            interface FindSourceDefinitionRequest extends FileLocationRequest {
761                readonly command: CommandTypes.FindSourceDefinition;
762            }
763            interface DefinitionAndBoundSpanResponse extends Response {
764                readonly body: DefinitionInfoAndBoundSpan;
765            }
766            /**
767             * Go to type request; value of command field is
768             * "typeDefinition". Return response giving the file locations that
769             * define the type for the symbol found in file at location line, col.
770             */
771            interface TypeDefinitionRequest extends FileLocationRequest {
772                command: CommandTypes.TypeDefinition;
773            }
774            /**
775             * Go to implementation request; value of command field is
776             * "implementation". Return response giving the file locations that
777             * implement the symbol found in file at location line, col.
778             */
779            interface ImplementationRequest extends FileLocationRequest {
780                command: CommandTypes.Implementation;
781            }
782            /**
783             * Location in source code expressed as (one-based) line and (one-based) column offset.
784             */
785            interface Location {
786                line: number;
787                offset: number;
788            }
789            /**
790             * Object found in response messages defining a span of text in source code.
791             */
792            interface TextSpan {
793                /**
794                 * First character of the definition.
795                 */
796                start: Location;
797                /**
798                 * One character past last character of the definition.
799                 */
800                end: Location;
801            }
802            /**
803             * Object found in response messages defining a span of text in a specific source file.
804             */
805            interface FileSpan extends TextSpan {
806                /**
807                 * File containing text span.
808                 */
809                file: string;
810            }
811            interface JSDocTagInfo {
812                /** Name of the JSDoc tag */
813                name: string;
814                /**
815                 * Comment text after the JSDoc tag -- the text after the tag name until the next tag or end of comment
816                 * Display parts when UserPreferences.displayPartsForJSDoc is true, flattened to string otherwise.
817                 */
818                text?: string | SymbolDisplayPart[];
819            }
820            interface TextSpanWithContext extends TextSpan {
821                contextStart?: Location;
822                contextEnd?: Location;
823            }
824            interface FileSpanWithContext extends FileSpan, TextSpanWithContext {
825            }
826            interface DefinitionInfo extends FileSpanWithContext {
827                /**
828                 * When true, the file may or may not exist.
829                 */
830                unverified?: boolean;
831            }
832            interface DefinitionInfoAndBoundSpan {
833                definitions: readonly DefinitionInfo[];
834                textSpan: TextSpan;
835            }
836            /**
837             * Definition response message.  Gives text range for definition.
838             */
839            interface DefinitionResponse extends Response {
840                body?: DefinitionInfo[];
841            }
842            interface DefinitionInfoAndBoundSpanResponse extends Response {
843                body?: DefinitionInfoAndBoundSpan;
844            }
845            /** @deprecated Use `DefinitionInfoAndBoundSpanResponse` instead. */
846            type DefinitionInfoAndBoundSpanReponse = DefinitionInfoAndBoundSpanResponse;
847            /**
848             * Definition response message.  Gives text range for definition.
849             */
850            interface TypeDefinitionResponse extends Response {
851                body?: FileSpanWithContext[];
852            }
853            /**
854             * Implementation response message.  Gives text range for implementations.
855             */
856            interface ImplementationResponse extends Response {
857                body?: FileSpanWithContext[];
858            }
859            /**
860             * Request to get brace completion for a location in the file.
861             */
862            interface BraceCompletionRequest extends FileLocationRequest {
863                command: CommandTypes.BraceCompletion;
864                arguments: BraceCompletionRequestArgs;
865            }
866            /**
867             * Argument for BraceCompletionRequest request.
868             */
869            interface BraceCompletionRequestArgs extends FileLocationRequestArgs {
870                /**
871                 * Kind of opening brace
872                 */
873                openingBrace: string;
874            }
875            interface JsxClosingTagRequest extends FileLocationRequest {
876                readonly command: CommandTypes.JsxClosingTag;
877                readonly arguments: JsxClosingTagRequestArgs;
878            }
879            interface JsxClosingTagRequestArgs extends FileLocationRequestArgs {
880            }
881            interface JsxClosingTagResponse extends Response {
882                readonly body: TextInsertion;
883            }
884            /**
885             * @deprecated
886             * Get occurrences request; value of command field is
887             * "occurrences". Return response giving spans that are relevant
888             * in the file at a given line and column.
889             */
890            interface OccurrencesRequest extends FileLocationRequest {
891                command: CommandTypes.Occurrences;
892            }
893            /** @deprecated */
894            interface OccurrencesResponseItem extends FileSpanWithContext {
895                /**
896                 * True if the occurrence is a write location, false otherwise.
897                 */
898                isWriteAccess: boolean;
899                /**
900                 * True if the occurrence is in a string, undefined otherwise;
901                 */
902                isInString?: true;
903            }
904            /** @deprecated */
905            interface OccurrencesResponse extends Response {
906                body?: OccurrencesResponseItem[];
907            }
908            /**
909             * Get document highlights request; value of command field is
910             * "documentHighlights". Return response giving spans that are relevant
911             * in the file at a given line and column.
912             */
913            interface DocumentHighlightsRequest extends FileLocationRequest {
914                command: CommandTypes.DocumentHighlights;
915                arguments: DocumentHighlightsRequestArgs;
916            }
917            /**
918             * Span augmented with extra information that denotes the kind of the highlighting to be used for span.
919             */
920            interface HighlightSpan extends TextSpanWithContext {
921                kind: HighlightSpanKind;
922            }
923            /**
924             * Represents a set of highligh spans for a give name
925             */
926            interface DocumentHighlightsItem {
927                /**
928                 * File containing highlight spans.
929                 */
930                file: string;
931                /**
932                 * Spans to highlight in file.
933                 */
934                highlightSpans: HighlightSpan[];
935            }
936            /**
937             * Response for a DocumentHighlightsRequest request.
938             */
939            interface DocumentHighlightsResponse extends Response {
940                body?: DocumentHighlightsItem[];
941            }
942            /**
943             * Find references request; value of command field is
944             * "references". Return response giving the file locations that
945             * reference the symbol found in file at location line, col.
946             */
947            interface ReferencesRequest extends FileLocationRequest {
948                command: CommandTypes.References;
949            }
950            interface ReferencesResponseItem extends FileSpanWithContext {
951                /**
952                 * Text of line containing the reference. Including this
953                 * with the response avoids latency of editor loading files
954                 * to show text of reference line (the server already has loaded the referencing files).
955                 *
956                 * If {@link UserPreferences.disableLineTextInReferences} is enabled, the property won't be filled
957                 */
958                lineText?: string;
959                /**
960                 * True if reference is a write location, false otherwise.
961                 */
962                isWriteAccess: boolean;
963                /**
964                 * Present only if the search was triggered from a declaration.
965                 * True indicates that the references refers to the same symbol
966                 * (i.e. has the same meaning) as the declaration that began the
967                 * search.
968                 */
969                isDefinition?: boolean;
970            }
971            /**
972             * The body of a "references" response message.
973             */
974            interface ReferencesResponseBody {
975                /**
976                 * The file locations referencing the symbol.
977                 */
978                refs: readonly ReferencesResponseItem[];
979                /**
980                 * The name of the symbol.
981                 */
982                symbolName: string;
983                /**
984                 * The start character offset of the symbol (on the line provided by the references request).
985                 */
986                symbolStartOffset: number;
987                /**
988                 * The full display name of the symbol.
989                 */
990                symbolDisplayString: string;
991            }
992            /**
993             * Response to "references" request.
994             */
995            interface ReferencesResponse extends Response {
996                body?: ReferencesResponseBody;
997            }
998            interface FileReferencesRequest extends FileRequest {
999                command: CommandTypes.FileReferences;
1000            }
1001            interface FileReferencesResponseBody {
1002                /**
1003                 * The file locations referencing the symbol.
1004                 */
1005                refs: readonly ReferencesResponseItem[];
1006                /**
1007                 * The name of the symbol.
1008                 */
1009                symbolName: string;
1010            }
1011            interface FileReferencesResponse extends Response {
1012                body?: FileReferencesResponseBody;
1013            }
1014            /**
1015             * Argument for RenameRequest request.
1016             */
1017            interface RenameRequestArgs extends FileLocationRequestArgs {
1018                /**
1019                 * Should text at specified location be found/changed in comments?
1020                 */
1021                findInComments?: boolean;
1022                /**
1023                 * Should text at specified location be found/changed in strings?
1024                 */
1025                findInStrings?: boolean;
1026            }
1027            /**
1028             * Rename request; value of command field is "rename". Return
1029             * response giving the file locations that reference the symbol
1030             * found in file at location line, col. Also return full display
1031             * name of the symbol so that client can print it unambiguously.
1032             */
1033            interface RenameRequest extends FileLocationRequest {
1034                command: CommandTypes.Rename;
1035                arguments: RenameRequestArgs;
1036            }
1037            /**
1038             * Information about the item to be renamed.
1039             */
1040            type RenameInfo = RenameInfoSuccess | RenameInfoFailure;
1041            interface RenameInfoSuccess {
1042                /**
1043                 * True if item can be renamed.
1044                 */
1045                canRename: true;
1046                /**
1047                 * File or directory to rename.
1048                 * If set, `getEditsForFileRename` should be called instead of `findRenameLocations`.
1049                 */
1050                fileToRename?: string;
1051                /**
1052                 * Display name of the item to be renamed.
1053                 */
1054                displayName: string;
1055                /**
1056                 * Full display name of item to be renamed.
1057                 */
1058                fullDisplayName: string;
1059                /**
1060                 * The items's kind (such as 'className' or 'parameterName' or plain 'text').
1061                 */
1062                kind: ScriptElementKind;
1063                /**
1064                 * Optional modifiers for the kind (such as 'public').
1065                 */
1066                kindModifiers: string;
1067                /** Span of text to rename. */
1068                triggerSpan: TextSpan;
1069            }
1070            interface RenameInfoFailure {
1071                canRename: false;
1072                /**
1073                 * Error message if item can not be renamed.
1074                 */
1075                localizedErrorMessage: string;
1076            }
1077            /**
1078             *  A group of text spans, all in 'file'.
1079             */
1080            interface SpanGroup {
1081                /** The file to which the spans apply */
1082                file: string;
1083                /** The text spans in this group */
1084                locs: RenameTextSpan[];
1085            }
1086            interface RenameTextSpan extends TextSpanWithContext {
1087                readonly prefixText?: string;
1088                readonly suffixText?: string;
1089            }
1090            interface RenameResponseBody {
1091                /**
1092                 * Information about the item to be renamed.
1093                 */
1094                info: RenameInfo;
1095                /**
1096                 * An array of span groups (one per file) that refer to the item to be renamed.
1097                 */
1098                locs: readonly SpanGroup[];
1099            }
1100            /**
1101             * Rename response message.
1102             */
1103            interface RenameResponse extends Response {
1104                body?: RenameResponseBody;
1105            }
1106            /**
1107             * Represents a file in external project.
1108             * External project is project whose set of files, compilation options and open\close state
1109             * is maintained by the client (i.e. if all this data come from .csproj file in Visual Studio).
1110             * External project will exist even if all files in it are closed and should be closed explicitly.
1111             * If external project includes one or more tsconfig.json/jsconfig.json files then tsserver will
1112             * create configured project for every config file but will maintain a link that these projects were created
1113             * as a result of opening external project so they should be removed once external project is closed.
1114             */
1115            interface ExternalFile {
1116                /**
1117                 * Name of file file
1118                 */
1119                fileName: string;
1120                /**
1121                 * Script kind of the file
1122                 */
1123                scriptKind?: ScriptKindName | ScriptKind;
1124                /**
1125                 * Whether file has mixed content (i.e. .cshtml file that combines html markup with C#/JavaScript)
1126                 */
1127                hasMixedContent?: boolean;
1128                /**
1129                 * Content of the file
1130                 */
1131                content?: string;
1132            }
1133            /**
1134             * Represent an external project
1135             */
1136            interface ExternalProject {
1137                /**
1138                 * Project name
1139                 */
1140                projectFileName: string;
1141                /**
1142                 * List of root files in project
1143                 */
1144                rootFiles: ExternalFile[];
1145                /**
1146                 * Compiler options for the project
1147                 */
1148                options: ExternalProjectCompilerOptions;
1149                /**
1150                 * @deprecated typingOptions. Use typeAcquisition instead
1151                 */
1152                typingOptions?: TypeAcquisition;
1153                /**
1154                 * Explicitly specified type acquisition for the project
1155                 */
1156                typeAcquisition?: TypeAcquisition;
1157            }
1158            interface CompileOnSaveMixin {
1159                /**
1160                 * If compile on save is enabled for the project
1161                 */
1162                compileOnSave?: boolean;
1163            }
1164            /**
1165             * For external projects, some of the project settings are sent together with
1166             * compiler settings.
1167             */
1168            type ExternalProjectCompilerOptions = CompilerOptions & CompileOnSaveMixin & WatchOptions;
1169            interface FileWithProjectReferenceRedirectInfo {
1170                /**
1171                 * Name of file
1172                 */
1173                fileName: string;
1174                /**
1175                 * True if the file is primarily included in a referenced project
1176                 */
1177                isSourceOfProjectReferenceRedirect: boolean;
1178            }
1179            /**
1180             * Represents a set of changes that happen in project
1181             */
1182            interface ProjectChanges {
1183                /**
1184                 * List of added files
1185                 */
1186                added: string[] | FileWithProjectReferenceRedirectInfo[];
1187                /**
1188                 * List of removed files
1189                 */
1190                removed: string[] | FileWithProjectReferenceRedirectInfo[];
1191                /**
1192                 * List of updated files
1193                 */
1194                updated: string[] | FileWithProjectReferenceRedirectInfo[];
1195                /**
1196                 * List of files that have had their project reference redirect status updated
1197                 * Only provided when the synchronizeProjectList request has includeProjectReferenceRedirectInfo set to true
1198                 */
1199                updatedRedirects?: FileWithProjectReferenceRedirectInfo[];
1200            }
1201            /**
1202             * Information found in a configure request.
1203             */
1204            interface ConfigureRequestArguments {
1205                /**
1206                 * Information about the host, for example 'Emacs 24.4' or
1207                 * 'Sublime Text version 3075'
1208                 */
1209                hostInfo?: string;
1210                /**
1211                 * If present, tab settings apply only to this file.
1212                 */
1213                file?: string;
1214                /**
1215                 * The format options to use during formatting and other code editing features.
1216                 */
1217                formatOptions?: FormatCodeSettings;
1218                preferences?: UserPreferences;
1219                /**
1220                 * The host's additional supported .js file extensions
1221                 */
1222                extraFileExtensions?: FileExtensionInfo[];
1223                watchOptions?: WatchOptions;
1224            }
1225            enum WatchFileKind {
1226                FixedPollingInterval = "FixedPollingInterval",
1227                PriorityPollingInterval = "PriorityPollingInterval",
1228                DynamicPriorityPolling = "DynamicPriorityPolling",
1229                FixedChunkSizePolling = "FixedChunkSizePolling",
1230                UseFsEvents = "UseFsEvents",
1231                UseFsEventsOnParentDirectory = "UseFsEventsOnParentDirectory"
1232            }
1233            enum WatchDirectoryKind {
1234                UseFsEvents = "UseFsEvents",
1235                FixedPollingInterval = "FixedPollingInterval",
1236                DynamicPriorityPolling = "DynamicPriorityPolling",
1237                FixedChunkSizePolling = "FixedChunkSizePolling"
1238            }
1239            enum PollingWatchKind {
1240                FixedInterval = "FixedInterval",
1241                PriorityInterval = "PriorityInterval",
1242                DynamicPriority = "DynamicPriority",
1243                FixedChunkSize = "FixedChunkSize"
1244            }
1245            interface WatchOptions {
1246                watchFile?: WatchFileKind | ts.WatchFileKind;
1247                watchDirectory?: WatchDirectoryKind | ts.WatchDirectoryKind;
1248                fallbackPolling?: PollingWatchKind | ts.PollingWatchKind;
1249                synchronousWatchDirectory?: boolean;
1250                excludeDirectories?: string[];
1251                excludeFiles?: string[];
1252                [option: string]: CompilerOptionsValue | undefined;
1253            }
1254            /**
1255             *  Configure request; value of command field is "configure".  Specifies
1256             *  host information, such as host type, tab size, and indent size.
1257             */
1258            interface ConfigureRequest extends Request {
1259                command: CommandTypes.Configure;
1260                arguments: ConfigureRequestArguments;
1261            }
1262            /**
1263             * Response to "configure" request.  This is just an acknowledgement, so
1264             * no body field is required.
1265             */
1266            interface ConfigureResponse extends Response {
1267            }
1268            interface ConfigurePluginRequestArguments {
1269                pluginName: string;
1270                configuration: any;
1271            }
1272            interface ConfigurePluginRequest extends Request {
1273                command: CommandTypes.ConfigurePlugin;
1274                arguments: ConfigurePluginRequestArguments;
1275            }
1276            interface ConfigurePluginResponse extends Response {
1277            }
1278            interface SelectionRangeRequest extends FileRequest {
1279                command: CommandTypes.SelectionRange;
1280                arguments: SelectionRangeRequestArgs;
1281            }
1282            interface SelectionRangeRequestArgs extends FileRequestArgs {
1283                locations: Location[];
1284            }
1285            interface SelectionRangeResponse extends Response {
1286                body?: SelectionRange[];
1287            }
1288            interface SelectionRange {
1289                textSpan: TextSpan;
1290                parent?: SelectionRange;
1291            }
1292            interface ToggleLineCommentRequest extends FileRequest {
1293                command: CommandTypes.ToggleLineComment;
1294                arguments: FileRangeRequestArgs;
1295            }
1296            interface ToggleMultilineCommentRequest extends FileRequest {
1297                command: CommandTypes.ToggleMultilineComment;
1298                arguments: FileRangeRequestArgs;
1299            }
1300            interface CommentSelectionRequest extends FileRequest {
1301                command: CommandTypes.CommentSelection;
1302                arguments: FileRangeRequestArgs;
1303            }
1304            interface UncommentSelectionRequest extends FileRequest {
1305                command: CommandTypes.UncommentSelection;
1306                arguments: FileRangeRequestArgs;
1307            }
1308            /**
1309             *  Information found in an "open" request.
1310             */
1311            interface OpenRequestArgs extends FileRequestArgs {
1312                /**
1313                 * Used when a version of the file content is known to be more up to date than the one on disk.
1314                 * Then the known content will be used upon opening instead of the disk copy
1315                 */
1316                fileContent?: string;
1317                /**
1318                 * Used to specify the script kind of the file explicitly. It could be one of the following:
1319                 *      "TS", "JS", "TSX", "JSX"
1320                 */
1321                scriptKindName?: ScriptKindName;
1322                /**
1323                 * Used to limit the searching for project config file. If given the searching will stop at this
1324                 * root path; otherwise it will go all the way up to the dist root path.
1325                 */
1326                projectRootPath?: string;
1327            }
1328            type ScriptKindName = "TS" | "JS" | "TSX" | "JSX" | "ETS";
1329            /**
1330             * Open request; value of command field is "open". Notify the
1331             * server that the client has file open.  The server will not
1332             * monitor the filesystem for changes in this file and will assume
1333             * that the client is updating the server (using the change and/or
1334             * reload messages) when the file changes. Server does not currently
1335             * send a response to an open request.
1336             */
1337            interface OpenRequest extends Request {
1338                command: CommandTypes.Open;
1339                arguments: OpenRequestArgs;
1340            }
1341            /**
1342             * Request to open or update external project
1343             */
1344            interface OpenExternalProjectRequest extends Request {
1345                command: CommandTypes.OpenExternalProject;
1346                arguments: OpenExternalProjectArgs;
1347            }
1348            /**
1349             * Arguments to OpenExternalProjectRequest request
1350             */
1351            type OpenExternalProjectArgs = ExternalProject;
1352            /**
1353             * Request to open multiple external projects
1354             */
1355            interface OpenExternalProjectsRequest extends Request {
1356                command: CommandTypes.OpenExternalProjects;
1357                arguments: OpenExternalProjectsArgs;
1358            }
1359            /**
1360             * Arguments to OpenExternalProjectsRequest
1361             */
1362            interface OpenExternalProjectsArgs {
1363                /**
1364                 * List of external projects to open or update
1365                 */
1366                projects: ExternalProject[];
1367            }
1368            /**
1369             * Response to OpenExternalProjectRequest request. This is just an acknowledgement, so
1370             * no body field is required.
1371             */
1372            interface OpenExternalProjectResponse extends Response {
1373            }
1374            /**
1375             * Response to OpenExternalProjectsRequest request. This is just an acknowledgement, so
1376             * no body field is required.
1377             */
1378            interface OpenExternalProjectsResponse extends Response {
1379            }
1380            /**
1381             * Request to close external project.
1382             */
1383            interface CloseExternalProjectRequest extends Request {
1384                command: CommandTypes.CloseExternalProject;
1385                arguments: CloseExternalProjectRequestArgs;
1386            }
1387            /**
1388             * Arguments to CloseExternalProjectRequest request
1389             */
1390            interface CloseExternalProjectRequestArgs {
1391                /**
1392                 * Name of the project to close
1393                 */
1394                projectFileName: string;
1395            }
1396            /**
1397             * Response to CloseExternalProjectRequest request. This is just an acknowledgement, so
1398             * no body field is required.
1399             */
1400            interface CloseExternalProjectResponse extends Response {
1401            }
1402            /**
1403             * Request to synchronize list of open files with the client
1404             */
1405            interface UpdateOpenRequest extends Request {
1406                command: CommandTypes.UpdateOpen;
1407                arguments: UpdateOpenRequestArgs;
1408            }
1409            /**
1410             * Arguments to UpdateOpenRequest
1411             */
1412            interface UpdateOpenRequestArgs {
1413                /**
1414                 * List of newly open files
1415                 */
1416                openFiles?: OpenRequestArgs[];
1417                /**
1418                 * List of open files files that were changes
1419                 */
1420                changedFiles?: FileCodeEdits[];
1421                /**
1422                 * List of files that were closed
1423                 */
1424                closedFiles?: string[];
1425            }
1426            /**
1427             * External projects have a typeAcquisition option so they need to be added separately to compiler options for inferred projects.
1428             */
1429            type InferredProjectCompilerOptions = ExternalProjectCompilerOptions & TypeAcquisition;
1430            /**
1431             * Request to set compiler options for inferred projects.
1432             * External projects are opened / closed explicitly.
1433             * Configured projects are opened when user opens loose file that has 'tsconfig.json' or 'jsconfig.json' anywhere in one of containing folders.
1434             * This configuration file will be used to obtain a list of files and configuration settings for the project.
1435             * Inferred projects are created when user opens a loose file that is not the part of external project
1436             * or configured project and will contain only open file and transitive closure of referenced files if 'useOneInferredProject' is false,
1437             * or all open loose files and its transitive closure of referenced files if 'useOneInferredProject' is true.
1438             */
1439            interface SetCompilerOptionsForInferredProjectsRequest extends Request {
1440                command: CommandTypes.CompilerOptionsForInferredProjects;
1441                arguments: SetCompilerOptionsForInferredProjectsArgs;
1442            }
1443            /**
1444             * Argument for SetCompilerOptionsForInferredProjectsRequest request.
1445             */
1446            interface SetCompilerOptionsForInferredProjectsArgs {
1447                /**
1448                 * Compiler options to be used with inferred projects.
1449                 */
1450                options: InferredProjectCompilerOptions;
1451                /**
1452                 * Specifies the project root path used to scope compiler options.
1453                 * It is an error to provide this property if the server has not been started with
1454                 * `useInferredProjectPerProjectRoot` enabled.
1455                 */
1456                projectRootPath?: string;
1457            }
1458            /**
1459             * Response to SetCompilerOptionsForInferredProjectsResponse request. This is just an acknowledgement, so
1460             * no body field is required.
1461             */
1462            interface SetCompilerOptionsForInferredProjectsResponse extends Response {
1463            }
1464            /**
1465             *  Exit request; value of command field is "exit".  Ask the server process
1466             *  to exit.
1467             */
1468            interface ExitRequest extends Request {
1469                command: CommandTypes.Exit;
1470            }
1471            /**
1472             * Close request; value of command field is "close". Notify the
1473             * server that the client has closed a previously open file.  If
1474             * file is still referenced by open files, the server will resume
1475             * monitoring the filesystem for changes to file.  Server does not
1476             * currently send a response to a close request.
1477             */
1478            interface CloseRequest extends FileRequest {
1479                command: CommandTypes.Close;
1480            }
1481            /**
1482             * Request to obtain the list of files that should be regenerated if target file is recompiled.
1483             * NOTE: this us query-only operation and does not generate any output on disk.
1484             */
1485            interface CompileOnSaveAffectedFileListRequest extends FileRequest {
1486                command: CommandTypes.CompileOnSaveAffectedFileList;
1487            }
1488            /**
1489             * Contains a list of files that should be regenerated in a project
1490             */
1491            interface CompileOnSaveAffectedFileListSingleProject {
1492                /**
1493                 * Project name
1494                 */
1495                projectFileName: string;
1496                /**
1497                 * List of files names that should be recompiled
1498                 */
1499                fileNames: string[];
1500                /**
1501                 * true if project uses outFile or out compiler option
1502                 */
1503                projectUsesOutFile: boolean;
1504            }
1505            /**
1506             * Response for CompileOnSaveAffectedFileListRequest request;
1507             */
1508            interface CompileOnSaveAffectedFileListResponse extends Response {
1509                body: CompileOnSaveAffectedFileListSingleProject[];
1510            }
1511            /**
1512             * Request to recompile the file. All generated outputs (.js, .d.ts or .js.map files) is written on disk.
1513             */
1514            interface CompileOnSaveEmitFileRequest extends FileRequest {
1515                command: CommandTypes.CompileOnSaveEmitFile;
1516                arguments: CompileOnSaveEmitFileRequestArgs;
1517            }
1518            /**
1519             * Arguments for CompileOnSaveEmitFileRequest
1520             */
1521            interface CompileOnSaveEmitFileRequestArgs extends FileRequestArgs {
1522                /**
1523                 * if true - then file should be recompiled even if it does not have any changes.
1524                 */
1525                forced?: boolean;
1526                includeLinePosition?: boolean;
1527                /** if true - return response as object with emitSkipped and diagnostics */
1528                richResponse?: boolean;
1529            }
1530            interface CompileOnSaveEmitFileResponse extends Response {
1531                body: boolean | EmitResult;
1532            }
1533            interface EmitResult {
1534                emitSkipped: boolean;
1535                diagnostics: Diagnostic[] | DiagnosticWithLinePosition[];
1536            }
1537            /**
1538             * Quickinfo request; value of command field is
1539             * "quickinfo". Return response giving a quick type and
1540             * documentation string for the symbol found in file at location
1541             * line, col.
1542             */
1543            interface QuickInfoRequest extends FileLocationRequest {
1544                command: CommandTypes.Quickinfo;
1545                arguments: FileLocationRequestArgs;
1546            }
1547            /**
1548             * Body of QuickInfoResponse.
1549             */
1550            interface QuickInfoResponseBody {
1551                /**
1552                 * The symbol's kind (such as 'className' or 'parameterName' or plain 'text').
1553                 */
1554                kind: ScriptElementKind;
1555                /**
1556                 * Optional modifiers for the kind (such as 'public').
1557                 */
1558                kindModifiers: string;
1559                /**
1560                 * Starting file location of symbol.
1561                 */
1562                start: Location;
1563                /**
1564                 * One past last character of symbol.
1565                 */
1566                end: Location;
1567                /**
1568                 * Type and kind of symbol.
1569                 */
1570                displayString: string;
1571                /**
1572                 * Documentation associated with symbol.
1573                 * Display parts when UserPreferences.displayPartsForJSDoc is true, flattened to string otherwise.
1574                 */
1575                documentation: string | SymbolDisplayPart[];
1576                /**
1577                 * JSDoc tags associated with symbol.
1578                 */
1579                tags: JSDocTagInfo[];
1580            }
1581            /**
1582             * Quickinfo response message.
1583             */
1584            interface QuickInfoResponse extends Response {
1585                body?: QuickInfoResponseBody;
1586            }
1587            /**
1588             * Arguments for format messages.
1589             */
1590            interface FormatRequestArgs extends FileLocationRequestArgs {
1591                /**
1592                 * Last line of range for which to format text in file.
1593                 */
1594                endLine: number;
1595                /**
1596                 * Character offset on last line of range for which to format text in file.
1597                 */
1598                endOffset: number;
1599                /**
1600                 * Format options to be used.
1601                 */
1602                options?: FormatCodeSettings;
1603            }
1604            /**
1605             * Format request; value of command field is "format".  Return
1606             * response giving zero or more edit instructions.  The edit
1607             * instructions will be sorted in file order.  Applying the edit
1608             * instructions in reverse to file will result in correctly
1609             * reformatted text.
1610             */
1611            interface FormatRequest extends FileLocationRequest {
1612                command: CommandTypes.Format;
1613                arguments: FormatRequestArgs;
1614            }
1615            /**
1616             * Object found in response messages defining an editing
1617             * instruction for a span of text in source code.  The effect of
1618             * this instruction is to replace the text starting at start and
1619             * ending one character before end with newText. For an insertion,
1620             * the text span is empty.  For a deletion, newText is empty.
1621             */
1622            interface CodeEdit {
1623                /**
1624                 * First character of the text span to edit.
1625                 */
1626                start: Location;
1627                /**
1628                 * One character past last character of the text span to edit.
1629                 */
1630                end: Location;
1631                /**
1632                 * Replace the span defined above with this string (may be
1633                 * the empty string).
1634                 */
1635                newText: string;
1636            }
1637            interface FileCodeEdits {
1638                fileName: string;
1639                textChanges: CodeEdit[];
1640            }
1641            interface CodeFixResponse extends Response {
1642                /** The code actions that are available */
1643                body?: CodeFixAction[];
1644            }
1645            interface CodeAction {
1646                /** Description of the code action to display in the UI of the editor */
1647                description: string;
1648                /** Text changes to apply to each file as part of the code action */
1649                changes: FileCodeEdits[];
1650                /** A command is an opaque object that should be passed to `ApplyCodeActionCommandRequestArgs` without modification.  */
1651                commands?: {}[];
1652            }
1653            interface CombinedCodeActions {
1654                changes: readonly FileCodeEdits[];
1655                commands?: readonly {}[];
1656            }
1657            interface CodeFixAction extends CodeAction {
1658                /** Short name to identify the fix, for use by telemetry. */
1659                fixName: string;
1660                /**
1661                 * If present, one may call 'getCombinedCodeFix' with this fixId.
1662                 * This may be omitted to indicate that the code fix can't be applied in a group.
1663                 */
1664                fixId?: {};
1665                /** Should be present if and only if 'fixId' is. */
1666                fixAllDescription?: string;
1667            }
1668            /**
1669             * Format and format on key response message.
1670             */
1671            interface FormatResponse extends Response {
1672                body?: CodeEdit[];
1673            }
1674            /**
1675             * Arguments for format on key messages.
1676             */
1677            interface FormatOnKeyRequestArgs extends FileLocationRequestArgs {
1678                /**
1679                 * Key pressed (';', '\n', or '}').
1680                 */
1681                key: string;
1682                options?: FormatCodeSettings;
1683            }
1684            /**
1685             * Format on key request; value of command field is
1686             * "formatonkey". Given file location and key typed (as string),
1687             * return response giving zero or more edit instructions.  The
1688             * edit instructions will be sorted in file order.  Applying the
1689             * edit instructions in reverse to file will result in correctly
1690             * reformatted text.
1691             */
1692            interface FormatOnKeyRequest extends FileLocationRequest {
1693                command: CommandTypes.Formatonkey;
1694                arguments: FormatOnKeyRequestArgs;
1695            }
1696            type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<" | "#" | " ";
1697            enum CompletionTriggerKind {
1698                /** Completion was triggered by typing an identifier, manual invocation (e.g Ctrl+Space) or via API. */
1699                Invoked = 1,
1700                /** Completion was triggered by a trigger character. */
1701                TriggerCharacter = 2,
1702                /** Completion was re-triggered as the current completion list is incomplete. */
1703                TriggerForIncompleteCompletions = 3
1704            }
1705            /**
1706             * Arguments for completions messages.
1707             */
1708            interface CompletionsRequestArgs extends FileLocationRequestArgs {
1709                /**
1710                 * Optional prefix to apply to possible completions.
1711                 */
1712                prefix?: string;
1713                /**
1714                 * Character that was responsible for triggering completion.
1715                 * Should be `undefined` if a user manually requested completion.
1716                 */
1717                triggerCharacter?: CompletionsTriggerCharacter;
1718                triggerKind?: CompletionTriggerKind;
1719                /**
1720                 * @deprecated Use UserPreferences.includeCompletionsForModuleExports
1721                 */
1722                includeExternalModuleExports?: boolean;
1723                /**
1724                 * @deprecated Use UserPreferences.includeCompletionsWithInsertText
1725                 */
1726                includeInsertTextCompletions?: boolean;
1727            }
1728            interface EtsOptions {
1729                render: {
1730                    method: string[];
1731                    decorator: string[];
1732                };
1733                components: string[];
1734                libs: string[];
1735                extend: {
1736                    decorator: string[];
1737                    components: {
1738                        name: string;
1739                        type: string;
1740                        instance: string;
1741                    }[];
1742                };
1743                styles: {
1744                    decorator: string;
1745                    component: {
1746                        name: string;
1747                        type: string;
1748                        instance: string;
1749                    };
1750                    property: string;
1751                };
1752                concurrent: {
1753                    decorator: string;
1754                };
1755                customComponent?: string;
1756                propertyDecorators: {
1757                    name: string;
1758                    needInitialization: boolean;
1759                }[];
1760                emitDecorators: {
1761                    name: string;
1762                    emitParameters: boolean;
1763                }[];
1764                syntaxComponents: {
1765                    paramsUICallback: string[];
1766                    attrUICallback: {
1767                        name: string;
1768                        attributes: string[];
1769                    }[];
1770                };
1771            }
1772            /**
1773             * Completions request; value of command field is "completions".
1774             * Given a file location (file, line, col) and a prefix (which may
1775             * be the empty string), return the possible completions that
1776             * begin with prefix.
1777             */
1778            interface CompletionsRequest extends FileLocationRequest {
1779                command: CommandTypes.Completions | CommandTypes.CompletionInfo;
1780                arguments: CompletionsRequestArgs;
1781            }
1782            /**
1783             * Arguments for completion details request.
1784             */
1785            interface CompletionDetailsRequestArgs extends FileLocationRequestArgs {
1786                /**
1787                 * Names of one or more entries for which to obtain details.
1788                 */
1789                entryNames: (string | CompletionEntryIdentifier)[];
1790            }
1791            interface CompletionEntryIdentifier {
1792                name: string;
1793                source?: string;
1794                data?: unknown;
1795            }
1796            /**
1797             * Completion entry details request; value of command field is
1798             * "completionEntryDetails".  Given a file location (file, line,
1799             * col) and an array of completion entry names return more
1800             * detailed information for each completion entry.
1801             */
1802            interface CompletionDetailsRequest extends FileLocationRequest {
1803                command: CommandTypes.CompletionDetails;
1804                arguments: CompletionDetailsRequestArgs;
1805            }
1806            /**
1807             * Part of a symbol description.
1808             */
1809            interface SymbolDisplayPart {
1810                /**
1811                 * Text of an item describing the symbol.
1812                 */
1813                text: string;
1814                /**
1815                 * The symbol's kind (such as 'className' or 'parameterName' or plain 'text').
1816                 */
1817                kind: string;
1818            }
1819            /** A part of a symbol description that links from a jsdoc @link tag to a declaration */
1820            interface JSDocLinkDisplayPart extends SymbolDisplayPart {
1821                /** The location of the declaration that the @link tag links to. */
1822                target: FileSpan;
1823            }
1824            /**
1825             * An item found in a completion response.
1826             */
1827            interface CompletionEntry {
1828                /**
1829                 * The symbol's name.
1830                 */
1831                name: string;
1832                /**
1833                 * The symbol's kind (such as 'className' or 'parameterName').
1834                 */
1835                kind: ScriptElementKind;
1836                /**
1837                 * Optional modifiers for the kind (such as 'public').
1838                 */
1839                kindModifiers?: string;
1840                /**
1841                 * A string that is used for comparing completion items so that they can be ordered.  This
1842                 * is often the same as the name but may be different in certain circumstances.
1843                 */
1844                sortText: string;
1845                /**
1846                 * Text to insert instead of `name`.
1847                 * This is used to support bracketed completions; If `name` might be "a-b" but `insertText` would be `["a-b"]`,
1848                 * coupled with `replacementSpan` to replace a dotted access with a bracket access.
1849                 */
1850                insertText?: string;
1851                /**
1852                 * `insertText` should be interpreted as a snippet if true.
1853                 */
1854                isSnippet?: true;
1855                /**
1856                 * An optional span that indicates the text to be replaced by this completion item.
1857                 * If present, this span should be used instead of the default one.
1858                 * It will be set if the required span differs from the one generated by the default replacement behavior.
1859                 */
1860                replacementSpan?: TextSpan;
1861                /**
1862                 * Indicates whether commiting this completion entry will require additional code actions to be
1863                 * made to avoid errors. The CompletionEntryDetails will have these actions.
1864                 */
1865                hasAction?: true;
1866                /**
1867                 * Identifier (not necessarily human-readable) identifying where this completion came from.
1868                 */
1869                source?: string;
1870                /**
1871                 * Human-readable description of the `source`.
1872                 */
1873                sourceDisplay?: SymbolDisplayPart[];
1874                /**
1875                 * Additional details for the label.
1876                 */
1877                labelDetails?: CompletionEntryLabelDetails;
1878                /**
1879                 * If true, this completion should be highlighted as recommended. There will only be one of these.
1880                 * 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.
1881                 * Then either that enum/class or a namespace containing it will be the recommended symbol.
1882                 */
1883                isRecommended?: true;
1884                /**
1885                 * If true, this completion was generated from traversing the name table of an unchecked JS file,
1886                 * and therefore may not be accurate.
1887                 */
1888                isFromUncheckedFile?: true;
1889                /**
1890                 * If true, this completion was for an auto-import of a module not yet in the program, but listed
1891                 * in the project package.json. Used for telemetry reporting.
1892                 */
1893                isPackageJsonImport?: true;
1894                /**
1895                 * If true, this completion was an auto-import-style completion of an import statement (i.e., the
1896                 * module specifier was inserted along with the imported identifier). Used for telemetry reporting.
1897                 */
1898                isImportStatementCompletion?: true;
1899                /**
1900                 * A property to be sent back to TS Server in the CompletionDetailsRequest, along with `name`,
1901                 * that allows TS Server to look up the symbol represented by the completion item, disambiguating
1902                 * items with the same name.
1903                 */
1904                data?: unknown;
1905                /**
1906                 * Js Doc info with symbol.
1907                 */
1908                jsDoc?: JsDocTagInfo[];
1909                /**
1910                 * Displayparts info with symbol.
1911                 */
1912                displayParts?: SymbolDisplayPart[];
1913            }
1914            interface CompletionEntryLabelDetails {
1915                /**
1916                 * An optional string which is rendered less prominently directly after
1917                 * {@link CompletionEntry.name name}, without any spacing. Should be
1918                 * used for function signatures or type annotations.
1919                 */
1920                detail?: string;
1921                /**
1922                 * An optional string which is rendered less prominently after
1923                 * {@link CompletionEntryLabelDetails.detail}. Should be used for fully qualified
1924                 * names or file path.
1925                 */
1926                description?: string;
1927            }
1928            /**
1929             * Additional completion entry details, available on demand
1930             */
1931            interface CompletionEntryDetails {
1932                /**
1933                 * The symbol's name.
1934                 */
1935                name: string;
1936                /**
1937                 * The symbol's kind (such as 'className' or 'parameterName').
1938                 */
1939                kind: ScriptElementKind;
1940                /**
1941                 * Optional modifiers for the kind (such as 'public').
1942                 */
1943                kindModifiers: string;
1944                /**
1945                 * Display parts of the symbol (similar to quick info).
1946                 */
1947                displayParts: SymbolDisplayPart[];
1948                /**
1949                 * Documentation strings for the symbol.
1950                 */
1951                documentation?: SymbolDisplayPart[];
1952                /**
1953                 * JSDoc tags for the symbol.
1954                 */
1955                tags?: JSDocTagInfo[];
1956                /**
1957                 * The associated code actions for this entry
1958                 */
1959                codeActions?: CodeAction[];
1960                /**
1961                 * @deprecated Use `sourceDisplay` instead.
1962                 */
1963                source?: SymbolDisplayPart[];
1964                /**
1965                 * Human-readable description of the `source` from the CompletionEntry.
1966                 */
1967                sourceDisplay?: SymbolDisplayPart[];
1968            }
1969            /** @deprecated Prefer CompletionInfoResponse, which supports several top-level fields in addition to the array of entries. */
1970            interface CompletionsResponse extends Response {
1971                body?: CompletionEntry[];
1972            }
1973            interface CompletionInfoResponse extends Response {
1974                body?: CompletionInfo;
1975            }
1976            interface CompletionInfo {
1977                readonly flags?: number;
1978                readonly isGlobalCompletion: boolean;
1979                readonly isMemberCompletion: boolean;
1980                readonly isNewIdentifierLocation: boolean;
1981                /**
1982                 * In the absence of `CompletionEntry["replacementSpan"]`, the editor may choose whether to use
1983                 * this span or its default one. If `CompletionEntry["replacementSpan"]` is defined, that span
1984                 * must be used to commit that completion entry.
1985                 */
1986                readonly optionalReplacementSpan?: TextSpan;
1987                readonly isIncomplete?: boolean;
1988                readonly entries: readonly CompletionEntry[];
1989            }
1990            interface CompletionDetailsResponse extends Response {
1991                body?: CompletionEntryDetails[];
1992            }
1993            /**
1994             * Signature help information for a single parameter
1995             */
1996            interface SignatureHelpParameter {
1997                /**
1998                 * The parameter's name
1999                 */
2000                name: string;
2001                /**
2002                 * Documentation of the parameter.
2003                 */
2004                documentation: SymbolDisplayPart[];
2005                /**
2006                 * Display parts of the parameter.
2007                 */
2008                displayParts: SymbolDisplayPart[];
2009                /**
2010                 * Whether the parameter is optional or not.
2011                 */
2012                isOptional: boolean;
2013            }
2014            /**
2015             * Represents a single signature to show in signature help.
2016             */
2017            interface SignatureHelpItem {
2018                /**
2019                 * Whether the signature accepts a variable number of arguments.
2020                 */
2021                isVariadic: boolean;
2022                /**
2023                 * The prefix display parts.
2024                 */
2025                prefixDisplayParts: SymbolDisplayPart[];
2026                /**
2027                 * The suffix display parts.
2028                 */
2029                suffixDisplayParts: SymbolDisplayPart[];
2030                /**
2031                 * The separator display parts.
2032                 */
2033                separatorDisplayParts: SymbolDisplayPart[];
2034                /**
2035                 * The signature helps items for the parameters.
2036                 */
2037                parameters: SignatureHelpParameter[];
2038                /**
2039                 * The signature's documentation
2040                 */
2041                documentation: SymbolDisplayPart[];
2042                /**
2043                 * The signature's JSDoc tags
2044                 */
2045                tags: JSDocTagInfo[];
2046            }
2047            /**
2048             * Signature help items found in the response of a signature help request.
2049             */
2050            interface SignatureHelpItems {
2051                /**
2052                 * The signature help items.
2053                 */
2054                items: SignatureHelpItem[];
2055                /**
2056                 * The span for which signature help should appear on a signature
2057                 */
2058                applicableSpan: TextSpan;
2059                /**
2060                 * The item selected in the set of available help items.
2061                 */
2062                selectedItemIndex: number;
2063                /**
2064                 * The argument selected in the set of parameters.
2065                 */
2066                argumentIndex: number;
2067                /**
2068                 * The argument count
2069                 */
2070                argumentCount: number;
2071            }
2072            type SignatureHelpTriggerCharacter = "," | "(" | "<";
2073            type SignatureHelpRetriggerCharacter = SignatureHelpTriggerCharacter | ")";
2074            /**
2075             * Arguments of a signature help request.
2076             */
2077            interface SignatureHelpRequestArgs extends FileLocationRequestArgs {
2078                /**
2079                 * Reason why signature help was invoked.
2080                 * See each individual possible
2081                 */
2082                triggerReason?: SignatureHelpTriggerReason;
2083            }
2084            type SignatureHelpTriggerReason = SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason | SignatureHelpRetriggeredReason;
2085            /**
2086             * Signals that the user manually requested signature help.
2087             * The language service will unconditionally attempt to provide a result.
2088             */
2089            interface SignatureHelpInvokedReason {
2090                kind: "invoked";
2091                triggerCharacter?: undefined;
2092            }
2093            /**
2094             * Signals that the signature help request came from a user typing a character.
2095             * Depending on the character and the syntactic context, the request may or may not be served a result.
2096             */
2097            interface SignatureHelpCharacterTypedReason {
2098                kind: "characterTyped";
2099                /**
2100                 * Character that was responsible for triggering signature help.
2101                 */
2102                triggerCharacter: SignatureHelpTriggerCharacter;
2103            }
2104            /**
2105             * Signals that this signature help request came from typing a character or moving the cursor.
2106             * This should only occur if a signature help session was already active and the editor needs to see if it should adjust.
2107             * The language service will unconditionally attempt to provide a result.
2108             * `triggerCharacter` can be `undefined` for a retrigger caused by a cursor move.
2109             */
2110            interface SignatureHelpRetriggeredReason {
2111                kind: "retrigger";
2112                /**
2113                 * Character that was responsible for triggering signature help.
2114                 */
2115                triggerCharacter?: SignatureHelpRetriggerCharacter;
2116            }
2117            /**
2118             * Signature help request; value of command field is "signatureHelp".
2119             * Given a file location (file, line, col), return the signature
2120             * help.
2121             */
2122            interface SignatureHelpRequest extends FileLocationRequest {
2123                command: CommandTypes.SignatureHelp;
2124                arguments: SignatureHelpRequestArgs;
2125            }
2126            /**
2127             * Response object for a SignatureHelpRequest.
2128             */
2129            interface SignatureHelpResponse extends Response {
2130                body?: SignatureHelpItems;
2131            }
2132            type InlayHintKind = "Type" | "Parameter" | "Enum";
2133            interface InlayHintsRequestArgs extends FileRequestArgs {
2134                /**
2135                 * Start position of the span.
2136                 */
2137                start: number;
2138                /**
2139                 * Length of the span.
2140                 */
2141                length: number;
2142            }
2143            interface InlayHintsRequest extends Request {
2144                command: CommandTypes.ProvideInlayHints;
2145                arguments: InlayHintsRequestArgs;
2146            }
2147            interface InlayHintItem {
2148                text: string;
2149                position: Location;
2150                kind: InlayHintKind;
2151                whitespaceBefore?: boolean;
2152                whitespaceAfter?: boolean;
2153            }
2154            interface InlayHintsResponse extends Response {
2155                body?: InlayHintItem[];
2156            }
2157            /**
2158             * Synchronous request for semantic diagnostics of one file.
2159             */
2160            interface SemanticDiagnosticsSyncRequest extends FileRequest {
2161                command: CommandTypes.SemanticDiagnosticsSync;
2162                arguments: SemanticDiagnosticsSyncRequestArgs;
2163            }
2164            interface SemanticDiagnosticsSyncRequestArgs extends FileRequestArgs {
2165                includeLinePosition?: boolean;
2166            }
2167            /**
2168             * Response object for synchronous sematic diagnostics request.
2169             */
2170            interface SemanticDiagnosticsSyncResponse extends Response {
2171                body?: Diagnostic[] | DiagnosticWithLinePosition[];
2172            }
2173            interface SuggestionDiagnosticsSyncRequest extends FileRequest {
2174                command: CommandTypes.SuggestionDiagnosticsSync;
2175                arguments: SuggestionDiagnosticsSyncRequestArgs;
2176            }
2177            type SuggestionDiagnosticsSyncRequestArgs = SemanticDiagnosticsSyncRequestArgs;
2178            type SuggestionDiagnosticsSyncResponse = SemanticDiagnosticsSyncResponse;
2179            /**
2180             * Synchronous request for syntactic diagnostics of one file.
2181             */
2182            interface SyntacticDiagnosticsSyncRequest extends FileRequest {
2183                command: CommandTypes.SyntacticDiagnosticsSync;
2184                arguments: SyntacticDiagnosticsSyncRequestArgs;
2185            }
2186            interface SyntacticDiagnosticsSyncRequestArgs extends FileRequestArgs {
2187                includeLinePosition?: boolean;
2188            }
2189            /**
2190             * Response object for synchronous syntactic diagnostics request.
2191             */
2192            interface SyntacticDiagnosticsSyncResponse extends Response {
2193                body?: Diagnostic[] | DiagnosticWithLinePosition[];
2194            }
2195            /**
2196             * Arguments for GeterrForProject request.
2197             */
2198            interface GeterrForProjectRequestArgs {
2199                /**
2200                 * the file requesting project error list
2201                 */
2202                file: string;
2203                /**
2204                 * Delay in milliseconds to wait before starting to compute
2205                 * errors for the files in the file list
2206                 */
2207                delay: number;
2208            }
2209            /**
2210             * GeterrForProjectRequest request; value of command field is
2211             * "geterrForProject". It works similarly with 'Geterr', only
2212             * it request for every file in this project.
2213             */
2214            interface GeterrForProjectRequest extends Request {
2215                command: CommandTypes.GeterrForProject;
2216                arguments: GeterrForProjectRequestArgs;
2217            }
2218            /**
2219             * Arguments for geterr messages.
2220             */
2221            interface GeterrRequestArgs {
2222                /**
2223                 * List of file names for which to compute compiler errors.
2224                 * The files will be checked in list order.
2225                 */
2226                files: string[];
2227                /**
2228                 * Delay in milliseconds to wait before starting to compute
2229                 * errors for the files in the file list
2230                 */
2231                delay: number;
2232            }
2233            /**
2234             * Geterr request; value of command field is "geterr". Wait for
2235             * delay milliseconds and then, if during the wait no change or
2236             * reload messages have arrived for the first file in the files
2237             * list, get the syntactic errors for the file, field requests,
2238             * and then get the semantic errors for the file.  Repeat with a
2239             * smaller delay for each subsequent file on the files list.  Best
2240             * practice for an editor is to send a file list containing each
2241             * file that is currently visible, in most-recently-used order.
2242             */
2243            interface GeterrRequest extends Request {
2244                command: CommandTypes.Geterr;
2245                arguments: GeterrRequestArgs;
2246            }
2247            type RequestCompletedEventName = "requestCompleted";
2248            /**
2249             * Event that is sent when server have finished processing request with specified id.
2250             */
2251            interface RequestCompletedEvent extends Event {
2252                event: RequestCompletedEventName;
2253                body: RequestCompletedEventBody;
2254            }
2255            interface RequestCompletedEventBody {
2256                request_seq: number;
2257            }
2258            /**
2259             * Item of diagnostic information found in a DiagnosticEvent message.
2260             */
2261            interface Diagnostic {
2262                /**
2263                 * Starting file location at which text applies.
2264                 */
2265                start: Location;
2266                /**
2267                 * The last file location at which the text applies.
2268                 */
2269                end: Location;
2270                /**
2271                 * Text of diagnostic message.
2272                 */
2273                text: string;
2274                /**
2275                 * The category of the diagnostic message, e.g. "error", "warning", or "suggestion".
2276                 */
2277                category: string;
2278                reportsUnnecessary?: {};
2279                reportsDeprecated?: {};
2280                /**
2281                 * Any related spans the diagnostic may have, such as other locations relevant to an error, such as declarartion sites
2282                 */
2283                relatedInformation?: DiagnosticRelatedInformation[];
2284                /**
2285                 * The error code of the diagnostic message.
2286                 */
2287                code?: number;
2288                /**
2289                 * The name of the plugin reporting the message.
2290                 */
2291                source?: string;
2292            }
2293            interface DiagnosticWithFileName extends Diagnostic {
2294                /**
2295                 * Name of the file the diagnostic is in
2296                 */
2297                fileName: string;
2298            }
2299            /**
2300             * Represents additional spans returned with a diagnostic which are relevant to it
2301             */
2302            interface DiagnosticRelatedInformation {
2303                /**
2304                 * The category of the related information message, e.g. "error", "warning", or "suggestion".
2305                 */
2306                category: string;
2307                /**
2308                 * The code used ot identify the related information
2309                 */
2310                code: number;
2311                /**
2312                 * Text of related or additional information.
2313                 */
2314                message: string;
2315                /**
2316                 * Associated location
2317                 */
2318                span?: FileSpan;
2319            }
2320            interface DiagnosticEventBody {
2321                /**
2322                 * The file for which diagnostic information is reported.
2323                 */
2324                file: string;
2325                /**
2326                 * An array of diagnostic information items.
2327                 */
2328                diagnostics: Diagnostic[];
2329            }
2330            type DiagnosticEventKind = "semanticDiag" | "syntaxDiag" | "suggestionDiag";
2331            /**
2332             * Event message for DiagnosticEventKind event types.
2333             * These events provide syntactic and semantic errors for a file.
2334             */
2335            interface DiagnosticEvent extends Event {
2336                body?: DiagnosticEventBody;
2337                event: DiagnosticEventKind;
2338            }
2339            interface ConfigFileDiagnosticEventBody {
2340                /**
2341                 * The file which trigged the searching and error-checking of the config file
2342                 */
2343                triggerFile: string;
2344                /**
2345                 * The name of the found config file.
2346                 */
2347                configFile: string;
2348                /**
2349                 * An arry of diagnostic information items for the found config file.
2350                 */
2351                diagnostics: DiagnosticWithFileName[];
2352            }
2353            /**
2354             * Event message for "configFileDiag" event type.
2355             * This event provides errors for a found config file.
2356             */
2357            interface ConfigFileDiagnosticEvent extends Event {
2358                body?: ConfigFileDiagnosticEventBody;
2359                event: "configFileDiag";
2360            }
2361            type ProjectLanguageServiceStateEventName = "projectLanguageServiceState";
2362            interface ProjectLanguageServiceStateEvent extends Event {
2363                event: ProjectLanguageServiceStateEventName;
2364                body?: ProjectLanguageServiceStateEventBody;
2365            }
2366            interface ProjectLanguageServiceStateEventBody {
2367                /**
2368                 * Project name that has changes in the state of language service.
2369                 * For configured projects this will be the config file path.
2370                 * For external projects this will be the name of the projects specified when project was open.
2371                 * For inferred projects this event is not raised.
2372                 */
2373                projectName: string;
2374                /**
2375                 * True if language service state switched from disabled to enabled
2376                 * and false otherwise.
2377                 */
2378                languageServiceEnabled: boolean;
2379            }
2380            type ProjectsUpdatedInBackgroundEventName = "projectsUpdatedInBackground";
2381            interface ProjectsUpdatedInBackgroundEvent extends Event {
2382                event: ProjectsUpdatedInBackgroundEventName;
2383                body: ProjectsUpdatedInBackgroundEventBody;
2384            }
2385            interface ProjectsUpdatedInBackgroundEventBody {
2386                /**
2387                 * Current set of open files
2388                 */
2389                openFiles: string[];
2390            }
2391            type ProjectLoadingStartEventName = "projectLoadingStart";
2392            interface ProjectLoadingStartEvent extends Event {
2393                event: ProjectLoadingStartEventName;
2394                body: ProjectLoadingStartEventBody;
2395            }
2396            interface ProjectLoadingStartEventBody {
2397                /** name of the project */
2398                projectName: string;
2399                /** reason for loading */
2400                reason: string;
2401            }
2402            type ProjectLoadingFinishEventName = "projectLoadingFinish";
2403            interface ProjectLoadingFinishEvent extends Event {
2404                event: ProjectLoadingFinishEventName;
2405                body: ProjectLoadingFinishEventBody;
2406            }
2407            interface ProjectLoadingFinishEventBody {
2408                /** name of the project */
2409                projectName: string;
2410            }
2411            type SurveyReadyEventName = "surveyReady";
2412            interface SurveyReadyEvent extends Event {
2413                event: SurveyReadyEventName;
2414                body: SurveyReadyEventBody;
2415            }
2416            interface SurveyReadyEventBody {
2417                /** Name of the survey. This is an internal machine- and programmer-friendly name */
2418                surveyId: string;
2419            }
2420            type LargeFileReferencedEventName = "largeFileReferenced";
2421            interface LargeFileReferencedEvent extends Event {
2422                event: LargeFileReferencedEventName;
2423                body: LargeFileReferencedEventBody;
2424            }
2425            interface LargeFileReferencedEventBody {
2426                /**
2427                 * name of the large file being loaded
2428                 */
2429                file: string;
2430                /**
2431                 * size of the file
2432                 */
2433                fileSize: number;
2434                /**
2435                 * max file size allowed on the server
2436                 */
2437                maxFileSize: number;
2438            }
2439            /**
2440             * Arguments for reload request.
2441             */
2442            interface ReloadRequestArgs extends FileRequestArgs {
2443                /**
2444                 * Name of temporary file from which to reload file
2445                 * contents. May be same as file.
2446                 */
2447                tmpfile: string;
2448            }
2449            /**
2450             * Reload request message; value of command field is "reload".
2451             * Reload contents of file with name given by the 'file' argument
2452             * from temporary file with name given by the 'tmpfile' argument.
2453             * The two names can be identical.
2454             */
2455            interface ReloadRequest extends FileRequest {
2456                command: CommandTypes.Reload;
2457                arguments: ReloadRequestArgs;
2458            }
2459            /**
2460             * Response to "reload" request. This is just an acknowledgement, so
2461             * no body field is required.
2462             */
2463            interface ReloadResponse extends Response {
2464            }
2465            /**
2466             * Arguments for saveto request.
2467             */
2468            interface SavetoRequestArgs extends FileRequestArgs {
2469                /**
2470                 * Name of temporary file into which to save server's view of
2471                 * file contents.
2472                 */
2473                tmpfile: string;
2474            }
2475            /**
2476             * Saveto request message; value of command field is "saveto".
2477             * For debugging purposes, save to a temporaryfile (named by
2478             * argument 'tmpfile') the contents of file named by argument
2479             * 'file'.  The server does not currently send a response to a
2480             * "saveto" request.
2481             */
2482            interface SavetoRequest extends FileRequest {
2483                command: CommandTypes.Saveto;
2484                arguments: SavetoRequestArgs;
2485            }
2486            /**
2487             * Arguments for navto request message.
2488             */
2489            interface NavtoRequestArgs {
2490                /**
2491                 * Search term to navigate to from current location; term can
2492                 * be '.*' or an identifier prefix.
2493                 */
2494                searchValue: string;
2495                /**
2496                 *  Optional limit on the number of items to return.
2497                 */
2498                maxResultCount?: number;
2499                /**
2500                 * The file for the request (absolute pathname required).
2501                 */
2502                file?: string;
2503                /**
2504                 * Optional flag to indicate we want results for just the current file
2505                 * or the entire project.
2506                 */
2507                currentFileOnly?: boolean;
2508                projectFileName?: string;
2509            }
2510            /**
2511             * Navto request message; value of command field is "navto".
2512             * Return list of objects giving file locations and symbols that
2513             * match the search term given in argument 'searchTerm'.  The
2514             * context for the search is given by the named file.
2515             */
2516            interface NavtoRequest extends Request {
2517                command: CommandTypes.Navto;
2518                arguments: NavtoRequestArgs;
2519            }
2520            /**
2521             * An item found in a navto response.
2522             */
2523            interface NavtoItem extends FileSpan {
2524                /**
2525                 * The symbol's name.
2526                 */
2527                name: string;
2528                /**
2529                 * The symbol's kind (such as 'className' or 'parameterName').
2530                 */
2531                kind: ScriptElementKind;
2532                /**
2533                 * exact, substring, or prefix.
2534                 */
2535                matchKind: string;
2536                /**
2537                 * If this was a case sensitive or insensitive match.
2538                 */
2539                isCaseSensitive: boolean;
2540                /**
2541                 * Optional modifiers for the kind (such as 'public').
2542                 */
2543                kindModifiers?: string;
2544                /**
2545                 * Name of symbol's container symbol (if any); for example,
2546                 * the class name if symbol is a class member.
2547                 */
2548                containerName?: string;
2549                /**
2550                 * Kind of symbol's container symbol (if any).
2551                 */
2552                containerKind?: ScriptElementKind;
2553            }
2554            /**
2555             * Navto response message. Body is an array of navto items.  Each
2556             * item gives a symbol that matched the search term.
2557             */
2558            interface NavtoResponse extends Response {
2559                body?: NavtoItem[];
2560            }
2561            /**
2562             * Arguments for change request message.
2563             */
2564            interface ChangeRequestArgs extends FormatRequestArgs {
2565                /**
2566                 * Optional string to insert at location (file, line, offset).
2567                 */
2568                insertString?: string;
2569            }
2570            /**
2571             * Change request message; value of command field is "change".
2572             * Update the server's view of the file named by argument 'file'.
2573             * Server does not currently send a response to a change request.
2574             */
2575            interface ChangeRequest extends FileLocationRequest {
2576                command: CommandTypes.Change;
2577                arguments: ChangeRequestArgs;
2578            }
2579            /**
2580             * Response to "brace" request.
2581             */
2582            interface BraceResponse extends Response {
2583                body?: TextSpan[];
2584            }
2585            /**
2586             * Brace matching request; value of command field is "brace".
2587             * Return response giving the file locations of matching braces
2588             * found in file at location line, offset.
2589             */
2590            interface BraceRequest extends FileLocationRequest {
2591                command: CommandTypes.Brace;
2592            }
2593            /**
2594             * NavBar items request; value of command field is "navbar".
2595             * Return response giving the list of navigation bar entries
2596             * extracted from the requested file.
2597             */
2598            interface NavBarRequest extends FileRequest {
2599                command: CommandTypes.NavBar;
2600            }
2601            /**
2602             * NavTree request; value of command field is "navtree".
2603             * Return response giving the navigation tree of the requested file.
2604             */
2605            interface NavTreeRequest extends FileRequest {
2606                command: CommandTypes.NavTree;
2607            }
2608            interface NavigationBarItem {
2609                /**
2610                 * The item's display text.
2611                 */
2612                text: string;
2613                /**
2614                 * The symbol's kind (such as 'className' or 'parameterName').
2615                 */
2616                kind: ScriptElementKind;
2617                /**
2618                 * Optional modifiers for the kind (such as 'public').
2619                 */
2620                kindModifiers?: string;
2621                /**
2622                 * The definition locations of the item.
2623                 */
2624                spans: TextSpan[];
2625                /**
2626                 * Optional children.
2627                 */
2628                childItems?: NavigationBarItem[];
2629                /**
2630                 * Number of levels deep this item should appear.
2631                 */
2632                indent: number;
2633            }
2634            /** protocol.NavigationTree is identical to ts.NavigationTree, except using protocol.TextSpan instead of ts.TextSpan */
2635            interface NavigationTree {
2636                text: string;
2637                kind: ScriptElementKind;
2638                kindModifiers: string;
2639                spans: TextSpan[];
2640                nameSpan: TextSpan | undefined;
2641                childItems?: NavigationTree[];
2642            }
2643            type TelemetryEventName = "telemetry";
2644            interface TelemetryEvent extends Event {
2645                event: TelemetryEventName;
2646                body: TelemetryEventBody;
2647            }
2648            interface TelemetryEventBody {
2649                telemetryEventName: string;
2650                payload: any;
2651            }
2652            type TypesInstallerInitializationFailedEventName = "typesInstallerInitializationFailed";
2653            interface TypesInstallerInitializationFailedEvent extends Event {
2654                event: TypesInstallerInitializationFailedEventName;
2655                body: TypesInstallerInitializationFailedEventBody;
2656            }
2657            interface TypesInstallerInitializationFailedEventBody {
2658                message: string;
2659            }
2660            type TypingsInstalledTelemetryEventName = "typingsInstalled";
2661            interface TypingsInstalledTelemetryEventBody extends TelemetryEventBody {
2662                telemetryEventName: TypingsInstalledTelemetryEventName;
2663                payload: TypingsInstalledTelemetryEventPayload;
2664            }
2665            interface TypingsInstalledTelemetryEventPayload {
2666                /**
2667                 * Comma separated list of installed typing packages
2668                 */
2669                installedPackages: string;
2670                /**
2671                 * true if install request succeeded, otherwise - false
2672                 */
2673                installSuccess: boolean;
2674                /**
2675                 * version of typings installer
2676                 */
2677                typingsInstallerVersion: string;
2678            }
2679            type BeginInstallTypesEventName = "beginInstallTypes";
2680            type EndInstallTypesEventName = "endInstallTypes";
2681            interface BeginInstallTypesEvent extends Event {
2682                event: BeginInstallTypesEventName;
2683                body: BeginInstallTypesEventBody;
2684            }
2685            interface EndInstallTypesEvent extends Event {
2686                event: EndInstallTypesEventName;
2687                body: EndInstallTypesEventBody;
2688            }
2689            interface InstallTypesEventBody {
2690                /**
2691                 * correlation id to match begin and end events
2692                 */
2693                eventId: number;
2694                /**
2695                 * list of packages to install
2696                 */
2697                packages: readonly string[];
2698            }
2699            interface BeginInstallTypesEventBody extends InstallTypesEventBody {
2700            }
2701            interface EndInstallTypesEventBody extends InstallTypesEventBody {
2702                /**
2703                 * true if installation succeeded, otherwise false
2704                 */
2705                success: boolean;
2706            }
2707            interface NavBarResponse extends Response {
2708                body?: NavigationBarItem[];
2709            }
2710            interface NavTreeResponse extends Response {
2711                body?: NavigationTree;
2712            }
2713            interface CallHierarchyItem {
2714                name: string;
2715                kind: ScriptElementKind;
2716                kindModifiers?: string;
2717                file: string;
2718                span: TextSpan;
2719                selectionSpan: TextSpan;
2720                containerName?: string;
2721            }
2722            interface CallHierarchyIncomingCall {
2723                from: CallHierarchyItem;
2724                fromSpans: TextSpan[];
2725            }
2726            interface CallHierarchyOutgoingCall {
2727                to: CallHierarchyItem;
2728                fromSpans: TextSpan[];
2729            }
2730            interface PrepareCallHierarchyRequest extends FileLocationRequest {
2731                command: CommandTypes.PrepareCallHierarchy;
2732            }
2733            interface PrepareCallHierarchyResponse extends Response {
2734                readonly body: CallHierarchyItem | CallHierarchyItem[];
2735            }
2736            interface ProvideCallHierarchyIncomingCallsRequest extends FileLocationRequest {
2737                command: CommandTypes.ProvideCallHierarchyIncomingCalls;
2738            }
2739            interface ProvideCallHierarchyIncomingCallsResponse extends Response {
2740                readonly body: CallHierarchyIncomingCall[];
2741            }
2742            interface ProvideCallHierarchyOutgoingCallsRequest extends FileLocationRequest {
2743                command: CommandTypes.ProvideCallHierarchyOutgoingCalls;
2744            }
2745            interface ProvideCallHierarchyOutgoingCallsResponse extends Response {
2746                readonly body: CallHierarchyOutgoingCall[];
2747            }
2748            enum IndentStyle {
2749                None = "None",
2750                Block = "Block",
2751                Smart = "Smart"
2752            }
2753            enum SemicolonPreference {
2754                Ignore = "ignore",
2755                Insert = "insert",
2756                Remove = "remove"
2757            }
2758            interface EditorSettings {
2759                baseIndentSize?: number;
2760                indentSize?: number;
2761                tabSize?: number;
2762                newLineCharacter?: string;
2763                convertTabsToSpaces?: boolean;
2764                indentStyle?: IndentStyle | ts.IndentStyle;
2765                trimTrailingWhitespace?: boolean;
2766            }
2767            interface FormatCodeSettings extends EditorSettings {
2768                insertSpaceAfterCommaDelimiter?: boolean;
2769                insertSpaceAfterSemicolonInForStatements?: boolean;
2770                insertSpaceBeforeAndAfterBinaryOperators?: boolean;
2771                insertSpaceAfterConstructor?: boolean;
2772                insertSpaceAfterKeywordsInControlFlowStatements?: boolean;
2773                insertSpaceAfterFunctionKeywordForAnonymousFunctions?: boolean;
2774                insertSpaceAfterOpeningAndBeforeClosingEmptyBraces?: boolean;
2775                insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean;
2776                insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?: boolean;
2777                insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
2778                insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?: boolean;
2779                insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
2780                insertSpaceAfterTypeAssertion?: boolean;
2781                insertSpaceBeforeFunctionParenthesis?: boolean;
2782                placeOpenBraceOnNewLineForFunctions?: boolean;
2783                placeOpenBraceOnNewLineForControlBlocks?: boolean;
2784                insertSpaceBeforeTypeAnnotation?: boolean;
2785                semicolons?: SemicolonPreference;
2786            }
2787            interface UserPreferences {
2788                readonly disableSuggestions?: boolean;
2789                readonly quotePreference?: "auto" | "double" | "single";
2790                /**
2791                 * If enabled, TypeScript will search through all external modules' exports and add them to the completions list.
2792                 * This affects lone identifier completions but not completions on the right hand side of `obj.`.
2793                 */
2794                readonly includeCompletionsForModuleExports?: boolean;
2795                /**
2796                 * Enables auto-import-style completions on partially-typed import statements. E.g., allows
2797                 * `import write|` to be completed to `import { writeFile } from "fs"`.
2798                 */
2799                readonly includeCompletionsForImportStatements?: boolean;
2800                /**
2801                 * Allows completions to be formatted with snippet text, indicated by `CompletionItem["isSnippet"]`.
2802                 */
2803                readonly includeCompletionsWithSnippetText?: boolean;
2804                /**
2805                 * If enabled, the completion list will include completions with invalid identifier names.
2806                 * For those entries, The `insertText` and `replacementSpan` properties will be set to change from `.x` property access to `["x"]`.
2807                 */
2808                readonly includeCompletionsWithInsertText?: boolean;
2809                /**
2810                 * Unless this option is `false`, or `includeCompletionsWithInsertText` is not enabled,
2811                 * member completion lists triggered with `.` will include entries on potentially-null and potentially-undefined
2812                 * values, with insertion text to replace preceding `.` tokens with `?.`.
2813                 */
2814                readonly includeAutomaticOptionalChainCompletions?: boolean;
2815                /**
2816                 * If enabled, completions for class members (e.g. methods and properties) will include
2817                 * a whole declaration for the member.
2818                 * E.g., `class A { f| }` could be completed to `class A { foo(): number {} }`, instead of
2819                 * `class A { foo }`.
2820                 */
2821                readonly includeCompletionsWithClassMemberSnippets?: boolean;
2822                /**
2823                 * If enabled, object literal methods will have a method declaration completion entry in addition
2824                 * to the regular completion entry containing just the method name.
2825                 * E.g., `const objectLiteral: T = { f| }` could be completed to `const objectLiteral: T = { foo(): void {} }`,
2826                 * in addition to `const objectLiteral: T = { foo }`.
2827                 */
2828                readonly includeCompletionsWithObjectLiteralMethodSnippets?: boolean;
2829                /**
2830                 * Indicates whether {@link CompletionEntry.labelDetails completion entry label details} are supported.
2831                 * If not, contents of `labelDetails` may be included in the {@link CompletionEntry.name} property.
2832                 */
2833                readonly useLabelDetailsInCompletionEntries?: boolean;
2834                readonly allowIncompleteCompletions?: boolean;
2835                readonly importModuleSpecifierPreference?: "shortest" | "project-relative" | "relative" | "non-relative";
2836                /** Determines whether we import `foo/index.ts` as "foo", "foo/index", or "foo/index.js" */
2837                readonly importModuleSpecifierEnding?: "auto" | "minimal" | "index" | "js";
2838                readonly allowTextChangesInNewFiles?: boolean;
2839                readonly lazyConfiguredProjectsFromExternalProject?: boolean;
2840                readonly providePrefixAndSuffixTextForRename?: boolean;
2841                readonly provideRefactorNotApplicableReason?: boolean;
2842                readonly allowRenameOfImportPath?: boolean;
2843                readonly includePackageJsonAutoImports?: "auto" | "on" | "off";
2844                readonly jsxAttributeCompletionStyle?: "auto" | "braces" | "none";
2845                readonly displayPartsForJSDoc?: boolean;
2846                readonly generateReturnInDocTemplate?: boolean;
2847                readonly includeInlayParameterNameHints?: "none" | "literals" | "all";
2848                readonly includeInlayParameterNameHintsWhenArgumentMatchesName?: boolean;
2849                readonly includeInlayFunctionParameterTypeHints?: boolean;
2850                readonly includeInlayVariableTypeHints?: boolean;
2851                readonly includeInlayVariableTypeHintsWhenTypeMatchesName?: boolean;
2852                readonly includeInlayPropertyDeclarationTypeHints?: boolean;
2853                readonly includeInlayFunctionLikeReturnTypeHints?: boolean;
2854                readonly includeInlayEnumMemberValueHints?: boolean;
2855                readonly autoImportFileExcludePatterns?: string[];
2856                /**
2857                 * Indicates whether {@link ReferencesResponseItem.lineText} is supported.
2858                 */
2859                readonly disableLineTextInReferences?: boolean;
2860            }
2861            interface CompilerOptions {
2862                allowJs?: boolean;
2863                allowSyntheticDefaultImports?: boolean;
2864                allowUnreachableCode?: boolean;
2865                allowUnusedLabels?: boolean;
2866                alwaysStrict?: boolean;
2867                baseUrl?: string;
2868                charset?: string;
2869                checkJs?: boolean;
2870                declaration?: boolean;
2871                declarationDir?: string;
2872                disableSizeLimit?: boolean;
2873                downlevelIteration?: boolean;
2874                emitBOM?: boolean;
2875                emitDecoratorMetadata?: boolean;
2876                experimentalDecorators?: boolean;
2877                forceConsistentCasingInFileNames?: boolean;
2878                importHelpers?: boolean;
2879                inlineSourceMap?: boolean;
2880                inlineSources?: boolean;
2881                isolatedModules?: boolean;
2882                jsx?: JsxEmit | ts.JsxEmit;
2883                lib?: string[];
2884                locale?: string;
2885                mapRoot?: string;
2886                maxNodeModuleJsDepth?: number;
2887                module?: ModuleKind | ts.ModuleKind;
2888                moduleResolution?: ModuleResolutionKind | ts.ModuleResolutionKind;
2889                newLine?: NewLineKind | ts.NewLineKind;
2890                noEmit?: boolean;
2891                noEmitHelpers?: boolean;
2892                noEmitOnError?: boolean;
2893                noErrorTruncation?: boolean;
2894                noFallthroughCasesInSwitch?: boolean;
2895                noImplicitAny?: boolean;
2896                noImplicitReturns?: boolean;
2897                noImplicitThis?: boolean;
2898                noUnusedLocals?: boolean;
2899                noUnusedParameters?: boolean;
2900                noImplicitUseStrict?: boolean;
2901                noLib?: boolean;
2902                noResolve?: boolean;
2903                out?: string;
2904                outDir?: string;
2905                outFile?: string;
2906                paths?: MapLike<string[]>;
2907                plugins?: PluginImport[];
2908                preserveConstEnums?: boolean;
2909                preserveSymlinks?: boolean;
2910                project?: string;
2911                reactNamespace?: string;
2912                removeComments?: boolean;
2913                references?: ProjectReference[];
2914                rootDir?: string;
2915                rootDirs?: string[];
2916                skipLibCheck?: boolean;
2917                skipDefaultLibCheck?: boolean;
2918                sourceMap?: boolean;
2919                sourceRoot?: string;
2920                strict?: boolean;
2921                strictNullChecks?: boolean;
2922                suppressExcessPropertyErrors?: boolean;
2923                suppressImplicitAnyIndexErrors?: boolean;
2924                useDefineForClassFields?: boolean;
2925                target?: ScriptTarget | ts.ScriptTarget;
2926                traceResolution?: boolean;
2927                resolveJsonModule?: boolean;
2928                types?: string[];
2929                /** Paths used to used to compute primary types search locations */
2930                typeRoots?: string[];
2931                ets?: EtsOptions;
2932                packageManagerType?: string;
2933                emitNodeModulesFiles?: boolean;
2934                [option: string]: CompilerOptionsValue | undefined;
2935            }
2936            enum JsxEmit {
2937                None = "None",
2938                Preserve = "Preserve",
2939                ReactNative = "ReactNative",
2940                React = "React"
2941            }
2942            enum ModuleKind {
2943                None = "None",
2944                CommonJS = "CommonJS",
2945                AMD = "AMD",
2946                UMD = "UMD",
2947                System = "System",
2948                ES6 = "ES6",
2949                ES2015 = "ES2015",
2950                ESNext = "ESNext"
2951            }
2952            enum ModuleResolutionKind {
2953                Classic = "Classic",
2954                Node = "Node"
2955            }
2956            enum NewLineKind {
2957                Crlf = "Crlf",
2958                Lf = "Lf"
2959            }
2960            enum ScriptTarget {
2961                ES3 = "ES3",
2962                ES5 = "ES5",
2963                ES6 = "ES6",
2964                ES2015 = "ES2015",
2965                ES2016 = "ES2016",
2966                ES2017 = "ES2017",
2967                ES2018 = "ES2018",
2968                ES2019 = "ES2019",
2969                ES2020 = "ES2020",
2970                ES2021 = "ES2021",
2971                ES2022 = "ES2022",
2972                ESNext = "ESNext"
2973            }
2974            enum ClassificationType {
2975                comment = 1,
2976                identifier = 2,
2977                keyword = 3,
2978                numericLiteral = 4,
2979                operator = 5,
2980                stringLiteral = 6,
2981                regularExpressionLiteral = 7,
2982                whiteSpace = 8,
2983                text = 9,
2984                punctuation = 10,
2985                className = 11,
2986                enumName = 12,
2987                interfaceName = 13,
2988                moduleName = 14,
2989                typeParameterName = 15,
2990                typeAliasName = 16,
2991                parameterName = 17,
2992                docCommentTagName = 18,
2993                jsxOpenTagName = 19,
2994                jsxCloseTagName = 20,
2995                jsxSelfClosingTagName = 21,
2996                jsxAttribute = 22,
2997                jsxText = 23,
2998                jsxAttributeStringLiteralValue = 24,
2999                bigintLiteral = 25
3000            }
3001        }
3002        interface CompressedData {
3003            length: number;
3004            compressionKind: string;
3005            data: any;
3006        }
3007        type ModuleImportResult = {
3008            module: {};
3009            error: undefined;
3010        } | {
3011            module: undefined;
3012            error: {
3013                stack?: string;
3014                message?: string;
3015            };
3016        };
3017        /** @deprecated Use {@link ModuleImportResult} instead. */
3018        type RequireResult = ModuleImportResult;
3019        interface ServerHost extends System {
3020            watchFile(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher;
3021            watchDirectory(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher;
3022            setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): any;
3023            clearTimeout(timeoutId: any): void;
3024            setImmediate(callback: (...args: any[]) => void, ...args: any[]): any;
3025            clearImmediate(timeoutId: any): void;
3026            gc?(): void;
3027            trace?(s: string): void;
3028            require?(initialPath: string, moduleName: string): ModuleImportResult;
3029            getJsDocNodeCheckedConfig?(fileCheckedInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
3030            getJsDocNodeConditionCheckedResult?(fileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
3031            getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
3032        }
3033        function createInstallTypingsRequest(project: Project, typeAcquisition: TypeAcquisition, unresolvedImports: SortedReadonlyArray<string>, cachePath?: string): DiscoverTypings;
3034        function toNormalizedPath(fileName: string): NormalizedPath;
3035        function normalizedPathToPath(normalizedPath: NormalizedPath, currentDirectory: string, getCanonicalFileName: (f: string) => string): Path;
3036        function asNormalizedPath(fileName: string): NormalizedPath;
3037        function createNormalizedPathMap<T>(): NormalizedPathMap<T>;
3038        function isInferredProjectName(name: string): boolean;
3039        function makeInferredProjectName(counter: number): string;
3040        function createSortedArray<T>(): SortedArray<T>;
3041        enum LogLevel {
3042            terse = 0,
3043            normal = 1,
3044            requestTime = 2,
3045            verbose = 3
3046        }
3047        const emptyArray: SortedReadonlyArray<never>;
3048        interface Logger {
3049            close(): void;
3050            hasLevel(level: LogLevel): boolean;
3051            loggingEnabled(): boolean;
3052            perftrc(s: string): void;
3053            info(s: string): void;
3054            startGroup(): void;
3055            endGroup(): void;
3056            msg(s: string, type?: Msg): void;
3057            getLogFileName(): string | undefined;
3058        }
3059        enum Msg {
3060            Err = "Err",
3061            Info = "Info",
3062            Perf = "Perf"
3063        }
3064        namespace Msg {
3065            /** @deprecated Only here for backwards-compatibility. Prefer just `Msg`. */
3066            type Types = Msg;
3067        }
3068        namespace Errors {
3069            function ThrowNoProject(): never;
3070            function ThrowProjectLanguageServiceDisabled(): never;
3071            function ThrowProjectDoesNotContainDocument(fileName: string, project: Project): never;
3072        }
3073        type NormalizedPath = string & {
3074            __normalizedPathTag: any;
3075        };
3076        interface NormalizedPathMap<T> {
3077            get(path: NormalizedPath): T | undefined;
3078            set(path: NormalizedPath, value: T): void;
3079            contains(path: NormalizedPath): boolean;
3080            remove(path: NormalizedPath): void;
3081        }
3082        function isDynamicFileName(fileName: NormalizedPath): boolean;
3083        interface ScriptInfoVersion {
3084            svc: number;
3085            text: number;
3086        }
3087        class ScriptInfo {
3088            private readonly host;
3089            readonly fileName: NormalizedPath;
3090            readonly scriptKind: ScriptKind;
3091            readonly hasMixedContent: boolean;
3092            readonly path: Path;
3093            /**
3094             * All projects that include this file
3095             */
3096            readonly containingProjects: Project[];
3097            private formatSettings;
3098            private preferences;
3099            private textStorage;
3100            constructor(host: ServerHost, fileName: NormalizedPath, scriptKind: ScriptKind, hasMixedContent: boolean, path: Path, initialVersion?: ScriptInfoVersion);
3101            isScriptOpen(): boolean;
3102            open(newText: string): void;
3103            close(fileExists?: boolean): void;
3104            getSnapshot(): IScriptSnapshot;
3105            private ensureRealPath;
3106            getFormatCodeSettings(): FormatCodeSettings | undefined;
3107            getPreferences(): protocol.UserPreferences | undefined;
3108            attachToProject(project: Project): boolean;
3109            isAttached(project: Project): boolean;
3110            detachFromProject(project: Project): void;
3111            detachAllProjects(): void;
3112            getDefaultProject(): Project;
3113            registerFileUpdate(): void;
3114            setOptions(formatSettings: FormatCodeSettings, preferences: protocol.UserPreferences | undefined): void;
3115            getLatestVersion(): string;
3116            saveTo(fileName: string): void;
3117            reloadFromFile(tempFileName?: NormalizedPath): boolean;
3118            editContent(start: number, end: number, newText: string): void;
3119            markContainingProjectsAsDirty(): void;
3120            isOrphan(): boolean;
3121            /**
3122             *  @param line 1 based index
3123             */
3124            lineToTextSpan(line: number): TextSpan;
3125            /**
3126             * @param line 1 based index
3127             * @param offset 1 based index
3128             */
3129            lineOffsetToPosition(line: number, offset: number): number;
3130            positionToLineOffset(position: number): protocol.Location;
3131            isJavaScript(): boolean;
3132        }
3133        interface InstallPackageOptionsWithProject extends InstallPackageOptions {
3134            projectName: string;
3135            projectRootPath: Path;
3136        }
3137        interface ITypingsInstaller {
3138            isKnownTypesPackageName(name: string): boolean;
3139            installPackage(options: InstallPackageOptionsWithProject): Promise<ApplyCodeActionCommandResult>;
3140            enqueueInstallTypingsRequest(p: Project, typeAcquisition: TypeAcquisition, unresolvedImports: SortedReadonlyArray<string> | undefined): void;
3141            attach(projectService: ProjectService): void;
3142            onProjectClosed(p: Project): void;
3143            readonly globalTypingsCacheLocation: string | undefined;
3144        }
3145        const nullTypingsInstaller: ITypingsInstaller;
3146        function allRootFilesAreJsOrDts(project: Project): boolean;
3147        function allFilesAreJsOrDts(project: Project): boolean;
3148        enum ProjectKind {
3149            Inferred = 0,
3150            Configured = 1,
3151            External = 2,
3152            AutoImportProvider = 3,
3153            Auxiliary = 4
3154        }
3155        interface PluginCreateInfo {
3156            project: Project;
3157            languageService: LanguageService;
3158            languageServiceHost: LanguageServiceHost;
3159            serverHost: ServerHost;
3160            session?: Session<unknown>;
3161            config: any;
3162        }
3163        interface PluginModule {
3164            create(createInfo: PluginCreateInfo): LanguageService;
3165            getExternalFiles?(proj: Project): string[];
3166            onConfigurationChanged?(config: any): void;
3167        }
3168        interface PluginModuleWithName {
3169            name: string;
3170            module: PluginModule;
3171        }
3172        type PluginModuleFactory = (mod: {
3173            typescript: typeof ts;
3174        }) => PluginModule;
3175        abstract class Project implements LanguageServiceHost, ModuleResolutionHost {
3176            readonly projectKind: ProjectKind;
3177            readonly projectService: ProjectService;
3178            private documentRegistry;
3179            private compilerOptions;
3180            compileOnSaveEnabled: boolean;
3181            protected watchOptions: WatchOptions | undefined;
3182            private rootFiles;
3183            private rootFilesMap;
3184            private program;
3185            private externalFiles;
3186            private missingFilesMap;
3187            private generatedFilesMap;
3188            protected languageService: LanguageService;
3189            languageServiceEnabled: boolean;
3190            readonly trace?: (s: string) => void;
3191            readonly realpath?: (path: string) => string;
3192            private builderState;
3193            /**
3194             * Set of files names that were updated since the last call to getChangesSinceVersion.
3195             */
3196            private updatedFileNames;
3197            /**
3198             * Set of files that was returned from the last call to getChangesSinceVersion.
3199             */
3200            private lastReportedFileNames;
3201            /**
3202             * Last version that was reported.
3203             */
3204            private lastReportedVersion;
3205            /**
3206             * Current project's program version. (incremented everytime new program is created that is not complete reuse from the old one)
3207             * This property is changed in 'updateGraph' based on the set of files in program
3208             */
3209            private projectProgramVersion;
3210            /**
3211             * Current version of the project state. It is changed when:
3212             * - new root file was added/removed
3213             * - edit happen in some file that is currently included in the project.
3214             * This property is different from projectStructureVersion since in most cases edits don't affect set of files in the project
3215             */
3216            private projectStateVersion;
3217            protected projectErrors: Diagnostic[] | undefined;
3218            protected isInitialLoadPending: () => boolean;
3219            private readonly cancellationToken;
3220            isNonTsProject(): boolean;
3221            isJsOnlyProject(): boolean;
3222            static resolveModule(moduleName: string, initialDir: string, host: ServerHost, log: (message: string) => void, logErrors?: (message: string) => void): {} | undefined;
3223            getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
3224            getJsDocNodeCheckedConfig(jsDocFileCheckedInfo: FileCheckModuleInfo, sourceFilePath: string): JsDocNodeCheckConfig;
3225            getJsDocNodeConditionCheckedResult(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
3226            getTagNameNeededCheckByFile(filePath: string): TagCheckParam;
3227            getExpressionCheckedResultsByFile?(filePath: string, jsDocs: JSDoc[]): ConditionCheckResult;
3228            isKnownTypesPackageName(name: string): boolean;
3229            installPackage(options: InstallPackageOptions): Promise<ApplyCodeActionCommandResult>;
3230            private get typingsCache();
3231            getCompilationSettings(): ts.CompilerOptions;
3232            getCompilerOptions(): ts.CompilerOptions;
3233            getNewLine(): string;
3234            getProjectVersion(): string;
3235            getProjectReferences(): readonly ProjectReference[] | undefined;
3236            getScriptFileNames(): string[];
3237            private getOrCreateScriptInfoAndAttachToProject;
3238            getScriptKind(fileName: string): ts.ScriptKind;
3239            getScriptVersion(filename: string): string;
3240            getScriptSnapshot(filename: string): IScriptSnapshot | undefined;
3241            getCancellationToken(): HostCancellationToken;
3242            getCurrentDirectory(): string;
3243            getDefaultLibFileName(): string;
3244            useCaseSensitiveFileNames(): boolean;
3245            readDirectory(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
3246            readFile(fileName: string): string | undefined;
3247            writeFile(fileName: string, content: string): void;
3248            fileExists(file: string): boolean;
3249            resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference, _options?: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModuleFull | undefined)[];
3250            getModuleResolutionCache(): ModuleResolutionCache | undefined;
3251            getResolvedModuleWithFailedLookupLocationsFromCache(moduleName: string, containingFile: string, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations | undefined;
3252            resolveTypeReferenceDirectives(typeDirectiveNames: string[] | FileReference[], containingFile: string, redirectedReference?: ResolvedProjectReference, _options?: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[];
3253            directoryExists(path: string): boolean;
3254            getDirectories(path: string): string[];
3255            log(s: string): void;
3256            error(s: string): void;
3257            private setInternalCompilerOptionsForEmittingJsFiles;
3258            /**
3259             * Get the errors that dont have any file name associated
3260             */
3261            getGlobalProjectErrors(): readonly Diagnostic[];
3262            /**
3263             * Get all the project errors
3264             */
3265            getAllProjectErrors(): readonly Diagnostic[];
3266            setProjectErrors(projectErrors: Diagnostic[] | undefined): void;
3267            getLanguageService(ensureSynchronized?: boolean): LanguageService;
3268            getCompileOnSaveAffectedFileList(scriptInfo: ScriptInfo): string[];
3269            /**
3270             * Returns true if emit was conducted
3271             */
3272            emitFile(scriptInfo: ScriptInfo, writeFile: (path: string, data: string, writeByteOrderMark?: boolean) => void): EmitResult;
3273            enableLanguageService(): void;
3274            disableLanguageService(lastFileExceededProgramSize?: string): void;
3275            getProjectName(): string;
3276            protected removeLocalTypingsFromTypeAcquisition(newTypeAcquisition: TypeAcquisition): TypeAcquisition;
3277            getExternalFiles(): SortedReadonlyArray<string>;
3278            getSourceFile(path: Path): ts.SourceFile | undefined;
3279            close(): void;
3280            private detachScriptInfoIfNotRoot;
3281            isClosed(): boolean;
3282            hasRoots(): boolean;
3283            getRootFiles(): ts.server.NormalizedPath[];
3284            getRootScriptInfos(): ts.server.ScriptInfo[];
3285            getScriptInfos(): ScriptInfo[];
3286            getExcludedFiles(): readonly NormalizedPath[];
3287            getFileNames(excludeFilesFromExternalLibraries?: boolean, excludeConfigFiles?: boolean): ts.server.NormalizedPath[];
3288            hasConfigFile(configFilePath: NormalizedPath): boolean;
3289            containsScriptInfo(info: ScriptInfo): boolean;
3290            containsFile(filename: NormalizedPath, requireOpen?: boolean): boolean;
3291            isRoot(info: ScriptInfo): boolean;
3292            addRoot(info: ScriptInfo, fileName?: NormalizedPath): void;
3293            addMissingFileRoot(fileName: NormalizedPath): void;
3294            removeFile(info: ScriptInfo, fileExists: boolean, detachFromProject: boolean): void;
3295            registerFileUpdate(fileName: string): void;
3296            markAsDirty(): void;
3297            /**
3298             * Updates set of files that contribute to this project
3299             * @returns: true if set of files in the project stays the same and false - otherwise.
3300             */
3301            updateGraph(): boolean;
3302            protected removeExistingTypings(include: string[]): string[];
3303            private updateGraphWorker;
3304            private detachScriptInfoFromProject;
3305            private addMissingFileWatcher;
3306            private isWatchedMissingFile;
3307            private createGeneratedFileWatcher;
3308            private isValidGeneratedFileWatcher;
3309            private clearGeneratedFileWatch;
3310            getScriptInfoForNormalizedPath(fileName: NormalizedPath): ScriptInfo | undefined;
3311            getScriptInfo(uncheckedFileName: string): ts.server.ScriptInfo | undefined;
3312            filesToString(writeProjectFileNames: boolean): string;
3313            setCompilerOptions(compilerOptions: CompilerOptions): void;
3314            setTypeAcquisition(newTypeAcquisition: TypeAcquisition | undefined): void;
3315            getTypeAcquisition(): ts.TypeAcquisition;
3316            protected removeRoot(info: ScriptInfo): void;
3317            protected enableGlobalPlugins(options: CompilerOptions, pluginConfigOverrides: Map<any> | undefined): void;
3318            protected enablePlugin(pluginConfigEntry: PluginImport, searchPaths: string[], pluginConfigOverrides: Map<any> | undefined): void;
3319            private enableProxy;
3320            /** Starts a new check for diagnostics. Call this if some file has updated that would cause diagnostics to be changed. */
3321            refreshDiagnostics(): void;
3322        }
3323        /**
3324         * If a file is opened and no tsconfig (or jsconfig) is found,
3325         * the file and its imports/references are put into an InferredProject.
3326         */
3327        class InferredProject extends Project {
3328            private _isJsInferredProject;
3329            toggleJsInferredProject(isJsInferredProject: boolean): void;
3330            setCompilerOptions(options?: CompilerOptions): void;
3331            /** this is canonical project root path */
3332            readonly projectRootPath: string | undefined;
3333            addRoot(info: ScriptInfo): void;
3334            removeRoot(info: ScriptInfo): void;
3335            isProjectWithSingleRoot(): boolean;
3336            close(): void;
3337            getTypeAcquisition(): TypeAcquisition;
3338        }
3339        class AutoImportProviderProject extends Project {
3340            private hostProject;
3341            private rootFileNames;
3342            isOrphan(): boolean;
3343            updateGraph(): boolean;
3344            hasRoots(): boolean;
3345            markAsDirty(): void;
3346            getScriptFileNames(): string[];
3347            getLanguageService(): never;
3348            getModuleResolutionHostForAutoImportProvider(): never;
3349            getProjectReferences(): readonly ts.ProjectReference[] | undefined;
3350            getTypeAcquisition(): TypeAcquisition;
3351        }
3352        /**
3353         * If a file is opened, the server will look for a tsconfig (or jsconfig)
3354         * and if successful create a ConfiguredProject for it.
3355         * Otherwise it will create an InferredProject.
3356         */
3357        class ConfiguredProject extends Project {
3358            readonly canonicalConfigFilePath: NormalizedPath;
3359            /** Ref count to the project when opened from external project */
3360            private externalProjectRefCount;
3361            private projectReferences;
3362            /**
3363             * If the project has reload from disk pending, it reloads (and then updates graph as part of that) instead of just updating the graph
3364             * @returns: true if set of files in the project stays the same and false - otherwise.
3365             */
3366            updateGraph(): boolean;
3367            getConfigFilePath(): ts.server.NormalizedPath;
3368            getProjectReferences(): readonly ProjectReference[] | undefined;
3369            updateReferences(refs: readonly ProjectReference[] | undefined): void;
3370            /**
3371             * Get the errors that dont have any file name associated
3372             */
3373            getGlobalProjectErrors(): readonly Diagnostic[];
3374            /**
3375             * Get all the project errors
3376             */
3377            getAllProjectErrors(): readonly Diagnostic[];
3378            setProjectErrors(projectErrors: Diagnostic[]): void;
3379            close(): void;
3380            getEffectiveTypeRoots(): string[];
3381        }
3382        /**
3383         * Project whose configuration is handled externally, such as in a '.csproj'.
3384         * These are created only if a host explicitly calls `openExternalProject`.
3385         */
3386        class ExternalProject extends Project {
3387            externalProjectName: string;
3388            compileOnSaveEnabled: boolean;
3389            excludedFiles: readonly NormalizedPath[];
3390            updateGraph(): boolean;
3391            getExcludedFiles(): readonly ts.server.NormalizedPath[];
3392        }
3393        function convertFormatOptions(protocolOptions: protocol.FormatCodeSettings): FormatCodeSettings;
3394        function convertCompilerOptions(protocolOptions: protocol.ExternalProjectCompilerOptions): CompilerOptions & protocol.CompileOnSaveMixin;
3395        function convertWatchOptions(protocolOptions: protocol.ExternalProjectCompilerOptions, currentDirectory?: string): WatchOptionsAndErrors | undefined;
3396        function convertTypeAcquisition(protocolOptions: protocol.InferredProjectCompilerOptions): TypeAcquisition | undefined;
3397        function tryConvertScriptKindName(scriptKindName: protocol.ScriptKindName | ScriptKind): ScriptKind;
3398        function convertScriptKindName(scriptKindName: protocol.ScriptKindName): ScriptKind.Unknown | ScriptKind.JS | ScriptKind.JSX | ScriptKind.TS | ScriptKind.TSX | ScriptKind.ETS;
3399        const maxProgramSizeForNonTsFiles: number;
3400        const ProjectsUpdatedInBackgroundEvent = "projectsUpdatedInBackground";
3401        interface ProjectsUpdatedInBackgroundEvent {
3402            eventName: typeof ProjectsUpdatedInBackgroundEvent;
3403            data: {
3404                openFiles: string[];
3405            };
3406        }
3407        const ProjectLoadingStartEvent = "projectLoadingStart";
3408        interface ProjectLoadingStartEvent {
3409            eventName: typeof ProjectLoadingStartEvent;
3410            data: {
3411                project: Project;
3412                reason: string;
3413            };
3414        }
3415        const ProjectLoadingFinishEvent = "projectLoadingFinish";
3416        interface ProjectLoadingFinishEvent {
3417            eventName: typeof ProjectLoadingFinishEvent;
3418            data: {
3419                project: Project;
3420            };
3421        }
3422        const LargeFileReferencedEvent = "largeFileReferenced";
3423        interface LargeFileReferencedEvent {
3424            eventName: typeof LargeFileReferencedEvent;
3425            data: {
3426                file: string;
3427                fileSize: number;
3428                maxFileSize: number;
3429            };
3430        }
3431        const ConfigFileDiagEvent = "configFileDiag";
3432        interface ConfigFileDiagEvent {
3433            eventName: typeof ConfigFileDiagEvent;
3434            data: {
3435                triggerFile: string;
3436                configFileName: string;
3437                diagnostics: readonly Diagnostic[];
3438            };
3439        }
3440        const ProjectLanguageServiceStateEvent = "projectLanguageServiceState";
3441        interface ProjectLanguageServiceStateEvent {
3442            eventName: typeof ProjectLanguageServiceStateEvent;
3443            data: {
3444                project: Project;
3445                languageServiceEnabled: boolean;
3446            };
3447        }
3448        const ProjectInfoTelemetryEvent = "projectInfo";
3449        /** This will be converted to the payload of a protocol.TelemetryEvent in session.defaultEventHandler. */
3450        interface ProjectInfoTelemetryEvent {
3451            readonly eventName: typeof ProjectInfoTelemetryEvent;
3452            readonly data: ProjectInfoTelemetryEventData;
3453        }
3454        const OpenFileInfoTelemetryEvent = "openFileInfo";
3455        /**
3456         * Info that we may send about a file that was just opened.
3457         * Info about a file will only be sent once per session, even if the file changes in ways that might affect the info.
3458         * Currently this is only sent for '.js' files.
3459         */
3460        interface OpenFileInfoTelemetryEvent {
3461            readonly eventName: typeof OpenFileInfoTelemetryEvent;
3462            readonly data: OpenFileInfoTelemetryEventData;
3463        }
3464        interface ProjectInfoTelemetryEventData {
3465            /** Cryptographically secure hash of project file location. */
3466            readonly projectId: string;
3467            /** Count of file extensions seen in the project. */
3468            readonly fileStats: FileStats;
3469            /**
3470             * Any compiler options that might contain paths will be taken out.
3471             * Enum compiler options will be converted to strings.
3472             */
3473            readonly compilerOptions: CompilerOptions;
3474            readonly extends: boolean | undefined;
3475            readonly files: boolean | undefined;
3476            readonly include: boolean | undefined;
3477            readonly exclude: boolean | undefined;
3478            readonly compileOnSave: boolean;
3479            readonly typeAcquisition: ProjectInfoTypeAcquisitionData;
3480            readonly configFileName: "tsconfig.json" | "jsconfig.json" | "other";
3481            readonly projectType: "external" | "configured";
3482            readonly languageServiceEnabled: boolean;
3483            /** TypeScript version used by the server. */
3484            readonly version: string;
3485        }
3486        interface OpenFileInfoTelemetryEventData {
3487            readonly info: OpenFileInfo;
3488        }
3489        interface ProjectInfoTypeAcquisitionData {
3490            readonly enable: boolean | undefined;
3491            readonly include: boolean;
3492            readonly exclude: boolean;
3493        }
3494        interface FileStats {
3495            readonly js: number;
3496            readonly jsSize?: number;
3497            readonly jsx: number;
3498            readonly jsxSize?: number;
3499            readonly ts: number;
3500            readonly tsSize?: number;
3501            readonly tsx: number;
3502            readonly tsxSize?: number;
3503            readonly dts: number;
3504            readonly dtsSize?: number;
3505            readonly deferred: number;
3506            readonly deferredSize?: number;
3507            readonly ets: number;
3508            readonly etsSize?: number;
3509            readonly dets: number;
3510            readonly detsSize?: number;
3511        }
3512        interface OpenFileInfo {
3513            readonly checkJs: boolean;
3514        }
3515        type ProjectServiceEvent = LargeFileReferencedEvent | ProjectsUpdatedInBackgroundEvent | ProjectLoadingStartEvent | ProjectLoadingFinishEvent | ConfigFileDiagEvent | ProjectLanguageServiceStateEvent | ProjectInfoTelemetryEvent | OpenFileInfoTelemetryEvent;
3516        type ProjectServiceEventHandler = (event: ProjectServiceEvent) => void;
3517        interface SafeList {
3518            [name: string]: {
3519                match: RegExp;
3520                exclude?: (string | number)[][];
3521                types?: string[];
3522            };
3523        }
3524        interface TypesMapFile {
3525            typesMap: SafeList;
3526            simpleMap: {
3527                [libName: string]: string;
3528            };
3529        }
3530        interface HostConfiguration {
3531            formatCodeOptions: FormatCodeSettings;
3532            preferences: protocol.UserPreferences;
3533            hostInfo: string;
3534            extraFileExtensions?: FileExtensionInfo[];
3535            watchOptions?: WatchOptions;
3536        }
3537        interface OpenConfiguredProjectResult {
3538            configFileName?: NormalizedPath;
3539            configFileErrors?: readonly Diagnostic[];
3540        }
3541        interface ProjectServiceOptions {
3542            host: ServerHost;
3543            logger: Logger;
3544            cancellationToken: HostCancellationToken;
3545            useSingleInferredProject: boolean;
3546            useInferredProjectPerProjectRoot: boolean;
3547            typingsInstaller: ITypingsInstaller;
3548            eventHandler?: ProjectServiceEventHandler;
3549            suppressDiagnosticEvents?: boolean;
3550            throttleWaitMilliseconds?: number;
3551            globalPlugins?: readonly string[];
3552            pluginProbeLocations?: readonly string[];
3553            allowLocalPluginLoads?: boolean;
3554            typesMapLocation?: string;
3555            /** @deprecated use serverMode instead */
3556            syntaxOnly?: boolean;
3557            serverMode?: LanguageServiceMode;
3558            session: Session<unknown> | undefined;
3559        }
3560        interface WatchOptionsAndErrors {
3561            watchOptions: WatchOptions;
3562            errors: Diagnostic[] | undefined;
3563        }
3564        class ProjectService {
3565            private readonly nodeModulesWatchers;
3566            /**
3567             * Contains all the deleted script info's version information so that
3568             * it does not reset when creating script info again
3569             * (and could have potentially collided with version where contents mismatch)
3570             */
3571            private readonly filenameToScriptInfoVersion;
3572            private readonly allJsFilesForOpenFileTelemetry;
3573            /**
3574             * maps external project file name to list of config files that were the part of this project
3575             */
3576            private readonly externalProjectToConfiguredProjectMap;
3577            /**
3578             * external projects (configuration and list of root files is not controlled by tsserver)
3579             */
3580            readonly externalProjects: ExternalProject[];
3581            /**
3582             * projects built from openFileRoots
3583             */
3584            readonly inferredProjects: InferredProject[];
3585            /**
3586             * projects specified by a tsconfig.json file
3587             */
3588            readonly configuredProjects: Map<ConfiguredProject>;
3589            /**
3590             * Open files: with value being project root path, and key being Path of the file that is open
3591             */
3592            readonly openFiles: Map<NormalizedPath | undefined>;
3593            /**
3594             * Map of open files that are opened without complete path but have projectRoot as current directory
3595             */
3596            private readonly openFilesWithNonRootedDiskPath;
3597            private compilerOptionsForInferredProjects;
3598            private compilerOptionsForInferredProjectsPerProjectRoot;
3599            private watchOptionsForInferredProjects;
3600            private watchOptionsForInferredProjectsPerProjectRoot;
3601            private typeAcquisitionForInferredProjects;
3602            private typeAcquisitionForInferredProjectsPerProjectRoot;
3603            /**
3604             * Project size for configured or external projects
3605             */
3606            private readonly projectToSizeMap;
3607            private readonly hostConfiguration;
3608            private safelist;
3609            private readonly legacySafelist;
3610            private pendingProjectUpdates;
3611            readonly currentDirectory: NormalizedPath;
3612            readonly toCanonicalFileName: (f: string) => string;
3613            readonly host: ServerHost;
3614            readonly logger: Logger;
3615            readonly cancellationToken: HostCancellationToken;
3616            readonly useSingleInferredProject: boolean;
3617            readonly useInferredProjectPerProjectRoot: boolean;
3618            readonly typingsInstaller: ITypingsInstaller;
3619            private readonly globalCacheLocationDirectoryPath;
3620            readonly throttleWaitMilliseconds?: number;
3621            private readonly eventHandler?;
3622            private readonly suppressDiagnosticEvents?;
3623            readonly globalPlugins: readonly string[];
3624            readonly pluginProbeLocations: readonly string[];
3625            readonly allowLocalPluginLoads: boolean;
3626            private currentPluginConfigOverrides;
3627            readonly typesMapLocation: string | undefined;
3628            /** @deprecated use serverMode instead */
3629            readonly syntaxOnly: boolean;
3630            readonly serverMode: LanguageServiceMode;
3631            /** Tracks projects that we have already sent telemetry for. */
3632            private readonly seenProjects;
3633            private performanceEventHandler?;
3634            private pendingPluginEnablements?;
3635            private currentPluginEnablementPromise?;
3636            constructor(opts: ProjectServiceOptions);
3637            toPath(fileName: string): Path;
3638            private loadTypesMap;
3639            updateTypingsForProject(response: SetTypings | InvalidateCachedTypings | PackageInstalledResponse): void;
3640            private delayUpdateProjectGraph;
3641            private delayUpdateProjectGraphs;
3642            setCompilerOptionsForInferredProjects(projectCompilerOptions: protocol.InferredProjectCompilerOptions, projectRootPath?: string): void;
3643            findProject(projectName: string): Project | undefined;
3644            getDefaultProjectForFile(fileName: NormalizedPath, ensureProject: boolean): Project | undefined;
3645            private doEnsureDefaultProjectForFile;
3646            getScriptInfoEnsuringProjectsUptoDate(uncheckedFileName: string): ScriptInfo | undefined;
3647            /**
3648             * Ensures the project structures are upto date
3649             * This means,
3650             * - we go through all the projects and update them if they are dirty
3651             * - if updates reflect some change in structure or there was pending request to ensure projects for open files
3652             *   ensure that each open script info has project
3653             */
3654            private ensureProjectStructuresUptoDate;
3655            getFormatCodeOptions(file: NormalizedPath): FormatCodeSettings;
3656            getPreferences(file: NormalizedPath): protocol.UserPreferences;
3657            getHostFormatCodeOptions(): FormatCodeSettings;
3658            getHostPreferences(): protocol.UserPreferences;
3659            private onSourceFileChanged;
3660            private handleSourceMapProjects;
3661            private delayUpdateSourceInfoProjects;
3662            private delayUpdateProjectsOfScriptInfoPath;
3663            private handleDeletedFile;
3664            private removeProject;
3665            private assignOrphanScriptInfosToInferredProject;
3666            /**
3667             * Remove this file from the set of open, non-configured files.
3668             * @param info The file that has been closed or newly configured
3669             */
3670            private closeOpenFile;
3671            private deleteScriptInfo;
3672            private configFileExists;
3673            /**
3674             * Returns true if the configFileExistenceInfo is needed/impacted by open files that are root of inferred project
3675             */
3676            private configFileExistenceImpactsRootOfInferredProject;
3677            /**
3678             * This is called on file close, so that we stop watching the config file for this script info
3679             */
3680            private stopWatchingConfigFilesForClosedScriptInfo;
3681            /**
3682             * This function tries to search for a tsconfig.json for the given file.
3683             * This is different from the method the compiler uses because
3684             * the compiler can assume it will always start searching in the
3685             * current directory (the directory in which tsc was invoked).
3686             * The server must start searching from the directory containing
3687             * the newly opened file.
3688             */
3689            private forEachConfigFileLocation;
3690            /**
3691             * This function tries to search for a tsconfig.json for the given file.
3692             * This is different from the method the compiler uses because
3693             * the compiler can assume it will always start searching in the
3694             * current directory (the directory in which tsc was invoked).
3695             * The server must start searching from the directory containing
3696             * the newly opened file.
3697             * If script info is passed in, it is asserted to be open script info
3698             * otherwise just file name
3699             */
3700            private getConfigFileNameForFile;
3701            private printProjects;
3702            private getConfiguredProjectByCanonicalConfigFilePath;
3703            private findExternalProjectByProjectName;
3704            /** Get a filename if the language service exceeds the maximum allowed program size; otherwise returns undefined. */
3705            private getFilenameForExceededTotalSizeLimitForNonTsFiles;
3706            private createExternalProject;
3707            private addFilesToNonInferredProject;
3708            private updateNonInferredProjectFiles;
3709            private updateRootAndOptionsOfNonInferredProject;
3710            private sendConfigFileDiagEvent;
3711            private getOrCreateInferredProjectForProjectRootPathIfEnabled;
3712            private getOrCreateSingleInferredProjectIfEnabled;
3713            private getOrCreateSingleInferredWithoutProjectRoot;
3714            private createInferredProject;
3715            getScriptInfo(uncheckedFileName: string): ScriptInfo | undefined;
3716            private watchClosedScriptInfo;
3717            private createNodeModulesWatcher;
3718            private watchClosedScriptInfoInNodeModules;
3719            private getModifiedTime;
3720            private refreshScriptInfo;
3721            private refreshScriptInfosInDirectory;
3722            private stopWatchingScriptInfo;
3723            private getOrCreateScriptInfoNotOpenedByClientForNormalizedPath;
3724            private getOrCreateScriptInfoOpenedByClientForNormalizedPath;
3725            getOrCreateScriptInfoForNormalizedPath(fileName: NormalizedPath, openedByClient: boolean, fileContent?: string, scriptKind?: ScriptKind, hasMixedContent?: boolean, hostToQueryFileExistsOn?: {
3726                fileExists(path: string): boolean;
3727            }): ScriptInfo | undefined;
3728            private getOrCreateScriptInfoWorker;
3729            /**
3730             * 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
3731             */
3732            getScriptInfoForNormalizedPath(fileName: NormalizedPath): ScriptInfo | undefined;
3733            getScriptInfoForPath(fileName: Path): ScriptInfo | undefined;
3734            private addSourceInfoToSourceMap;
3735            private addMissingSourceMapFile;
3736            setHostConfiguration(args: protocol.ConfigureRequestArguments): void;
3737            closeLog(): void;
3738            /**
3739             * This function rebuilds the project for every file opened by the client
3740             * This does not reload contents of open files from disk. But we could do that if needed
3741             */
3742            reloadProjects(): void;
3743            /**
3744             * This function goes through all the openFiles and tries to file the config file for them.
3745             * If the config file is found and it refers to existing project, it reloads it either immediately
3746             * or schedules it for reload depending on delayReload option
3747             * If there is no existing project it just opens the configured project for the config file
3748             * reloadForInfo provides a way to filter out files to reload configured project for
3749             */
3750            private reloadConfiguredProjectForFiles;
3751            /**
3752             * Remove the root of inferred project if script info is part of another project
3753             */
3754            private removeRootOfInferredProjectIfNowPartOfOtherProject;
3755            /**
3756             * This function is to update the project structure for every inferred project.
3757             * It is called on the premise that all the configured projects are
3758             * up to date.
3759             * This will go through open files and assign them to inferred project if open file is not part of any other project
3760             * After that all the inferred project graphs are updated
3761             */
3762            private ensureProjectForOpenFiles;
3763            /**
3764             * Open file whose contents is managed by the client
3765             * @param filename is absolute pathname
3766             * @param fileContent is a known version of the file content that is more up to date than the one on disk
3767             */
3768            openClientFile(fileName: string, fileContent?: string, scriptKind?: ScriptKind, projectRootPath?: string): OpenConfiguredProjectResult;
3769            private findExternalProjectContainingOpenScriptInfo;
3770            private getOrCreateOpenScriptInfo;
3771            private assignProjectToOpenedScriptInfo;
3772            private createAncestorProjects;
3773            private ensureProjectChildren;
3774            private cleanupAfterOpeningFile;
3775            openClientFileWithNormalizedPath(fileName: NormalizedPath, fileContent?: string, scriptKind?: ScriptKind, hasMixedContent?: boolean, projectRootPath?: NormalizedPath): OpenConfiguredProjectResult;
3776            private removeOrphanConfiguredProjects;
3777            private removeOrphanScriptInfos;
3778            private telemetryOnOpenFile;
3779            /**
3780             * Close file whose contents is managed by the client
3781             * @param filename is absolute pathname
3782             */
3783            closeClientFile(uncheckedFileName: string): void;
3784            private collectChanges;
3785            private closeConfiguredProjectReferencedFromExternalProject;
3786            closeExternalProject(uncheckedFileName: string): void;
3787            openExternalProjects(projects: protocol.ExternalProject[]): void;
3788            /** Makes a filename safe to insert in a RegExp */
3789            private static readonly filenameEscapeRegexp;
3790            private static escapeFilenameForRegex;
3791            resetSafeList(): void;
3792            applySafeList(proj: protocol.ExternalProject): NormalizedPath[];
3793            openExternalProject(proj: protocol.ExternalProject): void;
3794            hasDeferredExtension(): boolean;
3795            private enableRequestedPluginsAsync;
3796            private enableRequestedPluginsWorker;
3797            private enableRequestedPluginsForProjectAsync;
3798            configurePlugin(args: protocol.ConfigurePluginRequestArguments): void;
3799        }
3800        function formatMessage<T extends protocol.Message>(msg: T, logger: Logger, byteLength: (s: string, encoding: string) => number, newLine: string): string;
3801        interface ServerCancellationToken extends HostCancellationToken {
3802            setRequest(requestId: number): void;
3803            resetRequest(requestId: number): void;
3804        }
3805        const nullCancellationToken: ServerCancellationToken;
3806        interface PendingErrorCheck {
3807            fileName: NormalizedPath;
3808            project: Project;
3809        }
3810        type CommandNames = protocol.CommandTypes;
3811        const CommandNames: any;
3812        type Event = <T extends object>(body: T, eventName: string) => void;
3813        interface EventSender {
3814            event: Event;
3815        }
3816        interface SessionOptions {
3817            host: ServerHost;
3818            cancellationToken: ServerCancellationToken;
3819            useSingleInferredProject: boolean;
3820            useInferredProjectPerProjectRoot: boolean;
3821            typingsInstaller: ITypingsInstaller;
3822            byteLength: (buf: string, encoding?: string) => number;
3823            hrtime: (start?: number[]) => number[];
3824            logger: Logger;
3825            /**
3826             * If falsy, all events are suppressed.
3827             */
3828            canUseEvents: boolean;
3829            eventHandler?: ProjectServiceEventHandler;
3830            /** Has no effect if eventHandler is also specified. */
3831            suppressDiagnosticEvents?: boolean;
3832            /** @deprecated use serverMode instead */
3833            syntaxOnly?: boolean;
3834            serverMode?: LanguageServiceMode;
3835            throttleWaitMilliseconds?: number;
3836            noGetErrOnBackgroundUpdate?: boolean;
3837            globalPlugins?: readonly string[];
3838            pluginProbeLocations?: readonly string[];
3839            allowLocalPluginLoads?: boolean;
3840            typesMapLocation?: string;
3841        }
3842        class Session<TMessage = string> implements EventSender {
3843            private readonly gcTimer;
3844            protected projectService: ProjectService;
3845            private changeSeq;
3846            private performanceData;
3847            private currentRequestId;
3848            private errorCheck;
3849            protected host: ServerHost;
3850            private readonly cancellationToken;
3851            protected readonly typingsInstaller: ITypingsInstaller;
3852            protected byteLength: (buf: string, encoding?: string) => number;
3853            private hrtime;
3854            protected logger: Logger;
3855            protected canUseEvents: boolean;
3856            private suppressDiagnosticEvents?;
3857            private eventHandler;
3858            private readonly noGetErrOnBackgroundUpdate?;
3859            constructor(opts: SessionOptions);
3860            private sendRequestCompletedEvent;
3861            private addPerformanceData;
3862            private performanceEventHandler;
3863            private defaultEventHandler;
3864            private projectsUpdatedInBackgroundEvent;
3865            logError(err: Error, cmd: string): void;
3866            private logErrorWorker;
3867            send(msg: protocol.Message): void;
3868            protected writeMessage(msg: protocol.Message): void;
3869            event<T extends object>(body: T, eventName: string): void;
3870            /** @deprecated */
3871            output(info: any, cmdName: string, reqSeq?: number, errorMsg?: string): void;
3872            private doOutput;
3873            private semanticCheck;
3874            private syntacticCheck;
3875            private suggestionCheck;
3876            private sendDiagnosticsEvent;
3877            /** It is the caller's responsibility to verify that `!this.suppressDiagnosticEvents`. */
3878            private updateErrorCheck;
3879            private cleanProjects;
3880            private cleanup;
3881            private getEncodedSyntacticClassifications;
3882            private getEncodedSemanticClassifications;
3883            private getProject;
3884            private getConfigFileAndProject;
3885            private getConfigFileDiagnostics;
3886            private convertToDiagnosticsWithLinePositionFromDiagnosticFile;
3887            private getCompilerOptionsDiagnostics;
3888            private convertToDiagnosticsWithLinePosition;
3889            private getDiagnosticsWorker;
3890            private getDefinition;
3891            private mapDefinitionInfoLocations;
3892            private getDefinitionAndBoundSpan;
3893            private findSourceDefinition;
3894            private getEmitOutput;
3895            private mapJSDocTagInfo;
3896            private mapDisplayParts;
3897            private mapSignatureHelpItems;
3898            private mapDefinitionInfo;
3899            private static mapToOriginalLocation;
3900            private toFileSpan;
3901            private toFileSpanWithContext;
3902            private getTypeDefinition;
3903            private mapImplementationLocations;
3904            private getImplementation;
3905            private getOccurrences;
3906            private getSyntacticDiagnosticsSync;
3907            private getSemanticDiagnosticsSync;
3908            private getSuggestionDiagnosticsSync;
3909            private getJsxClosingTag;
3910            private getDocumentHighlights;
3911            private provideInlayHints;
3912            private setCompilerOptionsForInferredProjects;
3913            private getProjectInfo;
3914            private getProjectInfoWorker;
3915            private getRenameInfo;
3916            private getProjects;
3917            private getDefaultProject;
3918            private getRenameLocations;
3919            private mapRenameInfo;
3920            private toSpanGroups;
3921            private getReferences;
3922            private getFileReferences;
3923            /**
3924             * @param fileName is the name of the file to be opened
3925             * @param fileContent is a version of the file content that is known to be more up to date than the one on disk
3926             */
3927            private openClientFile;
3928            private getPosition;
3929            private getPositionInFile;
3930            private getFileAndProject;
3931            private getFileAndLanguageServiceForSyntacticOperation;
3932            private getFileAndProjectWorker;
3933            private getOutliningSpans;
3934            private getTodoComments;
3935            private getDocCommentTemplate;
3936            private getSpanOfEnclosingComment;
3937            private getIndentation;
3938            private getBreakpointStatement;
3939            private getNameOrDottedNameSpan;
3940            private isValidBraceCompletion;
3941            private getQuickInfoWorker;
3942            private getFormattingEditsForRange;
3943            private getFormattingEditsForRangeFull;
3944            private getFormattingEditsForDocumentFull;
3945            private getFormattingEditsAfterKeystrokeFull;
3946            private getFormattingEditsAfterKeystroke;
3947            private getCompletions;
3948            private getCompletionEntryDetails;
3949            private getCompileOnSaveAffectedFileList;
3950            private emitFile;
3951            private getSignatureHelpItems;
3952            private toPendingErrorCheck;
3953            private getDiagnostics;
3954            private change;
3955            private reload;
3956            private saveToTmp;
3957            private closeClientFile;
3958            private mapLocationNavigationBarItems;
3959            private getNavigationBarItems;
3960            private toLocationNavigationTree;
3961            private getNavigationTree;
3962            private getNavigateToItems;
3963            private getFullNavigateToItems;
3964            private getSupportedCodeFixes;
3965            private isLocation;
3966            private extractPositionOrRange;
3967            private getRange;
3968            private getApplicableRefactors;
3969            private getEditsForRefactor;
3970            private organizeImports;
3971            private getEditsForFileRename;
3972            private getCodeFixes;
3973            private getCombinedCodeFix;
3974            private applyCodeActionCommand;
3975            private getStartAndEndPosition;
3976            private mapCodeAction;
3977            private mapCodeFixAction;
3978            private mapTextChangesToCodeEdits;
3979            private mapTextChangeToCodeEdit;
3980            private convertTextChangeToCodeEdit;
3981            private getBraceMatching;
3982            private getDiagnosticsForProject;
3983            private configurePlugin;
3984            private getSmartSelectionRange;
3985            private toggleLineComment;
3986            private toggleMultilineComment;
3987            private commentSelection;
3988            private uncommentSelection;
3989            private mapSelectionRange;
3990            private getScriptInfoFromProjectService;
3991            private toProtocolCallHierarchyItem;
3992            private toProtocolCallHierarchyIncomingCall;
3993            private toProtocolCallHierarchyOutgoingCall;
3994            private prepareCallHierarchy;
3995            private provideCallHierarchyIncomingCalls;
3996            private provideCallHierarchyOutgoingCalls;
3997            getCanonicalFileName(fileName: string): string;
3998            exit(): void;
3999            private notRequired;
4000            private requiredResponse;
4001            private handlers;
4002            addProtocolHandler(command: string, handler: (request: protocol.Request) => HandlerResponse): void;
4003            private setCurrentRequest;
4004            private resetCurrentRequest;
4005            executeWithRequestId<T>(requestId: number, f: () => T): T;
4006            executeCommand(request: protocol.Request): HandlerResponse;
4007            onMessage(message: TMessage): void;
4008            protected parseMessage(message: TMessage): protocol.Request;
4009            protected toStringMessage(message: TMessage): string;
4010            private getFormatOptions;
4011            private getPreferences;
4012            private getHostFormatOptions;
4013            private getHostPreferences;
4014        }
4015        interface HandlerResponse {
4016            response?: {};
4017            responseRequired?: boolean;
4018        }
4019    }
4020    const versionMajorMinor = "4.9";
4021    /** The version of the TypeScript compiler release */
4022    const version: string;
4023    /**
4024     * Type of objects whose values are all of the same type.
4025     * The `in` and `for-in` operators can *not* be safely used,
4026     * since `Object.prototype` may be modified by outside code.
4027     */
4028    interface MapLike<T> {
4029        [index: string]: T;
4030    }
4031    interface SortedReadonlyArray<T> extends ReadonlyArray<T> {
4032        " __sortedArrayBrand": any;
4033    }
4034    interface SortedArray<T> extends Array<T> {
4035        " __sortedArrayBrand": any;
4036    }
4037    /** Common read methods for ES6 Map/Set. */
4038    interface ReadonlyCollection<K> {
4039        readonly size: number;
4040        has(key: K): boolean;
4041        keys(): Iterator<K>;
4042    }
4043    /** Common write methods for ES6 Map/Set. */
4044    interface Collection<K> extends ReadonlyCollection<K> {
4045        delete(key: K): boolean;
4046        clear(): void;
4047    }
4048    /** ES6 Map interface, only read methods included. */
4049    interface ReadonlyESMap<K, V> extends ReadonlyCollection<K> {
4050        get(key: K): V | undefined;
4051        values(): Iterator<V>;
4052        entries(): Iterator<[
4053            K,
4054            V
4055        ]>;
4056        forEach(action: (value: V, key: K) => void): void;
4057    }
4058    /**
4059     * ES6 Map interface, only read methods included.
4060     */
4061    interface ReadonlyMap<T> extends ReadonlyESMap<string, T> {
4062    }
4063    /**
4064     * @deprecated Use `ts.ReadonlyESMap<K, V>` instead.
4065     */
4066    interface ReadonlyMap<T> extends ReadonlyESMap<string, T> {
4067    }
4068    /** ES6 Map interface. */
4069    interface ESMap<K, V> extends ReadonlyESMap<K, V>, Collection<K> {
4070        set(key: K, value: V): this;
4071    }
4072    /**
4073     * ES6 Map interface.
4074     */
4075    interface Map<T> extends ESMap<string, T> {
4076    }
4077    /**
4078     * @deprecated Use `ts.ESMap<K, V>` instead.
4079     */
4080    interface Map<T> extends ESMap<string, T> {
4081    }
4082    /** ES6 Set interface, only read methods included. */
4083    interface ReadonlySet<T> extends ReadonlyCollection<T> {
4084        has(value: T): boolean;
4085        values(): Iterator<T>;
4086        entries(): Iterator<[
4087            T,
4088            T
4089        ]>;
4090        forEach(action: (value: T, key: T) => void): void;
4091    }
4092    /** ES6 Set interface. */
4093    interface Set<T> extends ReadonlySet<T>, Collection<T> {
4094        add(value: T): this;
4095        delete(value: T): boolean;
4096    }
4097    /** ES6 Iterator type. */
4098    interface Iterator<T> {
4099        next(): {
4100            value: T;
4101            done?: false;
4102        } | {
4103            value: void;
4104            done: true;
4105        };
4106    }
4107    /** Array that is only intended to be pushed to, never read. */
4108    interface Push<T> {
4109        push(...values: T[]): void;
4110    }
4111    namespace PerformanceDotting {
4112        export enum AnalyzeMode {
4113            DEFAULT = 0,
4114            VERBOSE = 1,
4115            TRACE = 3
4116        }
4117        interface PerformanceData {
4118            startTime: number;
4119            endTime: number;
4120            duration: number;
4121            name: string;
4122            parentEvent: string;
4123            tier: number;
4124            fullPath: string;
4125            id: string;
4126            parentId: string;
4127            fileName: string;
4128        }
4129        export function setPerformanceSwitch(projectConfigPerf: AnalyzeMode): void;
4130        export function startAdvanced(eventName: string, fileName?: string): void;
4131        export function stopAdvanced(eventName: string): void;
4132        export function start(eventName: string, fileName?: string): void;
4133        export function stop(eventName: string): void;
4134        export function getEventData(): Array<PerformanceData>;
4135        export function clearEvent(): void;
4136        export {};
4137    }
4138    type Path = string & {
4139        __pathBrand: any;
4140    };
4141    interface TextRange {
4142        pos: number;
4143        end: number;
4144    }
4145    interface ReadonlyTextRange {
4146        readonly pos: number;
4147        readonly end: number;
4148    }
4149    enum SyntaxKind {
4150        Unknown = 0,
4151        EndOfFileToken = 1,
4152        SingleLineCommentTrivia = 2,
4153        MultiLineCommentTrivia = 3,
4154        NewLineTrivia = 4,
4155        WhitespaceTrivia = 5,
4156        ShebangTrivia = 6,
4157        ConflictMarkerTrivia = 7,
4158        NumericLiteral = 8,
4159        BigIntLiteral = 9,
4160        StringLiteral = 10,
4161        JsxText = 11,
4162        JsxTextAllWhiteSpaces = 12,
4163        RegularExpressionLiteral = 13,
4164        NoSubstitutionTemplateLiteral = 14,
4165        TemplateHead = 15,
4166        TemplateMiddle = 16,
4167        TemplateTail = 17,
4168        OpenBraceToken = 18,
4169        CloseBraceToken = 19,
4170        OpenParenToken = 20,
4171        CloseParenToken = 21,
4172        OpenBracketToken = 22,
4173        CloseBracketToken = 23,
4174        DotToken = 24,
4175        DotDotDotToken = 25,
4176        SemicolonToken = 26,
4177        CommaToken = 27,
4178        QuestionDotToken = 28,
4179        LessThanToken = 29,
4180        LessThanSlashToken = 30,
4181        GreaterThanToken = 31,
4182        LessThanEqualsToken = 32,
4183        GreaterThanEqualsToken = 33,
4184        EqualsEqualsToken = 34,
4185        ExclamationEqualsToken = 35,
4186        EqualsEqualsEqualsToken = 36,
4187        ExclamationEqualsEqualsToken = 37,
4188        EqualsGreaterThanToken = 38,
4189        PlusToken = 39,
4190        MinusToken = 40,
4191        AsteriskToken = 41,
4192        AsteriskAsteriskToken = 42,
4193        SlashToken = 43,
4194        PercentToken = 44,
4195        PlusPlusToken = 45,
4196        MinusMinusToken = 46,
4197        LessThanLessThanToken = 47,
4198        GreaterThanGreaterThanToken = 48,
4199        GreaterThanGreaterThanGreaterThanToken = 49,
4200        AmpersandToken = 50,
4201        BarToken = 51,
4202        CaretToken = 52,
4203        ExclamationToken = 53,
4204        TildeToken = 54,
4205        AmpersandAmpersandToken = 55,
4206        BarBarToken = 56,
4207        QuestionToken = 57,
4208        ColonToken = 58,
4209        AtToken = 59,
4210        QuestionQuestionToken = 60,
4211        /** Only the JSDoc scanner produces BacktickToken. The normal scanner produces NoSubstitutionTemplateLiteral and related kinds. */
4212        BacktickToken = 61,
4213        /** Only the JSDoc scanner produces HashToken. The normal scanner produces PrivateIdentifier. */
4214        HashToken = 62,
4215        EqualsToken = 63,
4216        PlusEqualsToken = 64,
4217        MinusEqualsToken = 65,
4218        AsteriskEqualsToken = 66,
4219        AsteriskAsteriskEqualsToken = 67,
4220        SlashEqualsToken = 68,
4221        PercentEqualsToken = 69,
4222        LessThanLessThanEqualsToken = 70,
4223        GreaterThanGreaterThanEqualsToken = 71,
4224        GreaterThanGreaterThanGreaterThanEqualsToken = 72,
4225        AmpersandEqualsToken = 73,
4226        BarEqualsToken = 74,
4227        BarBarEqualsToken = 75,
4228        AmpersandAmpersandEqualsToken = 76,
4229        QuestionQuestionEqualsToken = 77,
4230        CaretEqualsToken = 78,
4231        Identifier = 79,
4232        PrivateIdentifier = 80,
4233        BreakKeyword = 81,
4234        CaseKeyword = 82,
4235        CatchKeyword = 83,
4236        ClassKeyword = 84,
4237        StructKeyword = 85,
4238        ConstKeyword = 86,
4239        ContinueKeyword = 87,
4240        DebuggerKeyword = 88,
4241        DefaultKeyword = 89,
4242        DeleteKeyword = 90,
4243        DoKeyword = 91,
4244        ElseKeyword = 92,
4245        EnumKeyword = 93,
4246        ExportKeyword = 94,
4247        ExtendsKeyword = 95,
4248        FalseKeyword = 96,
4249        FinallyKeyword = 97,
4250        ForKeyword = 98,
4251        FunctionKeyword = 99,
4252        IfKeyword = 100,
4253        ImportKeyword = 101,
4254        InKeyword = 102,
4255        InstanceOfKeyword = 103,
4256        NewKeyword = 104,
4257        NullKeyword = 105,
4258        ReturnKeyword = 106,
4259        SuperKeyword = 107,
4260        SwitchKeyword = 108,
4261        ThisKeyword = 109,
4262        ThrowKeyword = 110,
4263        TrueKeyword = 111,
4264        TryKeyword = 112,
4265        TypeOfKeyword = 113,
4266        VarKeyword = 114,
4267        VoidKeyword = 115,
4268        WhileKeyword = 116,
4269        WithKeyword = 117,
4270        ImplementsKeyword = 118,
4271        InterfaceKeyword = 119,
4272        LetKeyword = 120,
4273        PackageKeyword = 121,
4274        PrivateKeyword = 122,
4275        ProtectedKeyword = 123,
4276        PublicKeyword = 124,
4277        StaticKeyword = 125,
4278        YieldKeyword = 126,
4279        AbstractKeyword = 127,
4280        AccessorKeyword = 128,
4281        AsKeyword = 129,
4282        AssertsKeyword = 130,
4283        AssertKeyword = 131,
4284        AnyKeyword = 132,
4285        AsyncKeyword = 133,
4286        AwaitKeyword = 134,
4287        BooleanKeyword = 135,
4288        ConstructorKeyword = 136,
4289        DeclareKeyword = 137,
4290        GetKeyword = 138,
4291        InferKeyword = 139,
4292        IntrinsicKeyword = 140,
4293        IsKeyword = 141,
4294        KeyOfKeyword = 142,
4295        ModuleKeyword = 143,
4296        NamespaceKeyword = 144,
4297        NeverKeyword = 145,
4298        OutKeyword = 146,
4299        ReadonlyKeyword = 147,
4300        RequireKeyword = 148,
4301        NumberKeyword = 149,
4302        ObjectKeyword = 150,
4303        SatisfiesKeyword = 151,
4304        SetKeyword = 152,
4305        StringKeyword = 153,
4306        SymbolKeyword = 154,
4307        TypeKeyword = 155,
4308        LazyKeyword = 156,
4309        UndefinedKeyword = 157,
4310        UniqueKeyword = 158,
4311        UnknownKeyword = 159,
4312        FromKeyword = 160,
4313        GlobalKeyword = 161,
4314        BigIntKeyword = 162,
4315        OverrideKeyword = 163,
4316        OfKeyword = 164,
4317        QualifiedName = 165,
4318        ComputedPropertyName = 166,
4319        TypeParameter = 167,
4320        Parameter = 168,
4321        Decorator = 169,
4322        PropertySignature = 170,
4323        PropertyDeclaration = 171,
4324        AnnotationPropertyDeclaration = 172,
4325        MethodSignature = 173,
4326        MethodDeclaration = 174,
4327        ClassStaticBlockDeclaration = 175,
4328        Constructor = 176,
4329        GetAccessor = 177,
4330        SetAccessor = 178,
4331        CallSignature = 179,
4332        ConstructSignature = 180,
4333        IndexSignature = 181,
4334        TypePredicate = 182,
4335        TypeReference = 183,
4336        FunctionType = 184,
4337        ConstructorType = 185,
4338        TypeQuery = 186,
4339        TypeLiteral = 187,
4340        ArrayType = 188,
4341        TupleType = 189,
4342        OptionalType = 190,
4343        RestType = 191,
4344        UnionType = 192,
4345        IntersectionType = 193,
4346        ConditionalType = 194,
4347        InferType = 195,
4348        ParenthesizedType = 196,
4349        ThisType = 197,
4350        TypeOperator = 198,
4351        IndexedAccessType = 199,
4352        MappedType = 200,
4353        LiteralType = 201,
4354        NamedTupleMember = 202,
4355        TemplateLiteralType = 203,
4356        TemplateLiteralTypeSpan = 204,
4357        ImportType = 205,
4358        ObjectBindingPattern = 206,
4359        ArrayBindingPattern = 207,
4360        BindingElement = 208,
4361        ArrayLiteralExpression = 209,
4362        ObjectLiteralExpression = 210,
4363        PropertyAccessExpression = 211,
4364        ElementAccessExpression = 212,
4365        CallExpression = 213,
4366        NewExpression = 214,
4367        TaggedTemplateExpression = 215,
4368        TypeAssertionExpression = 216,
4369        ParenthesizedExpression = 217,
4370        FunctionExpression = 218,
4371        ArrowFunction = 219,
4372        EtsComponentExpression = 220,
4373        DeleteExpression = 221,
4374        TypeOfExpression = 222,
4375        VoidExpression = 223,
4376        AwaitExpression = 224,
4377        PrefixUnaryExpression = 225,
4378        PostfixUnaryExpression = 226,
4379        BinaryExpression = 227,
4380        ConditionalExpression = 228,
4381        TemplateExpression = 229,
4382        YieldExpression = 230,
4383        SpreadElement = 231,
4384        ClassExpression = 232,
4385        OmittedExpression = 233,
4386        ExpressionWithTypeArguments = 234,
4387        AsExpression = 235,
4388        NonNullExpression = 236,
4389        MetaProperty = 237,
4390        SyntheticExpression = 238,
4391        SatisfiesExpression = 239,
4392        TemplateSpan = 240,
4393        SemicolonClassElement = 241,
4394        Block = 242,
4395        EmptyStatement = 243,
4396        VariableStatement = 244,
4397        ExpressionStatement = 245,
4398        IfStatement = 246,
4399        DoStatement = 247,
4400        WhileStatement = 248,
4401        ForStatement = 249,
4402        ForInStatement = 250,
4403        ForOfStatement = 251,
4404        ContinueStatement = 252,
4405        BreakStatement = 253,
4406        ReturnStatement = 254,
4407        WithStatement = 255,
4408        SwitchStatement = 256,
4409        LabeledStatement = 257,
4410        ThrowStatement = 258,
4411        TryStatement = 259,
4412        DebuggerStatement = 260,
4413        VariableDeclaration = 261,
4414        VariableDeclarationList = 262,
4415        FunctionDeclaration = 263,
4416        ClassDeclaration = 264,
4417        StructDeclaration = 265,
4418        AnnotationDeclaration = 266,
4419        InterfaceDeclaration = 267,
4420        TypeAliasDeclaration = 268,
4421        EnumDeclaration = 269,
4422        ModuleDeclaration = 270,
4423        ModuleBlock = 271,
4424        CaseBlock = 272,
4425        NamespaceExportDeclaration = 273,
4426        ImportEqualsDeclaration = 274,
4427        ImportDeclaration = 275,
4428        ImportClause = 276,
4429        NamespaceImport = 277,
4430        NamedImports = 278,
4431        ImportSpecifier = 279,
4432        ExportAssignment = 280,
4433        ExportDeclaration = 281,
4434        NamedExports = 282,
4435        NamespaceExport = 283,
4436        ExportSpecifier = 284,
4437        MissingDeclaration = 285,
4438        ExternalModuleReference = 286,
4439        JsxElement = 287,
4440        JsxSelfClosingElement = 288,
4441        JsxOpeningElement = 289,
4442        JsxClosingElement = 290,
4443        JsxFragment = 291,
4444        JsxOpeningFragment = 292,
4445        JsxClosingFragment = 293,
4446        JsxAttribute = 294,
4447        JsxAttributes = 295,
4448        JsxSpreadAttribute = 296,
4449        JsxExpression = 297,
4450        CaseClause = 298,
4451        DefaultClause = 299,
4452        HeritageClause = 300,
4453        CatchClause = 301,
4454        AssertClause = 302,
4455        AssertEntry = 303,
4456        ImportTypeAssertionContainer = 304,
4457        PropertyAssignment = 305,
4458        ShorthandPropertyAssignment = 306,
4459        SpreadAssignment = 307,
4460        EnumMember = 308,
4461        UnparsedPrologue = 309,
4462        UnparsedPrepend = 310,
4463        UnparsedText = 311,
4464        UnparsedInternalText = 312,
4465        UnparsedSyntheticReference = 313,
4466        SourceFile = 314,
4467        Bundle = 315,
4468        UnparsedSource = 316,
4469        InputFiles = 317,
4470        JSDocTypeExpression = 318,
4471        JSDocNameReference = 319,
4472        JSDocMemberName = 320,
4473        JSDocAllType = 321,
4474        JSDocUnknownType = 322,
4475        JSDocNullableType = 323,
4476        JSDocNonNullableType = 324,
4477        JSDocOptionalType = 325,
4478        JSDocFunctionType = 326,
4479        JSDocVariadicType = 327,
4480        JSDocNamepathType = 328,
4481        JSDoc = 329,
4482        /** @deprecated Use SyntaxKind.JSDoc */
4483        JSDocComment = 329,
4484        JSDocText = 330,
4485        JSDocTypeLiteral = 331,
4486        JSDocSignature = 332,
4487        JSDocLink = 333,
4488        JSDocLinkCode = 334,
4489        JSDocLinkPlain = 335,
4490        JSDocTag = 336,
4491        JSDocAugmentsTag = 337,
4492        JSDocImplementsTag = 338,
4493        JSDocAuthorTag = 339,
4494        JSDocDeprecatedTag = 340,
4495        JSDocClassTag = 341,
4496        JSDocPublicTag = 342,
4497        JSDocPrivateTag = 343,
4498        JSDocProtectedTag = 344,
4499        JSDocReadonlyTag = 345,
4500        JSDocOverrideTag = 346,
4501        JSDocCallbackTag = 347,
4502        JSDocEnumTag = 348,
4503        JSDocParameterTag = 349,
4504        JSDocReturnTag = 350,
4505        JSDocThisTag = 351,
4506        JSDocTypeTag = 352,
4507        JSDocTemplateTag = 353,
4508        JSDocTypedefTag = 354,
4509        JSDocSeeTag = 355,
4510        JSDocPropertyTag = 356,
4511        SyntaxList = 357,
4512        NotEmittedStatement = 358,
4513        PartiallyEmittedExpression = 359,
4514        CommaListExpression = 360,
4515        MergeDeclarationMarker = 361,
4516        EndOfDeclarationMarker = 362,
4517        SyntheticReferenceExpression = 363,
4518        Count = 364,
4519        FirstAssignment = 63,
4520        LastAssignment = 78,
4521        FirstCompoundAssignment = 64,
4522        LastCompoundAssignment = 78,
4523        FirstReservedWord = 81,
4524        LastReservedWord = 117,
4525        FirstKeyword = 81,
4526        LastKeyword = 164,
4527        FirstFutureReservedWord = 118,
4528        LastFutureReservedWord = 126,
4529        FirstTypeNode = 182,
4530        LastTypeNode = 205,
4531        FirstPunctuation = 18,
4532        LastPunctuation = 78,
4533        FirstToken = 0,
4534        LastToken = 164,
4535        FirstTriviaToken = 2,
4536        LastTriviaToken = 7,
4537        FirstLiteralToken = 8,
4538        LastLiteralToken = 14,
4539        FirstTemplateToken = 14,
4540        LastTemplateToken = 17,
4541        FirstBinaryOperator = 29,
4542        LastBinaryOperator = 78,
4543        FirstStatement = 244,
4544        LastStatement = 260,
4545        FirstNode = 165,
4546        FirstJSDocNode = 318,
4547        LastJSDocNode = 356,
4548        FirstJSDocTagNode = 336,
4549        LastJSDocTagNode = 356
4550    }
4551    type TriviaSyntaxKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ShebangTrivia | SyntaxKind.ConflictMarkerTrivia;
4552    type LiteralSyntaxKind = SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral;
4553    type PseudoLiteralSyntaxKind = SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail;
4554    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;
4555    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;
4556    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;
4557    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;
4558    type TokenSyntaxKind = SyntaxKind.Unknown | SyntaxKind.EndOfFileToken | TriviaSyntaxKind | LiteralSyntaxKind | PseudoLiteralSyntaxKind | PunctuationSyntaxKind | SyntaxKind.Identifier | KeywordSyntaxKind;
4559    type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFileToken | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken;
4560    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;
4561    enum NodeFlags {
4562        None = 0,
4563        Let = 1,
4564        Const = 2,
4565        NestedNamespace = 4,
4566        Synthesized = 8,
4567        Namespace = 16,
4568        OptionalChain = 32,
4569        ExportContext = 64,
4570        ContainsThis = 128,
4571        HasImplicitReturn = 256,
4572        HasExplicitReturn = 512,
4573        GlobalAugmentation = 1024,
4574        HasAsyncFunctions = 2048,
4575        DisallowInContext = 4096,
4576        YieldContext = 8192,
4577        DecoratorContext = 16384,
4578        AwaitContext = 32768,
4579        DisallowConditionalTypesContext = 65536,
4580        ThisNodeHasError = 131072,
4581        JavaScriptFile = 262144,
4582        ThisNodeOrAnySubNodesHasError = 524288,
4583        HasAggregatedChildData = 1048576,
4584        JSDoc = 8388608,
4585        JsonFile = 67108864,
4586        EtsContext = 1073741824,
4587        BlockScoped = 3,
4588        ReachabilityCheckFlags = 768,
4589        ReachabilityAndEmitFlags = 2816,
4590        ContextFlags = 1124462592,
4591        TypeExcludesFlags = 40960
4592    }
4593    enum EtsFlags {
4594        None = 0,
4595        StructContext = 2,
4596        EtsExtendComponentsContext = 4,
4597        EtsStylesComponentsContext = 8,
4598        EtsBuildContext = 16,
4599        EtsBuilderContext = 32,
4600        EtsStateStylesContext = 64,
4601        EtsComponentsContext = 128,
4602        EtsNewExpressionContext = 256,
4603        UICallbackContext = 512,
4604        SyntaxComponentContext = 1024,
4605        SyntaxDataSourceContext = 2048,
4606        NoEtsComponentContext = 4096
4607    }
4608    enum ModifierFlags {
4609        None = 0,
4610        Export = 1,
4611        Ambient = 2,
4612        Public = 4,
4613        Private = 8,
4614        Protected = 16,
4615        Static = 32,
4616        Readonly = 64,
4617        Accessor = 128,
4618        Abstract = 256,
4619        Async = 512,
4620        Default = 1024,
4621        Const = 2048,
4622        HasComputedJSDocModifiers = 4096,
4623        Deprecated = 8192,
4624        Override = 16384,
4625        In = 32768,
4626        Out = 65536,
4627        Decorator = 131072,
4628        HasComputedFlags = 536870912,
4629        AccessibilityModifier = 28,
4630        ParameterPropertyModifier = 16476,
4631        NonPublicAccessibilityModifier = 24,
4632        TypeScriptModifier = 117086,
4633        ExportDefault = 1025,
4634        All = 258047,
4635        Modifier = 126975
4636    }
4637    enum JsxFlags {
4638        None = 0,
4639        /** An element from a named property of the JSX.IntrinsicElements interface */
4640        IntrinsicNamedElement = 1,
4641        /** An element inferred from the string index signature of the JSX.IntrinsicElements interface */
4642        IntrinsicIndexedElement = 2,
4643        IntrinsicElement = 3
4644    }
4645    interface Node extends ReadonlyTextRange {
4646        readonly kind: SyntaxKind;
4647        readonly flags: NodeFlags;
4648        readonly parent: Node;
4649        symbol: Symbol;
4650        locals?: SymbolTable;
4651        skipCheck?: boolean;
4652    }
4653    interface Node {
4654        getSourceFile(): SourceFile;
4655        getChildCount(sourceFile?: SourceFile): number;
4656        getChildAt(index: number, sourceFile?: SourceFile): Node;
4657        getChildren(sourceFile?: SourceFile): Node[];
4658        getStart(sourceFile?: SourceFile, includeJsDocComment?: boolean): number;
4659        getFullStart(): number;
4660        getEnd(): number;
4661        getWidth(sourceFile?: SourceFileLike): number;
4662        getFullWidth(): number;
4663        getLeadingTriviaWidth(sourceFile?: SourceFile): number;
4664        getFullText(sourceFile?: SourceFile): string;
4665        getText(sourceFile?: SourceFile): string;
4666        getFirstToken(sourceFile?: SourceFile): Node | undefined;
4667        getLastToken(sourceFile?: SourceFile): Node | undefined;
4668        forEachChild<T>(cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray<Node>) => T | undefined): T | undefined;
4669    }
4670    interface Node {
4671        /**
4672         * @deprecated `decorators` has been removed from `Node` and merged with `modifiers` on the `Node` subtypes that support them.
4673         * Use `ts.canHaveDecorators()` to test whether a `Node` can have decorators.
4674         * Use `ts.getDecorators()` to get the decorators of a `Node`.
4675         *
4676         * For example:
4677         * ```ts
4678         * const decorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined;
4679         * ```
4680         */
4681        readonly decorators?: undefined;
4682        /**
4683         * @deprecated `modifiers` has been removed from `Node` and moved to the `Node` subtypes that support them.
4684         * Use `ts.canHaveModifiers()` to test whether a `Node` can have modifiers.
4685         * Use `ts.getModifiers()` to get the modifiers of a `Node`.
4686         *
4687         * For example:
4688         * ```ts
4689         * const modifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;
4690         * ```
4691         */
4692        readonly modifiers?: NodeArray<ModifierLike> | undefined;
4693    }
4694    interface JSDocContainer {
4695    }
4696    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 | AnnotationPropertyDeclaration | AnnotationDeclaration | AccessorDeclaration | ClassLikeDeclaration | InterfaceDeclaration | TypeAliasDeclaration | EnumMember | EnumDeclaration | ModuleDeclaration | ImportEqualsDeclaration | ImportDeclaration | NamespaceExportDeclaration | ExportAssignment | IndexSignatureDeclaration | FunctionTypeNode | ConstructorTypeNode | JSDocFunctionType | ExportDeclaration | NamedTupleMember | ExportSpecifier | CaseClause | EndOfFileToken;
4697    type HasType = SignatureDeclaration | VariableDeclaration | ParameterDeclaration | PropertySignature | PropertyDeclaration | AnnotationPropertyDeclaration | TypePredicateNode | ParenthesizedTypeNode | TypeOperatorNode | MappedTypeNode | AssertionExpression | TypeAliasDeclaration | JSDocTypeExpression | JSDocNonNullableType | JSDocNullableType | JSDocOptionalType | JSDocVariadicType;
4698    type HasTypeArguments = CallExpression | NewExpression | TaggedTemplateExpression | JsxOpeningElement | JsxSelfClosingElement;
4699    type HasInitializer = HasExpressionInitializer | ForStatement | ForInStatement | ForOfStatement | JsxAttribute;
4700    type HasExpressionInitializer = VariableDeclaration | ParameterDeclaration | BindingElement | PropertyDeclaration | AnnotationPropertyDeclaration | PropertyAssignment | EnumMember;
4701    type HasDecorators = ParameterDeclaration | PropertyDeclaration | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | ClassExpression | ClassDeclaration | StructDeclaration | FunctionDeclaration;
4702    type HasIllegalDecorators = PropertyAssignment | ShorthandPropertyAssignment | FunctionDeclaration | ConstructorDeclaration | IndexSignatureDeclaration | ClassStaticBlockDeclaration | MissingDeclaration | VariableStatement | InterfaceDeclaration | TypeAliasDeclaration | EnumDeclaration | ModuleDeclaration | ImportEqualsDeclaration | ImportDeclaration | NamespaceExportDeclaration | ExportDeclaration | ExportAssignment;
4703    type HasModifiers = TypeParameterDeclaration | ParameterDeclaration | ConstructorTypeNode | PropertySignature | PropertyDeclaration | MethodSignature | MethodDeclaration | ConstructorDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | IndexSignatureDeclaration | FunctionExpression | ArrowFunction | ClassExpression | VariableStatement | FunctionDeclaration | ClassDeclaration | StructDeclaration | AnnotationDeclaration | InterfaceDeclaration | TypeAliasDeclaration | EnumDeclaration | ModuleDeclaration | ImportEqualsDeclaration | ImportDeclaration | ExportAssignment | ExportDeclaration;
4704    interface NodeArray<T extends Node> extends ReadonlyArray<T>, ReadonlyTextRange {
4705        readonly hasTrailingComma: boolean;
4706    }
4707    interface Token<TKind extends SyntaxKind> extends Node {
4708        readonly kind: TKind;
4709    }
4710    type EndOfFileToken = Token<SyntaxKind.EndOfFileToken> & JSDocContainer;
4711    interface PunctuationToken<TKind extends PunctuationSyntaxKind> extends Token<TKind> {
4712    }
4713    type DotToken = PunctuationToken<SyntaxKind.DotToken>;
4714    type DotDotDotToken = PunctuationToken<SyntaxKind.DotDotDotToken>;
4715    type QuestionToken = PunctuationToken<SyntaxKind.QuestionToken>;
4716    type ExclamationToken = PunctuationToken<SyntaxKind.ExclamationToken>;
4717    type ColonToken = PunctuationToken<SyntaxKind.ColonToken>;
4718    type EqualsToken = PunctuationToken<SyntaxKind.EqualsToken>;
4719    type AsteriskToken = PunctuationToken<SyntaxKind.AsteriskToken>;
4720    type EqualsGreaterThanToken = PunctuationToken<SyntaxKind.EqualsGreaterThanToken>;
4721    type PlusToken = PunctuationToken<SyntaxKind.PlusToken>;
4722    type MinusToken = PunctuationToken<SyntaxKind.MinusToken>;
4723    type QuestionDotToken = PunctuationToken<SyntaxKind.QuestionDotToken>;
4724    interface KeywordToken<TKind extends KeywordSyntaxKind> extends Token<TKind> {
4725    }
4726    type AssertsKeyword = KeywordToken<SyntaxKind.AssertsKeyword>;
4727    type AssertKeyword = KeywordToken<SyntaxKind.AssertKeyword>;
4728    type AwaitKeyword = KeywordToken<SyntaxKind.AwaitKeyword>;
4729    /** @deprecated Use `AwaitKeyword` instead. */
4730    type AwaitKeywordToken = AwaitKeyword;
4731    /** @deprecated Use `AssertsKeyword` instead. */
4732    type AssertsToken = AssertsKeyword;
4733    interface ModifierToken<TKind extends ModifierSyntaxKind> extends KeywordToken<TKind> {
4734    }
4735    type AbstractKeyword = ModifierToken<SyntaxKind.AbstractKeyword>;
4736    type AccessorKeyword = ModifierToken<SyntaxKind.AccessorKeyword>;
4737    type AsyncKeyword = ModifierToken<SyntaxKind.AsyncKeyword>;
4738    type ConstKeyword = ModifierToken<SyntaxKind.ConstKeyword>;
4739    type DeclareKeyword = ModifierToken<SyntaxKind.DeclareKeyword>;
4740    type DefaultKeyword = ModifierToken<SyntaxKind.DefaultKeyword>;
4741    type ExportKeyword = ModifierToken<SyntaxKind.ExportKeyword>;
4742    type InKeyword = ModifierToken<SyntaxKind.InKeyword>;
4743    type PrivateKeyword = ModifierToken<SyntaxKind.PrivateKeyword>;
4744    type ProtectedKeyword = ModifierToken<SyntaxKind.ProtectedKeyword>;
4745    type PublicKeyword = ModifierToken<SyntaxKind.PublicKeyword>;
4746    type ReadonlyKeyword = ModifierToken<SyntaxKind.ReadonlyKeyword>;
4747    type OutKeyword = ModifierToken<SyntaxKind.OutKeyword>;
4748    type OverrideKeyword = ModifierToken<SyntaxKind.OverrideKeyword>;
4749    type StaticKeyword = ModifierToken<SyntaxKind.StaticKeyword>;
4750    /** @deprecated Use `ReadonlyKeyword` instead. */
4751    type ReadonlyToken = ReadonlyKeyword;
4752    type Modifier = AbstractKeyword | AccessorKeyword | AsyncKeyword | ConstKeyword | DeclareKeyword | DefaultKeyword | ExportKeyword | InKeyword | PrivateKeyword | ProtectedKeyword | PublicKeyword | OutKeyword | OverrideKeyword | ReadonlyKeyword | StaticKeyword;
4753    type ModifierLike = Modifier | Decorator;
4754    type AccessibilityModifier = PublicKeyword | PrivateKeyword | ProtectedKeyword;
4755    type ParameterPropertyModifier = AccessibilityModifier | ReadonlyKeyword;
4756    type ClassMemberModifier = AccessibilityModifier | ReadonlyKeyword | StaticKeyword | AccessorKeyword;
4757    type ModifiersArray = NodeArray<Modifier>;
4758    enum GeneratedIdentifierFlags {
4759        None = 0,
4760        ReservedInNestedScopes = 8,
4761        Optimistic = 16,
4762        FileLevel = 32,
4763        AllowNameSubstitution = 64
4764    }
4765    interface Identifier extends PrimaryExpression, Declaration {
4766        readonly kind: SyntaxKind.Identifier;
4767        /**
4768         * Prefer to use `id.unescapedText`. (Note: This is available only in services, not internally to the TypeScript compiler.)
4769         * Text of identifier, but if the identifier begins with two underscores, this will begin with three.
4770         */
4771        readonly escapedText: __String;
4772        readonly originalKeywordKind?: SyntaxKind;
4773        isInJSDocNamespace?: boolean;
4774    }
4775    interface Identifier {
4776        readonly text: string;
4777    }
4778    interface TransientIdentifier extends Identifier {
4779        resolvedSymbol: Symbol;
4780    }
4781    interface QualifiedName extends Node {
4782        readonly kind: SyntaxKind.QualifiedName;
4783        readonly left: EntityName;
4784        readonly right: Identifier;
4785    }
4786    type EntityName = Identifier | QualifiedName;
4787    type PropertyName = Identifier | StringLiteral | NumericLiteral | ComputedPropertyName | PrivateIdentifier;
4788    type MemberName = Identifier | PrivateIdentifier;
4789    type DeclarationName = Identifier | PrivateIdentifier | StringLiteralLike | NumericLiteral | ComputedPropertyName | ElementAccessExpression | BindingPattern | EntityNameExpression;
4790    interface Declaration extends Node {
4791        _declarationBrand: any;
4792    }
4793    interface NamedDeclaration extends Declaration {
4794        readonly name?: DeclarationName;
4795    }
4796    interface DeclarationStatement extends NamedDeclaration, Statement {
4797        readonly name?: Identifier | StringLiteral | NumericLiteral;
4798    }
4799    interface ComputedPropertyName extends Node {
4800        readonly kind: SyntaxKind.ComputedPropertyName;
4801        readonly parent: Declaration;
4802        readonly expression: Expression;
4803    }
4804    interface PrivateIdentifier extends PrimaryExpression {
4805        readonly kind: SyntaxKind.PrivateIdentifier;
4806        readonly escapedText: __String;
4807    }
4808    interface PrivateIdentifier {
4809        readonly text: string;
4810    }
4811    interface Decorator extends Node {
4812        readonly kind: SyntaxKind.Decorator;
4813        readonly parent: NamedDeclaration;
4814        readonly expression: LeftHandSideExpression;
4815        /** Refers to a annotation declaration (or undefined when decorator isn't annotation) */
4816        readonly annotationDeclaration?: AnnotationDeclaration;
4817    }
4818    type Annotation = Decorator;
4819    interface TypeParameterDeclaration extends NamedDeclaration {
4820        readonly kind: SyntaxKind.TypeParameter;
4821        readonly parent: DeclarationWithTypeParameterChildren | InferTypeNode;
4822        readonly modifiers?: NodeArray<Modifier>;
4823        readonly name: Identifier;
4824        /** Note: Consider calling `getEffectiveConstraintOfTypeParameter` */
4825        readonly constraint?: TypeNode;
4826        readonly default?: TypeNode;
4827        expression?: Expression;
4828    }
4829    interface SignatureDeclarationBase extends NamedDeclaration, JSDocContainer {
4830        readonly kind: SignatureDeclaration["kind"];
4831        readonly name?: PropertyName;
4832        readonly typeParameters?: NodeArray<TypeParameterDeclaration> | undefined;
4833        readonly parameters: NodeArray<ParameterDeclaration>;
4834        readonly type?: TypeNode | undefined;
4835    }
4836    type SignatureDeclaration = CallSignatureDeclaration | ConstructSignatureDeclaration | MethodSignature | IndexSignatureDeclaration | FunctionTypeNode | ConstructorTypeNode | JSDocFunctionType | FunctionDeclaration | MethodDeclaration | ConstructorDeclaration | AccessorDeclaration | FunctionExpression | ArrowFunction;
4837    interface CallSignatureDeclaration extends SignatureDeclarationBase, TypeElement {
4838        readonly kind: SyntaxKind.CallSignature;
4839    }
4840    interface ConstructSignatureDeclaration extends SignatureDeclarationBase, TypeElement {
4841        readonly kind: SyntaxKind.ConstructSignature;
4842    }
4843    type BindingName = Identifier | BindingPattern;
4844    interface VariableDeclaration extends NamedDeclaration, JSDocContainer {
4845        readonly kind: SyntaxKind.VariableDeclaration;
4846        readonly parent: VariableDeclarationList | CatchClause;
4847        readonly name: BindingName;
4848        readonly exclamationToken?: ExclamationToken;
4849        readonly type?: TypeNode;
4850        readonly initializer?: Expression;
4851    }
4852    interface VariableDeclarationList extends Node {
4853        readonly kind: SyntaxKind.VariableDeclarationList;
4854        readonly parent: VariableStatement | ForStatement | ForOfStatement | ForInStatement;
4855        readonly declarations: NodeArray<VariableDeclaration>;
4856    }
4857    interface ParameterDeclaration extends NamedDeclaration, JSDocContainer {
4858        readonly kind: SyntaxKind.Parameter;
4859        readonly parent: SignatureDeclaration;
4860        readonly modifiers?: NodeArray<ModifierLike>;
4861        readonly dotDotDotToken?: DotDotDotToken;
4862        readonly name: BindingName;
4863        readonly questionToken?: QuestionToken;
4864        readonly type?: TypeNode;
4865        readonly initializer?: Expression;
4866    }
4867    interface BindingElement extends NamedDeclaration {
4868        readonly kind: SyntaxKind.BindingElement;
4869        readonly parent: BindingPattern;
4870        readonly propertyName?: PropertyName;
4871        readonly dotDotDotToken?: DotDotDotToken;
4872        readonly name: BindingName;
4873        readonly initializer?: Expression;
4874    }
4875    interface PropertySignature extends TypeElement, JSDocContainer {
4876        readonly kind: SyntaxKind.PropertySignature;
4877        readonly modifiers?: NodeArray<Modifier>;
4878        readonly name: PropertyName;
4879        readonly questionToken?: QuestionToken;
4880        readonly type?: TypeNode;
4881    }
4882    interface PropertySignature {
4883        /** @deprecated A property signature cannot have an initializer */
4884        readonly initializer?: Expression | undefined;
4885    }
4886    interface PropertyDeclaration extends ClassElement, JSDocContainer {
4887        readonly kind: SyntaxKind.PropertyDeclaration;
4888        readonly parent: ClassLikeDeclaration;
4889        readonly modifiers?: NodeArray<ModifierLike>;
4890        readonly name: PropertyName;
4891        readonly questionToken?: QuestionToken;
4892        readonly exclamationToken?: ExclamationToken;
4893        readonly type?: TypeNode;
4894        readonly initializer?: Expression;
4895    }
4896    interface AnnotationPropertyDeclaration extends AnnotationElement, JSDocContainer {
4897        readonly kind: SyntaxKind.AnnotationPropertyDeclaration;
4898        readonly parent: AnnotationDeclaration;
4899        readonly name: PropertyName;
4900        readonly type?: TypeNode;
4901        readonly initializer?: Expression;
4902    }
4903    interface AutoAccessorPropertyDeclaration extends PropertyDeclaration {
4904        _autoAccessorBrand: any;
4905    }
4906    interface ObjectLiteralElement extends NamedDeclaration {
4907        _objectLiteralBrand: any;
4908        readonly name?: PropertyName;
4909    }
4910    /** Unlike ObjectLiteralElement, excludes JSXAttribute and JSXSpreadAttribute. */
4911    type ObjectLiteralElementLike = PropertyAssignment | ShorthandPropertyAssignment | SpreadAssignment | MethodDeclaration | AccessorDeclaration;
4912    interface PropertyAssignment extends ObjectLiteralElement, JSDocContainer {
4913        readonly kind: SyntaxKind.PropertyAssignment;
4914        readonly parent: ObjectLiteralExpression;
4915        readonly name: PropertyName;
4916        readonly initializer: Expression;
4917    }
4918    interface PropertyAssignment {
4919        /** @deprecated A property assignment cannot have a question token */
4920        readonly questionToken?: QuestionToken | undefined;
4921        /** @deprecated A property assignment cannot have an exclamation token */
4922        readonly exclamationToken?: ExclamationToken | undefined;
4923    }
4924    interface ShorthandPropertyAssignment extends ObjectLiteralElement, JSDocContainer {
4925        readonly kind: SyntaxKind.ShorthandPropertyAssignment;
4926        readonly parent: ObjectLiteralExpression;
4927        readonly name: Identifier;
4928        readonly equalsToken?: EqualsToken;
4929        readonly objectAssignmentInitializer?: Expression;
4930    }
4931    interface ShorthandPropertyAssignment {
4932        /** @deprecated A shorthand property assignment cannot have modifiers */
4933        readonly modifiers?: NodeArray<Modifier> | undefined;
4934        /** @deprecated A shorthand property assignment cannot have a question token */
4935        readonly questionToken?: QuestionToken | undefined;
4936        /** @deprecated A shorthand property assignment cannot have an exclamation token */
4937        readonly exclamationToken?: ExclamationToken | undefined;
4938    }
4939    interface SpreadAssignment extends ObjectLiteralElement, JSDocContainer {
4940        readonly kind: SyntaxKind.SpreadAssignment;
4941        readonly parent: ObjectLiteralExpression;
4942        readonly expression: Expression;
4943    }
4944    type VariableLikeDeclaration = VariableDeclaration | ParameterDeclaration | BindingElement | PropertyDeclaration | AnnotationPropertyDeclaration | PropertyAssignment | PropertySignature | JsxAttribute | ShorthandPropertyAssignment | EnumMember | JSDocPropertyTag | JSDocParameterTag;
4945    interface PropertyLikeDeclaration extends NamedDeclaration {
4946        readonly name: PropertyName;
4947    }
4948    interface ObjectBindingPattern extends Node {
4949        readonly kind: SyntaxKind.ObjectBindingPattern;
4950        readonly parent: VariableDeclaration | ParameterDeclaration | BindingElement;
4951        readonly elements: NodeArray<BindingElement>;
4952    }
4953    interface ArrayBindingPattern extends Node {
4954        readonly kind: SyntaxKind.ArrayBindingPattern;
4955        readonly parent: VariableDeclaration | ParameterDeclaration | BindingElement;
4956        readonly elements: NodeArray<ArrayBindingElement>;
4957    }
4958    type BindingPattern = ObjectBindingPattern | ArrayBindingPattern;
4959    type ArrayBindingElement = BindingElement | OmittedExpression;
4960    /**
4961     * Several node kinds share function-like features such as a signature,
4962     * a name, and a body. These nodes should extend FunctionLikeDeclarationBase.
4963     * Examples:
4964     * - FunctionDeclaration
4965     * - MethodDeclaration
4966     * - AccessorDeclaration
4967     */
4968    interface FunctionLikeDeclarationBase extends SignatureDeclarationBase {
4969        _functionLikeDeclarationBrand: any;
4970        readonly asteriskToken?: AsteriskToken | undefined;
4971        readonly questionToken?: QuestionToken | undefined;
4972        readonly exclamationToken?: ExclamationToken | undefined;
4973        readonly body?: Block | Expression | undefined;
4974    }
4975    type FunctionLikeDeclaration = FunctionDeclaration | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | ConstructorDeclaration | FunctionExpression | ArrowFunction;
4976    /** @deprecated Use SignatureDeclaration */
4977    type FunctionLike = SignatureDeclaration;
4978    interface FunctionDeclaration extends FunctionLikeDeclarationBase, DeclarationStatement {
4979        readonly kind: SyntaxKind.FunctionDeclaration;
4980        readonly modifiers?: NodeArray<Modifier>;
4981        readonly name?: Identifier;
4982        readonly body?: FunctionBody;
4983    }
4984    interface MethodSignature extends SignatureDeclarationBase, TypeElement {
4985        readonly kind: SyntaxKind.MethodSignature;
4986        readonly parent: ObjectTypeDeclaration;
4987        readonly modifiers?: NodeArray<Modifier>;
4988        readonly name: PropertyName;
4989    }
4990    interface MethodDeclaration extends FunctionLikeDeclarationBase, ClassElement, ObjectLiteralElement, JSDocContainer {
4991        readonly kind: SyntaxKind.MethodDeclaration;
4992        readonly parent: ClassLikeDeclaration | ObjectLiteralExpression;
4993        readonly modifiers?: NodeArray<ModifierLike> | undefined;
4994        readonly name: PropertyName;
4995        readonly body?: FunctionBody | undefined;
4996    }
4997    interface ConstructorDeclaration extends FunctionLikeDeclarationBase, ClassElement, JSDocContainer {
4998        readonly kind: SyntaxKind.Constructor;
4999        readonly parent: ClassLikeDeclaration;
5000        readonly modifiers?: NodeArray<Modifier> | undefined;
5001        readonly body?: FunctionBody | undefined;
5002    }
5003    /** For when we encounter a semicolon in a class declaration. ES6 allows these as class elements. */
5004    interface SemicolonClassElement extends ClassElement {
5005        readonly kind: SyntaxKind.SemicolonClassElement;
5006        readonly parent: ClassLikeDeclaration;
5007    }
5008    interface GetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
5009        readonly kind: SyntaxKind.GetAccessor;
5010        readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
5011        readonly modifiers?: NodeArray<ModifierLike>;
5012        readonly name: PropertyName;
5013        readonly body?: FunctionBody;
5014    }
5015    interface SetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
5016        readonly kind: SyntaxKind.SetAccessor;
5017        readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
5018        readonly modifiers?: NodeArray<ModifierLike>;
5019        readonly name: PropertyName;
5020        readonly body?: FunctionBody;
5021    }
5022    type AccessorDeclaration = GetAccessorDeclaration | SetAccessorDeclaration;
5023    interface IndexSignatureDeclaration extends SignatureDeclarationBase, ClassElement, TypeElement {
5024        readonly kind: SyntaxKind.IndexSignature;
5025        readonly parent: ObjectTypeDeclaration;
5026        readonly modifiers?: NodeArray<Modifier>;
5027        readonly type: TypeNode;
5028    }
5029    interface ClassStaticBlockDeclaration extends ClassElement, JSDocContainer {
5030        readonly kind: SyntaxKind.ClassStaticBlockDeclaration;
5031        readonly parent: ClassDeclaration | ClassExpression;
5032        readonly body: Block;
5033    }
5034    interface TypeNode extends Node {
5035        _typeNodeBrand: any;
5036    }
5037    interface KeywordTypeNode<TKind extends KeywordTypeSyntaxKind = KeywordTypeSyntaxKind> extends KeywordToken<TKind>, TypeNode {
5038        readonly kind: TKind;
5039    }
5040    interface ImportTypeAssertionContainer extends Node {
5041        readonly kind: SyntaxKind.ImportTypeAssertionContainer;
5042        readonly parent: ImportTypeNode;
5043        readonly assertClause: AssertClause;
5044        readonly multiLine?: boolean;
5045    }
5046    interface ImportTypeNode extends NodeWithTypeArguments {
5047        readonly kind: SyntaxKind.ImportType;
5048        readonly isTypeOf: boolean;
5049        readonly argument: TypeNode;
5050        readonly assertions?: ImportTypeAssertionContainer;
5051        readonly qualifier?: EntityName;
5052    }
5053    interface ThisTypeNode extends TypeNode {
5054        readonly kind: SyntaxKind.ThisType;
5055    }
5056    type FunctionOrConstructorTypeNode = FunctionTypeNode | ConstructorTypeNode;
5057    interface FunctionOrConstructorTypeNodeBase extends TypeNode, SignatureDeclarationBase {
5058        readonly kind: SyntaxKind.FunctionType | SyntaxKind.ConstructorType;
5059        readonly type: TypeNode;
5060    }
5061    interface FunctionTypeNode extends FunctionOrConstructorTypeNodeBase {
5062        readonly kind: SyntaxKind.FunctionType;
5063    }
5064    interface FunctionTypeNode {
5065        /** @deprecated A function type cannot have modifiers */
5066        readonly modifiers?: NodeArray<Modifier> | undefined;
5067    }
5068    interface ConstructorTypeNode extends FunctionOrConstructorTypeNodeBase {
5069        readonly kind: SyntaxKind.ConstructorType;
5070        readonly modifiers?: NodeArray<Modifier>;
5071    }
5072    interface NodeWithTypeArguments extends TypeNode {
5073        readonly typeArguments?: NodeArray<TypeNode>;
5074    }
5075    type TypeReferenceType = TypeReferenceNode | ExpressionWithTypeArguments;
5076    interface TypeReferenceNode extends NodeWithTypeArguments {
5077        readonly kind: SyntaxKind.TypeReference;
5078        readonly typeName: EntityName;
5079    }
5080    interface TypePredicateNode extends TypeNode {
5081        readonly kind: SyntaxKind.TypePredicate;
5082        readonly parent: SignatureDeclaration | JSDocTypeExpression;
5083        readonly assertsModifier?: AssertsKeyword;
5084        readonly parameterName: Identifier | ThisTypeNode;
5085        readonly type?: TypeNode;
5086    }
5087    interface TypeQueryNode extends NodeWithTypeArguments {
5088        readonly kind: SyntaxKind.TypeQuery;
5089        readonly exprName: EntityName;
5090    }
5091    interface TypeLiteralNode extends TypeNode, Declaration {
5092        readonly kind: SyntaxKind.TypeLiteral;
5093        readonly members: NodeArray<TypeElement>;
5094    }
5095    interface ArrayTypeNode extends TypeNode {
5096        readonly kind: SyntaxKind.ArrayType;
5097        readonly elementType: TypeNode;
5098    }
5099    interface TupleTypeNode extends TypeNode {
5100        readonly kind: SyntaxKind.TupleType;
5101        readonly elements: NodeArray<TypeNode | NamedTupleMember>;
5102    }
5103    interface NamedTupleMember extends TypeNode, JSDocContainer, Declaration {
5104        readonly kind: SyntaxKind.NamedTupleMember;
5105        readonly dotDotDotToken?: Token<SyntaxKind.DotDotDotToken>;
5106        readonly name: Identifier;
5107        readonly questionToken?: Token<SyntaxKind.QuestionToken>;
5108        readonly type: TypeNode;
5109    }
5110    interface OptionalTypeNode extends TypeNode {
5111        readonly kind: SyntaxKind.OptionalType;
5112        readonly type: TypeNode;
5113    }
5114    interface RestTypeNode extends TypeNode {
5115        readonly kind: SyntaxKind.RestType;
5116        readonly type: TypeNode;
5117    }
5118    type UnionOrIntersectionTypeNode = UnionTypeNode | IntersectionTypeNode;
5119    interface UnionTypeNode extends TypeNode {
5120        readonly kind: SyntaxKind.UnionType;
5121        readonly types: NodeArray<TypeNode>;
5122    }
5123    interface IntersectionTypeNode extends TypeNode {
5124        readonly kind: SyntaxKind.IntersectionType;
5125        readonly types: NodeArray<TypeNode>;
5126    }
5127    interface ConditionalTypeNode extends TypeNode {
5128        readonly kind: SyntaxKind.ConditionalType;
5129        readonly checkType: TypeNode;
5130        readonly extendsType: TypeNode;
5131        readonly trueType: TypeNode;
5132        readonly falseType: TypeNode;
5133    }
5134    interface InferTypeNode extends TypeNode {
5135        readonly kind: SyntaxKind.InferType;
5136        readonly typeParameter: TypeParameterDeclaration;
5137    }
5138    interface ParenthesizedTypeNode extends TypeNode {
5139        readonly kind: SyntaxKind.ParenthesizedType;
5140        readonly type: TypeNode;
5141    }
5142    interface TypeOperatorNode extends TypeNode {
5143        readonly kind: SyntaxKind.TypeOperator;
5144        readonly operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword;
5145        readonly type: TypeNode;
5146    }
5147    interface IndexedAccessTypeNode extends TypeNode {
5148        readonly kind: SyntaxKind.IndexedAccessType;
5149        readonly objectType: TypeNode;
5150        readonly indexType: TypeNode;
5151    }
5152    interface MappedTypeNode extends TypeNode, Declaration {
5153        readonly kind: SyntaxKind.MappedType;
5154        readonly readonlyToken?: ReadonlyKeyword | PlusToken | MinusToken;
5155        readonly typeParameter: TypeParameterDeclaration;
5156        readonly nameType?: TypeNode;
5157        readonly questionToken?: QuestionToken | PlusToken | MinusToken;
5158        readonly type?: TypeNode;
5159        /** Used only to produce grammar errors */
5160        readonly members?: NodeArray<TypeElement>;
5161    }
5162    interface LiteralTypeNode extends TypeNode {
5163        readonly kind: SyntaxKind.LiteralType;
5164        readonly literal: NullLiteral | BooleanLiteral | LiteralExpression | PrefixUnaryExpression;
5165    }
5166    interface StringLiteral extends LiteralExpression, Declaration {
5167        readonly kind: SyntaxKind.StringLiteral;
5168    }
5169    type StringLiteralLike = StringLiteral | NoSubstitutionTemplateLiteral;
5170    type PropertyNameLiteral = Identifier | StringLiteralLike | NumericLiteral;
5171    interface TemplateLiteralTypeNode extends TypeNode {
5172        kind: SyntaxKind.TemplateLiteralType;
5173        readonly head: TemplateHead;
5174        readonly templateSpans: NodeArray<TemplateLiteralTypeSpan>;
5175    }
5176    interface TemplateLiteralTypeSpan extends TypeNode {
5177        readonly kind: SyntaxKind.TemplateLiteralTypeSpan;
5178        readonly parent: TemplateLiteralTypeNode;
5179        readonly type: TypeNode;
5180        readonly literal: TemplateMiddle | TemplateTail;
5181    }
5182    interface Expression extends Node {
5183        _expressionBrand: any;
5184    }
5185    interface OmittedExpression extends Expression {
5186        readonly kind: SyntaxKind.OmittedExpression;
5187    }
5188    interface PartiallyEmittedExpression extends LeftHandSideExpression {
5189        readonly kind: SyntaxKind.PartiallyEmittedExpression;
5190        readonly expression: Expression;
5191    }
5192    interface UnaryExpression extends Expression {
5193        _unaryExpressionBrand: any;
5194    }
5195    /** Deprecated, please use UpdateExpression */
5196    type IncrementExpression = UpdateExpression;
5197    interface UpdateExpression extends UnaryExpression {
5198        _updateExpressionBrand: any;
5199    }
5200    type PrefixUnaryOperator = SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.TildeToken | SyntaxKind.ExclamationToken;
5201    interface PrefixUnaryExpression extends UpdateExpression {
5202        readonly kind: SyntaxKind.PrefixUnaryExpression;
5203        readonly operator: PrefixUnaryOperator;
5204        readonly operand: UnaryExpression;
5205    }
5206    type PostfixUnaryOperator = SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken;
5207    interface PostfixUnaryExpression extends UpdateExpression {
5208        readonly kind: SyntaxKind.PostfixUnaryExpression;
5209        readonly operand: LeftHandSideExpression;
5210        readonly operator: PostfixUnaryOperator;
5211    }
5212    interface LeftHandSideExpression extends UpdateExpression {
5213        _leftHandSideExpressionBrand: any;
5214    }
5215    interface MemberExpression extends LeftHandSideExpression {
5216        _memberExpressionBrand: any;
5217    }
5218    interface PrimaryExpression extends MemberExpression {
5219        _primaryExpressionBrand: any;
5220    }
5221    interface NullLiteral extends PrimaryExpression {
5222        readonly kind: SyntaxKind.NullKeyword;
5223    }
5224    interface TrueLiteral extends PrimaryExpression {
5225        readonly kind: SyntaxKind.TrueKeyword;
5226    }
5227    interface FalseLiteral extends PrimaryExpression {
5228        readonly kind: SyntaxKind.FalseKeyword;
5229    }
5230    type BooleanLiteral = TrueLiteral | FalseLiteral;
5231    interface ThisExpression extends PrimaryExpression {
5232        readonly kind: SyntaxKind.ThisKeyword;
5233    }
5234    interface SuperExpression extends PrimaryExpression {
5235        readonly kind: SyntaxKind.SuperKeyword;
5236    }
5237    interface ImportExpression extends PrimaryExpression {
5238        readonly kind: SyntaxKind.ImportKeyword;
5239    }
5240    interface DeleteExpression extends UnaryExpression {
5241        readonly kind: SyntaxKind.DeleteExpression;
5242        readonly expression: UnaryExpression;
5243    }
5244    interface TypeOfExpression extends UnaryExpression {
5245        readonly kind: SyntaxKind.TypeOfExpression;
5246        readonly expression: UnaryExpression;
5247    }
5248    interface VoidExpression extends UnaryExpression {
5249        readonly kind: SyntaxKind.VoidExpression;
5250        readonly expression: UnaryExpression;
5251    }
5252    interface AwaitExpression extends UnaryExpression {
5253        readonly kind: SyntaxKind.AwaitExpression;
5254        readonly expression: UnaryExpression;
5255    }
5256    interface YieldExpression extends Expression {
5257        readonly kind: SyntaxKind.YieldExpression;
5258        readonly asteriskToken?: AsteriskToken;
5259        readonly expression?: Expression;
5260    }
5261    interface SyntheticExpression extends Expression {
5262        readonly kind: SyntaxKind.SyntheticExpression;
5263        readonly isSpread: boolean;
5264        readonly type: Type;
5265        readonly tupleNameSource?: ParameterDeclaration | NamedTupleMember;
5266    }
5267    type ExponentiationOperator = SyntaxKind.AsteriskAsteriskToken;
5268    type MultiplicativeOperator = SyntaxKind.AsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken;
5269    type MultiplicativeOperatorOrHigher = ExponentiationOperator | MultiplicativeOperator;
5270    type AdditiveOperator = SyntaxKind.PlusToken | SyntaxKind.MinusToken;
5271    type AdditiveOperatorOrHigher = MultiplicativeOperatorOrHigher | AdditiveOperator;
5272    type ShiftOperator = SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken;
5273    type ShiftOperatorOrHigher = AdditiveOperatorOrHigher | ShiftOperator;
5274    type RelationalOperator = SyntaxKind.LessThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.InstanceOfKeyword | SyntaxKind.InKeyword;
5275    type RelationalOperatorOrHigher = ShiftOperatorOrHigher | RelationalOperator;
5276    type EqualityOperator = SyntaxKind.EqualsEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.ExclamationEqualsToken;
5277    type EqualityOperatorOrHigher = RelationalOperatorOrHigher | EqualityOperator;
5278    type BitwiseOperator = SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken;
5279    type BitwiseOperatorOrHigher = EqualityOperatorOrHigher | BitwiseOperator;
5280    type LogicalOperator = SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken;
5281    type LogicalOperatorOrHigher = BitwiseOperatorOrHigher | LogicalOperator;
5282    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;
5283    type AssignmentOperator = SyntaxKind.EqualsToken | CompoundAssignmentOperator;
5284    type AssignmentOperatorOrHigher = SyntaxKind.QuestionQuestionToken | LogicalOperatorOrHigher | AssignmentOperator;
5285    type BinaryOperator = AssignmentOperatorOrHigher | SyntaxKind.CommaToken;
5286    type LogicalOrCoalescingAssignmentOperator = SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.QuestionQuestionEqualsToken;
5287    type BinaryOperatorToken = Token<BinaryOperator>;
5288    interface BinaryExpression extends Expression, Declaration {
5289        readonly kind: SyntaxKind.BinaryExpression;
5290        readonly left: Expression;
5291        readonly operatorToken: BinaryOperatorToken;
5292        readonly right: Expression;
5293    }
5294    type AssignmentOperatorToken = Token<AssignmentOperator>;
5295    interface AssignmentExpression<TOperator extends AssignmentOperatorToken> extends BinaryExpression {
5296        readonly left: LeftHandSideExpression;
5297        readonly operatorToken: TOperator;
5298    }
5299    interface ObjectDestructuringAssignment extends AssignmentExpression<EqualsToken> {
5300        readonly left: ObjectLiteralExpression;
5301    }
5302    interface ArrayDestructuringAssignment extends AssignmentExpression<EqualsToken> {
5303        readonly left: ArrayLiteralExpression;
5304    }
5305    type DestructuringAssignment = ObjectDestructuringAssignment | ArrayDestructuringAssignment;
5306    type BindingOrAssignmentElement = VariableDeclaration | ParameterDeclaration | ObjectBindingOrAssignmentElement | ArrayBindingOrAssignmentElement;
5307    type ObjectBindingOrAssignmentElement = BindingElement | PropertyAssignment | ShorthandPropertyAssignment | SpreadAssignment;
5308    type ArrayBindingOrAssignmentElement = BindingElement | OmittedExpression | SpreadElement | ArrayLiteralExpression | ObjectLiteralExpression | AssignmentExpression<EqualsToken> | Identifier | PropertyAccessExpression | ElementAccessExpression;
5309    type BindingOrAssignmentElementRestIndicator = DotDotDotToken | SpreadElement | SpreadAssignment;
5310    type BindingOrAssignmentElementTarget = BindingOrAssignmentPattern | Identifier | PropertyAccessExpression | ElementAccessExpression | OmittedExpression;
5311    type ObjectBindingOrAssignmentPattern = ObjectBindingPattern | ObjectLiteralExpression;
5312    type ArrayBindingOrAssignmentPattern = ArrayBindingPattern | ArrayLiteralExpression;
5313    type AssignmentPattern = ObjectLiteralExpression | ArrayLiteralExpression;
5314    type BindingOrAssignmentPattern = ObjectBindingOrAssignmentPattern | ArrayBindingOrAssignmentPattern;
5315    interface ConditionalExpression extends Expression {
5316        readonly kind: SyntaxKind.ConditionalExpression;
5317        readonly condition: Expression;
5318        readonly questionToken: QuestionToken;
5319        readonly whenTrue: Expression;
5320        readonly colonToken: ColonToken;
5321        readonly whenFalse: Expression;
5322    }
5323    type FunctionBody = Block;
5324    type ConciseBody = FunctionBody | Expression;
5325    interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclarationBase, JSDocContainer {
5326        readonly kind: SyntaxKind.FunctionExpression;
5327        readonly modifiers?: NodeArray<Modifier>;
5328        readonly name?: Identifier;
5329        readonly body: FunctionBody;
5330    }
5331    interface EtsComponentExpression extends PrimaryExpression, Declaration {
5332        readonly kind: SyntaxKind.EtsComponentExpression;
5333        readonly expression: LeftHandSideExpression;
5334        readonly typeArguments?: NodeArray<TypeNode>;
5335        readonly arguments: NodeArray<Expression>;
5336        readonly body?: Block;
5337    }
5338    interface ArrowFunction extends Expression, FunctionLikeDeclarationBase, JSDocContainer {
5339        readonly kind: SyntaxKind.ArrowFunction;
5340        readonly modifiers?: NodeArray<Modifier>;
5341        readonly equalsGreaterThanToken: EqualsGreaterThanToken;
5342        readonly body: ConciseBody;
5343        readonly name: never;
5344    }
5345    interface LiteralLikeNode extends Node {
5346        text: string;
5347        isUnterminated?: boolean;
5348        hasExtendedUnicodeEscape?: boolean;
5349    }
5350    interface TemplateLiteralLikeNode extends LiteralLikeNode {
5351        rawText?: string;
5352    }
5353    interface LiteralExpression extends LiteralLikeNode, PrimaryExpression {
5354        _literalExpressionBrand: any;
5355    }
5356    interface RegularExpressionLiteral extends LiteralExpression {
5357        readonly kind: SyntaxKind.RegularExpressionLiteral;
5358    }
5359    interface NoSubstitutionTemplateLiteral extends LiteralExpression, TemplateLiteralLikeNode, Declaration {
5360        readonly kind: SyntaxKind.NoSubstitutionTemplateLiteral;
5361    }
5362    enum TokenFlags {
5363        None = 0,
5364        Scientific = 16,
5365        Octal = 32,
5366        HexSpecifier = 64,
5367        BinarySpecifier = 128,
5368        OctalSpecifier = 256
5369    }
5370    interface NumericLiteral extends LiteralExpression, Declaration {
5371        readonly kind: SyntaxKind.NumericLiteral;
5372    }
5373    interface BigIntLiteral extends LiteralExpression {
5374        readonly kind: SyntaxKind.BigIntLiteral;
5375    }
5376    type LiteralToken = NumericLiteral | BigIntLiteral | StringLiteral | JsxText | RegularExpressionLiteral | NoSubstitutionTemplateLiteral;
5377    interface TemplateHead extends TemplateLiteralLikeNode {
5378        readonly kind: SyntaxKind.TemplateHead;
5379        readonly parent: TemplateExpression | TemplateLiteralTypeNode;
5380    }
5381    interface TemplateMiddle extends TemplateLiteralLikeNode {
5382        readonly kind: SyntaxKind.TemplateMiddle;
5383        readonly parent: TemplateSpan | TemplateLiteralTypeSpan;
5384    }
5385    interface TemplateTail extends TemplateLiteralLikeNode {
5386        readonly kind: SyntaxKind.TemplateTail;
5387        readonly parent: TemplateSpan | TemplateLiteralTypeSpan;
5388    }
5389    type PseudoLiteralToken = TemplateHead | TemplateMiddle | TemplateTail;
5390    type TemplateLiteralToken = NoSubstitutionTemplateLiteral | PseudoLiteralToken;
5391    interface TemplateExpression extends PrimaryExpression {
5392        readonly kind: SyntaxKind.TemplateExpression;
5393        readonly head: TemplateHead;
5394        readonly templateSpans: NodeArray<TemplateSpan>;
5395    }
5396    type TemplateLiteral = TemplateExpression | NoSubstitutionTemplateLiteral;
5397    interface TemplateSpan extends Node {
5398        readonly kind: SyntaxKind.TemplateSpan;
5399        readonly parent: TemplateExpression;
5400        readonly expression: Expression;
5401        readonly literal: TemplateMiddle | TemplateTail;
5402    }
5403    interface ParenthesizedExpression extends PrimaryExpression, JSDocContainer {
5404        readonly kind: SyntaxKind.ParenthesizedExpression;
5405        readonly expression: Expression;
5406    }
5407    interface ArrayLiteralExpression extends PrimaryExpression {
5408        readonly kind: SyntaxKind.ArrayLiteralExpression;
5409        readonly elements: NodeArray<Expression>;
5410    }
5411    interface SpreadElement extends Expression {
5412        readonly kind: SyntaxKind.SpreadElement;
5413        readonly parent: ArrayLiteralExpression | CallExpression | NewExpression;
5414        readonly expression: Expression;
5415    }
5416    /**
5417     * This interface is a base interface for ObjectLiteralExpression and JSXAttributes to extend from. JSXAttributes is similar to
5418     * ObjectLiteralExpression in that it contains array of properties; however, JSXAttributes' properties can only be
5419     * JSXAttribute or JSXSpreadAttribute. ObjectLiteralExpression, on the other hand, can only have properties of type
5420     * ObjectLiteralElement (e.g. PropertyAssignment, ShorthandPropertyAssignment etc.)
5421     */
5422    interface ObjectLiteralExpressionBase<T extends ObjectLiteralElement> extends PrimaryExpression, Declaration {
5423        readonly properties: NodeArray<T>;
5424    }
5425    interface ObjectLiteralExpression extends ObjectLiteralExpressionBase<ObjectLiteralElementLike> {
5426        readonly kind: SyntaxKind.ObjectLiteralExpression;
5427    }
5428    type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression;
5429    type EntityNameOrEntityNameExpression = EntityName | EntityNameExpression;
5430    type AccessExpression = PropertyAccessExpression | ElementAccessExpression;
5431    interface PropertyAccessExpression extends MemberExpression, NamedDeclaration {
5432        readonly kind: SyntaxKind.PropertyAccessExpression;
5433        readonly expression: LeftHandSideExpression;
5434        readonly questionDotToken?: QuestionDotToken;
5435        readonly name: MemberName;
5436    }
5437    interface PropertyAccessChain extends PropertyAccessExpression {
5438        _optionalChainBrand: any;
5439        readonly name: MemberName;
5440    }
5441    interface SuperPropertyAccessExpression extends PropertyAccessExpression {
5442        readonly expression: SuperExpression;
5443    }
5444    /** Brand for a PropertyAccessExpression which, like a QualifiedName, consists of a sequence of identifiers separated by dots. */
5445    interface PropertyAccessEntityNameExpression extends PropertyAccessExpression {
5446        _propertyAccessExpressionLikeQualifiedNameBrand?: any;
5447        readonly expression: EntityNameExpression;
5448        readonly name: Identifier;
5449    }
5450    interface ElementAccessExpression extends MemberExpression {
5451        readonly kind: SyntaxKind.ElementAccessExpression;
5452        readonly expression: LeftHandSideExpression;
5453        readonly questionDotToken?: QuestionDotToken;
5454        readonly argumentExpression: Expression;
5455    }
5456    interface ElementAccessChain extends ElementAccessExpression {
5457        _optionalChainBrand: any;
5458    }
5459    interface SuperElementAccessExpression extends ElementAccessExpression {
5460        readonly expression: SuperExpression;
5461    }
5462    type SuperProperty = SuperPropertyAccessExpression | SuperElementAccessExpression;
5463    interface CallExpression extends LeftHandSideExpression, Declaration {
5464        readonly kind: SyntaxKind.CallExpression;
5465        readonly expression: LeftHandSideExpression;
5466        readonly questionDotToken?: QuestionDotToken;
5467        readonly typeArguments?: NodeArray<TypeNode>;
5468        readonly arguments: NodeArray<Expression>;
5469    }
5470    interface CallChain extends CallExpression {
5471        _optionalChainBrand: any;
5472    }
5473    type OptionalChain = PropertyAccessChain | ElementAccessChain | CallChain | NonNullChain;
5474    interface SuperCall extends CallExpression {
5475        readonly expression: SuperExpression;
5476    }
5477    interface ImportCall extends CallExpression {
5478        readonly expression: ImportExpression;
5479    }
5480    interface ExpressionWithTypeArguments extends MemberExpression, NodeWithTypeArguments {
5481        readonly kind: SyntaxKind.ExpressionWithTypeArguments;
5482        readonly expression: LeftHandSideExpression;
5483    }
5484    interface NewExpression extends PrimaryExpression, Declaration {
5485        readonly kind: SyntaxKind.NewExpression;
5486        readonly expression: LeftHandSideExpression;
5487        readonly typeArguments?: NodeArray<TypeNode>;
5488        readonly arguments?: NodeArray<Expression>;
5489    }
5490    interface TaggedTemplateExpression extends MemberExpression {
5491        readonly kind: SyntaxKind.TaggedTemplateExpression;
5492        readonly tag: LeftHandSideExpression;
5493        readonly typeArguments?: NodeArray<TypeNode>;
5494        readonly template: TemplateLiteral;
5495    }
5496    type CallLikeExpression = CallExpression | NewExpression | TaggedTemplateExpression | Decorator | JsxOpeningLikeElement | EtsComponentExpression;
5497    interface AsExpression extends Expression {
5498        readonly kind: SyntaxKind.AsExpression;
5499        readonly expression: Expression;
5500        readonly type: TypeNode;
5501    }
5502    interface TypeAssertion extends UnaryExpression {
5503        readonly kind: SyntaxKind.TypeAssertionExpression;
5504        readonly type: TypeNode;
5505        readonly expression: UnaryExpression;
5506    }
5507    interface SatisfiesExpression extends Expression {
5508        readonly kind: SyntaxKind.SatisfiesExpression;
5509        readonly expression: Expression;
5510        readonly type: TypeNode;
5511    }
5512    type AssertionExpression = TypeAssertion | AsExpression;
5513    interface NonNullExpression extends LeftHandSideExpression {
5514        readonly kind: SyntaxKind.NonNullExpression;
5515        readonly expression: Expression;
5516    }
5517    interface NonNullChain extends NonNullExpression {
5518        _optionalChainBrand: any;
5519    }
5520    interface MetaProperty extends PrimaryExpression {
5521        readonly kind: SyntaxKind.MetaProperty;
5522        readonly keywordToken: SyntaxKind.NewKeyword | SyntaxKind.ImportKeyword;
5523        readonly name: Identifier;
5524    }
5525    interface JsxElement extends PrimaryExpression {
5526        readonly kind: SyntaxKind.JsxElement;
5527        readonly openingElement: JsxOpeningElement;
5528        readonly children: NodeArray<JsxChild>;
5529        readonly closingElement: JsxClosingElement;
5530    }
5531    type JsxOpeningLikeElement = JsxSelfClosingElement | JsxOpeningElement;
5532    type JsxAttributeLike = JsxAttribute | JsxSpreadAttribute;
5533    type JsxTagNameExpression = Identifier | ThisExpression | JsxTagNamePropertyAccess;
5534    interface JsxTagNamePropertyAccess extends PropertyAccessExpression {
5535        readonly expression: JsxTagNameExpression;
5536    }
5537    interface JsxAttributes extends ObjectLiteralExpressionBase<JsxAttributeLike> {
5538        readonly kind: SyntaxKind.JsxAttributes;
5539        readonly parent: JsxOpeningLikeElement;
5540    }
5541    interface JsxOpeningElement extends Expression {
5542        readonly kind: SyntaxKind.JsxOpeningElement;
5543        readonly parent: JsxElement;
5544        readonly tagName: JsxTagNameExpression;
5545        readonly typeArguments?: NodeArray<TypeNode>;
5546        readonly attributes: JsxAttributes;
5547    }
5548    interface JsxSelfClosingElement extends PrimaryExpression {
5549        readonly kind: SyntaxKind.JsxSelfClosingElement;
5550        readonly tagName: JsxTagNameExpression;
5551        readonly typeArguments?: NodeArray<TypeNode>;
5552        readonly attributes: JsxAttributes;
5553    }
5554    interface JsxFragment extends PrimaryExpression {
5555        readonly kind: SyntaxKind.JsxFragment;
5556        readonly openingFragment: JsxOpeningFragment;
5557        readonly children: NodeArray<JsxChild>;
5558        readonly closingFragment: JsxClosingFragment;
5559    }
5560    interface JsxOpeningFragment extends Expression {
5561        readonly kind: SyntaxKind.JsxOpeningFragment;
5562        readonly parent: JsxFragment;
5563    }
5564    interface JsxClosingFragment extends Expression {
5565        readonly kind: SyntaxKind.JsxClosingFragment;
5566        readonly parent: JsxFragment;
5567    }
5568    interface JsxAttribute extends ObjectLiteralElement {
5569        readonly kind: SyntaxKind.JsxAttribute;
5570        readonly parent: JsxAttributes;
5571        readonly name: Identifier;
5572        readonly initializer?: JsxAttributeValue;
5573    }
5574    type JsxAttributeValue = StringLiteral | JsxExpression | JsxElement | JsxSelfClosingElement | JsxFragment;
5575    interface JsxSpreadAttribute extends ObjectLiteralElement {
5576        readonly kind: SyntaxKind.JsxSpreadAttribute;
5577        readonly parent: JsxAttributes;
5578        readonly expression: Expression;
5579    }
5580    interface JsxClosingElement extends Node {
5581        readonly kind: SyntaxKind.JsxClosingElement;
5582        readonly parent: JsxElement;
5583        readonly tagName: JsxTagNameExpression;
5584    }
5585    interface JsxExpression extends Expression {
5586        readonly kind: SyntaxKind.JsxExpression;
5587        readonly parent: JsxElement | JsxFragment | JsxAttributeLike;
5588        readonly dotDotDotToken?: Token<SyntaxKind.DotDotDotToken>;
5589        readonly expression?: Expression;
5590    }
5591    interface JsxText extends LiteralLikeNode {
5592        readonly kind: SyntaxKind.JsxText;
5593        readonly parent: JsxElement | JsxFragment;
5594        readonly containsOnlyTriviaWhiteSpaces: boolean;
5595    }
5596    type JsxChild = JsxText | JsxExpression | JsxElement | JsxSelfClosingElement | JsxFragment;
5597    interface Statement extends Node, JSDocContainer {
5598        _statementBrand: any;
5599    }
5600    interface NotEmittedStatement extends Statement {
5601        readonly kind: SyntaxKind.NotEmittedStatement;
5602    }
5603    /**
5604     * A list of comma-separated expressions. This node is only created by transformations.
5605     */
5606    interface CommaListExpression extends Expression {
5607        readonly kind: SyntaxKind.CommaListExpression;
5608        readonly elements: NodeArray<Expression>;
5609    }
5610    interface EmptyStatement extends Statement {
5611        readonly kind: SyntaxKind.EmptyStatement;
5612    }
5613    interface DebuggerStatement extends Statement {
5614        readonly kind: SyntaxKind.DebuggerStatement;
5615    }
5616    interface MissingDeclaration extends DeclarationStatement {
5617        readonly kind: SyntaxKind.MissingDeclaration;
5618        readonly name?: Identifier;
5619    }
5620    type BlockLike = SourceFile | Block | ModuleBlock | CaseOrDefaultClause;
5621    interface Block extends Statement {
5622        readonly kind: SyntaxKind.Block;
5623        readonly statements: NodeArray<Statement>;
5624    }
5625    interface VariableStatement extends Statement {
5626        readonly kind: SyntaxKind.VariableStatement;
5627        readonly modifiers?: NodeArray<Modifier>;
5628        readonly declarationList: VariableDeclarationList;
5629    }
5630    interface ExpressionStatement extends Statement {
5631        readonly kind: SyntaxKind.ExpressionStatement;
5632        readonly expression: Expression;
5633    }
5634    interface IfStatement extends Statement {
5635        readonly kind: SyntaxKind.IfStatement;
5636        readonly expression: Expression;
5637        readonly thenStatement: Statement;
5638        readonly elseStatement?: Statement;
5639    }
5640    interface IterationStatement extends Statement {
5641        readonly statement: Statement;
5642    }
5643    interface DoStatement extends IterationStatement {
5644        readonly kind: SyntaxKind.DoStatement;
5645        readonly expression: Expression;
5646    }
5647    interface WhileStatement extends IterationStatement {
5648        readonly kind: SyntaxKind.WhileStatement;
5649        readonly expression: Expression;
5650    }
5651    type ForInitializer = VariableDeclarationList | Expression;
5652    interface ForStatement extends IterationStatement {
5653        readonly kind: SyntaxKind.ForStatement;
5654        readonly initializer?: ForInitializer;
5655        readonly condition?: Expression;
5656        readonly incrementor?: Expression;
5657    }
5658    type ForInOrOfStatement = ForInStatement | ForOfStatement;
5659    interface ForInStatement extends IterationStatement {
5660        readonly kind: SyntaxKind.ForInStatement;
5661        readonly initializer: ForInitializer;
5662        readonly expression: Expression;
5663    }
5664    interface ForOfStatement extends IterationStatement {
5665        readonly kind: SyntaxKind.ForOfStatement;
5666        readonly awaitModifier?: AwaitKeyword;
5667        readonly initializer: ForInitializer;
5668        readonly expression: Expression;
5669    }
5670    interface BreakStatement extends Statement {
5671        readonly kind: SyntaxKind.BreakStatement;
5672        readonly label?: Identifier;
5673    }
5674    interface ContinueStatement extends Statement {
5675        readonly kind: SyntaxKind.ContinueStatement;
5676        readonly label?: Identifier;
5677    }
5678    type BreakOrContinueStatement = BreakStatement | ContinueStatement;
5679    interface ReturnStatement extends Statement {
5680        readonly kind: SyntaxKind.ReturnStatement;
5681        readonly expression?: Expression;
5682    }
5683    interface WithStatement extends Statement {
5684        readonly kind: SyntaxKind.WithStatement;
5685        readonly expression: Expression;
5686        readonly statement: Statement;
5687    }
5688    interface SwitchStatement extends Statement {
5689        readonly kind: SyntaxKind.SwitchStatement;
5690        readonly expression: Expression;
5691        readonly caseBlock: CaseBlock;
5692        possiblyExhaustive?: boolean;
5693    }
5694    interface CaseBlock extends Node {
5695        readonly kind: SyntaxKind.CaseBlock;
5696        readonly parent: SwitchStatement;
5697        readonly clauses: NodeArray<CaseOrDefaultClause>;
5698    }
5699    interface CaseClause extends Node, JSDocContainer {
5700        readonly kind: SyntaxKind.CaseClause;
5701        readonly parent: CaseBlock;
5702        readonly expression: Expression;
5703        readonly statements: NodeArray<Statement>;
5704    }
5705    interface DefaultClause extends Node {
5706        readonly kind: SyntaxKind.DefaultClause;
5707        readonly parent: CaseBlock;
5708        readonly statements: NodeArray<Statement>;
5709    }
5710    type CaseOrDefaultClause = CaseClause | DefaultClause;
5711    interface LabeledStatement extends Statement {
5712        readonly kind: SyntaxKind.LabeledStatement;
5713        readonly label: Identifier;
5714        readonly statement: Statement;
5715    }
5716    interface ThrowStatement extends Statement {
5717        readonly kind: SyntaxKind.ThrowStatement;
5718        readonly expression: Expression;
5719    }
5720    interface TryStatement extends Statement {
5721        readonly kind: SyntaxKind.TryStatement;
5722        readonly tryBlock: Block;
5723        readonly catchClause?: CatchClause;
5724        readonly finallyBlock?: Block;
5725    }
5726    interface CatchClause extends Node {
5727        readonly kind: SyntaxKind.CatchClause;
5728        readonly parent: TryStatement;
5729        readonly variableDeclaration?: VariableDeclaration;
5730        readonly block: Block;
5731    }
5732    type ObjectTypeDeclaration = ClassLikeDeclaration | InterfaceDeclaration | TypeLiteralNode;
5733    type DeclarationWithTypeParameters = DeclarationWithTypeParameterChildren | JSDocTypedefTag | JSDocCallbackTag | JSDocSignature;
5734    type DeclarationWithTypeParameterChildren = SignatureDeclaration | ClassLikeDeclaration | InterfaceDeclaration | TypeAliasDeclaration | JSDocTemplateTag;
5735    interface ClassLikeDeclarationBase extends NamedDeclaration, JSDocContainer {
5736        readonly kind: SyntaxKind.ClassDeclaration | SyntaxKind.ClassExpression | SyntaxKind.StructDeclaration | SyntaxKind.AnnotationDeclaration;
5737        readonly name?: Identifier;
5738        readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
5739        readonly heritageClauses?: NodeArray<HeritageClause>;
5740        readonly members: NodeArray<ClassElement>;
5741    }
5742    interface ClassDeclaration extends ClassLikeDeclarationBase, DeclarationStatement {
5743        readonly kind: SyntaxKind.ClassDeclaration;
5744        readonly modifiers?: NodeArray<ModifierLike>;
5745        /** May be undefined in `export default class { ... }`. */
5746        readonly name?: Identifier;
5747    }
5748    interface StructDeclaration extends ClassLikeDeclarationBase, DeclarationStatement {
5749        readonly kind: SyntaxKind.StructDeclaration;
5750        readonly modifiers?: NodeArray<ModifierLike>;
5751        /** May be undefined in `export default class { ... }`. */
5752        readonly name?: Identifier;
5753    }
5754    interface AnnotationDeclaration extends DeclarationStatement {
5755        readonly kind: SyntaxKind.AnnotationDeclaration;
5756        readonly modifiers?: NodeArray<ModifierLike>;
5757        readonly name: Identifier;
5758        readonly members: NodeArray<AnnotationElement>;
5759    }
5760    interface ClassExpression extends ClassLikeDeclarationBase, PrimaryExpression {
5761        readonly kind: SyntaxKind.ClassExpression;
5762        readonly modifiers?: NodeArray<ModifierLike>;
5763    }
5764    type ClassLikeDeclaration = ClassDeclaration | ClassExpression | StructDeclaration;
5765    interface ClassElement extends NamedDeclaration {
5766        _classElementBrand: any;
5767        readonly name?: PropertyName;
5768    }
5769    interface AnnotationElement extends NamedDeclaration {
5770        _annnotationElementBrand: any;
5771        readonly name: PropertyName;
5772    }
5773    interface TypeElement extends NamedDeclaration {
5774        _typeElementBrand: any;
5775        readonly name?: PropertyName;
5776        readonly questionToken?: QuestionToken | undefined;
5777    }
5778    interface InterfaceDeclaration extends DeclarationStatement, JSDocContainer {
5779        readonly kind: SyntaxKind.InterfaceDeclaration;
5780        readonly modifiers?: NodeArray<Modifier>;
5781        readonly name: Identifier;
5782        readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
5783        readonly heritageClauses?: NodeArray<HeritageClause>;
5784        readonly members: NodeArray<TypeElement>;
5785    }
5786    interface HeritageClause extends Node {
5787        readonly kind: SyntaxKind.HeritageClause;
5788        readonly parent: InterfaceDeclaration | ClassLikeDeclaration;
5789        readonly token: SyntaxKind.ExtendsKeyword | SyntaxKind.ImplementsKeyword;
5790        readonly types: NodeArray<ExpressionWithTypeArguments>;
5791    }
5792    interface TypeAliasDeclaration extends DeclarationStatement, JSDocContainer {
5793        readonly kind: SyntaxKind.TypeAliasDeclaration;
5794        readonly modifiers?: NodeArray<Modifier>;
5795        readonly name: Identifier;
5796        readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
5797        readonly type: TypeNode;
5798    }
5799    interface EnumMember extends NamedDeclaration, JSDocContainer {
5800        readonly kind: SyntaxKind.EnumMember;
5801        readonly parent: EnumDeclaration;
5802        readonly name: PropertyName;
5803        readonly initializer?: Expression;
5804    }
5805    interface EnumDeclaration extends DeclarationStatement, JSDocContainer {
5806        readonly kind: SyntaxKind.EnumDeclaration;
5807        readonly modifiers?: NodeArray<Modifier>;
5808        readonly name: Identifier;
5809        readonly members: NodeArray<EnumMember>;
5810    }
5811    type ModuleName = Identifier | StringLiteral;
5812    type ModuleBody = NamespaceBody | JSDocNamespaceBody;
5813    interface ModuleDeclaration extends DeclarationStatement, JSDocContainer {
5814        readonly kind: SyntaxKind.ModuleDeclaration;
5815        readonly parent: ModuleBody | SourceFile;
5816        readonly modifiers?: NodeArray<Modifier>;
5817        readonly name: ModuleName;
5818        readonly body?: ModuleBody | JSDocNamespaceDeclaration;
5819    }
5820    type NamespaceBody = ModuleBlock | NamespaceDeclaration;
5821    interface NamespaceDeclaration extends ModuleDeclaration {
5822        readonly name: Identifier;
5823        readonly body: NamespaceBody;
5824    }
5825    type JSDocNamespaceBody = Identifier | JSDocNamespaceDeclaration;
5826    interface JSDocNamespaceDeclaration extends ModuleDeclaration {
5827        readonly name: Identifier;
5828        readonly body?: JSDocNamespaceBody;
5829    }
5830    interface ModuleBlock extends Node, Statement {
5831        readonly kind: SyntaxKind.ModuleBlock;
5832        readonly parent: ModuleDeclaration;
5833        readonly statements: NodeArray<Statement>;
5834    }
5835    type ModuleReference = EntityName | ExternalModuleReference;
5836    /**
5837     * One of:
5838     * - import x = require("mod");
5839     * - import x = M.x;
5840     */
5841    interface ImportEqualsDeclaration extends DeclarationStatement, JSDocContainer {
5842        readonly kind: SyntaxKind.ImportEqualsDeclaration;
5843        readonly parent: SourceFile | ModuleBlock;
5844        readonly modifiers?: NodeArray<Modifier>;
5845        readonly name: Identifier;
5846        readonly isTypeOnly: boolean;
5847        readonly moduleReference: ModuleReference;
5848    }
5849    interface ExternalModuleReference extends Node {
5850        readonly kind: SyntaxKind.ExternalModuleReference;
5851        readonly parent: ImportEqualsDeclaration;
5852        readonly expression: Expression;
5853    }
5854    interface ImportDeclaration extends Statement {
5855        readonly kind: SyntaxKind.ImportDeclaration;
5856        readonly parent: SourceFile | ModuleBlock;
5857        readonly modifiers?: NodeArray<Modifier>;
5858        readonly importClause?: ImportClause;
5859        /** If this is not a StringLiteral it will be a grammar error. */
5860        readonly moduleSpecifier: Expression;
5861        readonly assertClause?: AssertClause;
5862    }
5863    type NamedImportBindings = NamespaceImport | NamedImports;
5864    type NamedExportBindings = NamespaceExport | NamedExports;
5865    interface ImportClause extends NamedDeclaration {
5866        readonly kind: SyntaxKind.ImportClause;
5867        readonly parent: ImportDeclaration;
5868        readonly isTypeOnly: boolean;
5869        readonly name?: Identifier;
5870        readonly namedBindings?: NamedImportBindings;
5871        readonly isLazy?: boolean;
5872    }
5873    type AssertionKey = Identifier | StringLiteral;
5874    interface AssertEntry extends Node {
5875        readonly kind: SyntaxKind.AssertEntry;
5876        readonly parent: AssertClause;
5877        readonly name: AssertionKey;
5878        readonly value: Expression;
5879    }
5880    interface AssertClause extends Node {
5881        readonly kind: SyntaxKind.AssertClause;
5882        readonly parent: ImportDeclaration | ExportDeclaration;
5883        readonly elements: NodeArray<AssertEntry>;
5884        readonly multiLine?: boolean;
5885    }
5886    interface NamespaceImport extends NamedDeclaration {
5887        readonly kind: SyntaxKind.NamespaceImport;
5888        readonly parent: ImportClause;
5889        readonly name: Identifier;
5890    }
5891    interface NamespaceExport extends NamedDeclaration {
5892        readonly kind: SyntaxKind.NamespaceExport;
5893        readonly parent: ExportDeclaration;
5894        readonly name: Identifier;
5895    }
5896    interface NamespaceExportDeclaration extends DeclarationStatement, JSDocContainer {
5897        readonly kind: SyntaxKind.NamespaceExportDeclaration;
5898        readonly name: Identifier;
5899    }
5900    interface ExportDeclaration extends DeclarationStatement, JSDocContainer {
5901        readonly kind: SyntaxKind.ExportDeclaration;
5902        readonly parent: SourceFile | ModuleBlock;
5903        readonly modifiers?: NodeArray<Modifier>;
5904        readonly isTypeOnly: boolean;
5905        /** Will not be assigned in the case of `export * from "foo";` */
5906        readonly exportClause?: NamedExportBindings;
5907        /** If this is not a StringLiteral it will be a grammar error. */
5908        readonly moduleSpecifier?: Expression;
5909        readonly assertClause?: AssertClause;
5910    }
5911    interface NamedImports extends Node {
5912        readonly kind: SyntaxKind.NamedImports;
5913        readonly parent: ImportClause;
5914        readonly elements: NodeArray<ImportSpecifier>;
5915    }
5916    interface NamedExports extends Node {
5917        readonly kind: SyntaxKind.NamedExports;
5918        readonly parent: ExportDeclaration;
5919        readonly elements: NodeArray<ExportSpecifier>;
5920    }
5921    type NamedImportsOrExports = NamedImports | NamedExports;
5922    interface ImportSpecifier extends NamedDeclaration {
5923        readonly kind: SyntaxKind.ImportSpecifier;
5924        readonly parent: NamedImports;
5925        readonly propertyName?: Identifier;
5926        readonly name: Identifier;
5927        readonly isTypeOnly: boolean;
5928    }
5929    interface ExportSpecifier extends NamedDeclaration, JSDocContainer {
5930        readonly kind: SyntaxKind.ExportSpecifier;
5931        readonly parent: NamedExports;
5932        readonly isTypeOnly: boolean;
5933        readonly propertyName?: Identifier;
5934        readonly name: Identifier;
5935    }
5936    type ImportOrExportSpecifier = ImportSpecifier | ExportSpecifier;
5937    type TypeOnlyCompatibleAliasDeclaration = ImportClause | ImportEqualsDeclaration | NamespaceImport | ImportOrExportSpecifier;
5938    type TypeOnlyAliasDeclaration = ImportClause & {
5939        readonly isTypeOnly: true;
5940        readonly name: Identifier;
5941    } | ImportEqualsDeclaration & {
5942        readonly isTypeOnly: true;
5943    } | NamespaceImport & {
5944        readonly parent: ImportClause & {
5945            readonly isTypeOnly: true;
5946        };
5947    } | ImportSpecifier & ({
5948        readonly isTypeOnly: true;
5949    } | {
5950        readonly parent: NamedImports & {
5951            readonly parent: ImportClause & {
5952                readonly isTypeOnly: true;
5953            };
5954        };
5955    }) | ExportSpecifier & ({
5956        readonly isTypeOnly: true;
5957    } | {
5958        readonly parent: NamedExports & {
5959            readonly parent: ExportDeclaration & {
5960                readonly isTypeOnly: true;
5961            };
5962        };
5963    });
5964    /**
5965     * This is either an `export =` or an `export default` declaration.
5966     * Unless `isExportEquals` is set, this node was parsed as an `export default`.
5967     */
5968    interface ExportAssignment extends DeclarationStatement, JSDocContainer {
5969        readonly kind: SyntaxKind.ExportAssignment;
5970        readonly parent: SourceFile;
5971        readonly modifiers?: NodeArray<Modifier>;
5972        readonly isExportEquals?: boolean;
5973        readonly expression: Expression;
5974    }
5975    interface FileReference extends TextRange {
5976        fileName: string;
5977        resolutionMode?: SourceFile["impliedNodeFormat"];
5978    }
5979    interface CheckJsDirective extends TextRange {
5980        enabled: boolean;
5981    }
5982    type CommentKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia;
5983    interface CommentRange extends TextRange {
5984        hasTrailingNewLine?: boolean;
5985        kind: CommentKind;
5986    }
5987    interface SynthesizedComment extends CommentRange {
5988        text: string;
5989        pos: -1;
5990        end: -1;
5991        hasLeadingNewline?: boolean;
5992    }
5993    interface JSDocTypeExpression extends TypeNode {
5994        readonly kind: SyntaxKind.JSDocTypeExpression;
5995        readonly type: TypeNode;
5996    }
5997    interface JSDocNameReference extends Node {
5998        readonly kind: SyntaxKind.JSDocNameReference;
5999        readonly name: EntityName | JSDocMemberName;
6000    }
6001    /** Class#method reference in JSDoc */
6002    interface JSDocMemberName extends Node {
6003        readonly kind: SyntaxKind.JSDocMemberName;
6004        readonly left: EntityName | JSDocMemberName;
6005        readonly right: Identifier;
6006    }
6007    interface JSDocType extends TypeNode {
6008        _jsDocTypeBrand: any;
6009    }
6010    interface JSDocAllType extends JSDocType {
6011        readonly kind: SyntaxKind.JSDocAllType;
6012    }
6013    interface JSDocUnknownType extends JSDocType {
6014        readonly kind: SyntaxKind.JSDocUnknownType;
6015    }
6016    interface JSDocNonNullableType extends JSDocType {
6017        readonly kind: SyntaxKind.JSDocNonNullableType;
6018        readonly type: TypeNode;
6019        readonly postfix: boolean;
6020    }
6021    interface JSDocNullableType extends JSDocType {
6022        readonly kind: SyntaxKind.JSDocNullableType;
6023        readonly type: TypeNode;
6024        readonly postfix: boolean;
6025    }
6026    interface JSDocOptionalType extends JSDocType {
6027        readonly kind: SyntaxKind.JSDocOptionalType;
6028        readonly type: TypeNode;
6029    }
6030    interface JSDocFunctionType extends JSDocType, SignatureDeclarationBase {
6031        readonly kind: SyntaxKind.JSDocFunctionType;
6032    }
6033    interface JSDocVariadicType extends JSDocType {
6034        readonly kind: SyntaxKind.JSDocVariadicType;
6035        readonly type: TypeNode;
6036    }
6037    interface JSDocNamepathType extends JSDocType {
6038        readonly kind: SyntaxKind.JSDocNamepathType;
6039        readonly type: TypeNode;
6040    }
6041    type JSDocTypeReferencingNode = JSDocVariadicType | JSDocOptionalType | JSDocNullableType | JSDocNonNullableType;
6042    interface JSDoc extends Node {
6043        readonly kind: SyntaxKind.JSDoc;
6044        readonly parent: HasJSDoc;
6045        readonly tags?: NodeArray<JSDocTag>;
6046        readonly comment?: string | NodeArray<JSDocComment>;
6047    }
6048    interface JSDocTag extends Node {
6049        readonly parent: JSDoc | JSDocTypeLiteral;
6050        readonly tagName: Identifier;
6051        readonly comment?: string | NodeArray<JSDocComment>;
6052    }
6053    interface JSDocLink extends Node {
6054        readonly kind: SyntaxKind.JSDocLink;
6055        readonly name?: EntityName | JSDocMemberName;
6056        text: string;
6057    }
6058    interface JSDocLinkCode extends Node {
6059        readonly kind: SyntaxKind.JSDocLinkCode;
6060        readonly name?: EntityName | JSDocMemberName;
6061        text: string;
6062    }
6063    interface JSDocLinkPlain extends Node {
6064        readonly kind: SyntaxKind.JSDocLinkPlain;
6065        readonly name?: EntityName | JSDocMemberName;
6066        text: string;
6067    }
6068    type JSDocComment = JSDocText | JSDocLink | JSDocLinkCode | JSDocLinkPlain;
6069    interface JSDocText extends Node {
6070        readonly kind: SyntaxKind.JSDocText;
6071        text: string;
6072    }
6073    interface JSDocUnknownTag extends JSDocTag {
6074        readonly kind: SyntaxKind.JSDocTag;
6075    }
6076    /**
6077     * Note that `@extends` is a synonym of `@augments`.
6078     * Both tags are represented by this interface.
6079     */
6080    interface JSDocAugmentsTag extends JSDocTag {
6081        readonly kind: SyntaxKind.JSDocAugmentsTag;
6082        readonly class: ExpressionWithTypeArguments & {
6083            readonly expression: Identifier | PropertyAccessEntityNameExpression;
6084        };
6085    }
6086    interface JSDocImplementsTag extends JSDocTag {
6087        readonly kind: SyntaxKind.JSDocImplementsTag;
6088        readonly class: ExpressionWithTypeArguments & {
6089            readonly expression: Identifier | PropertyAccessEntityNameExpression;
6090        };
6091    }
6092    interface JSDocAuthorTag extends JSDocTag {
6093        readonly kind: SyntaxKind.JSDocAuthorTag;
6094    }
6095    interface JSDocDeprecatedTag extends JSDocTag {
6096        kind: SyntaxKind.JSDocDeprecatedTag;
6097    }
6098    interface JSDocClassTag extends JSDocTag {
6099        readonly kind: SyntaxKind.JSDocClassTag;
6100    }
6101    interface JSDocPublicTag extends JSDocTag {
6102        readonly kind: SyntaxKind.JSDocPublicTag;
6103    }
6104    interface JSDocPrivateTag extends JSDocTag {
6105        readonly kind: SyntaxKind.JSDocPrivateTag;
6106    }
6107    interface JSDocProtectedTag extends JSDocTag {
6108        readonly kind: SyntaxKind.JSDocProtectedTag;
6109    }
6110    interface JSDocReadonlyTag extends JSDocTag {
6111        readonly kind: SyntaxKind.JSDocReadonlyTag;
6112    }
6113    interface JSDocOverrideTag extends JSDocTag {
6114        readonly kind: SyntaxKind.JSDocOverrideTag;
6115    }
6116    interface JSDocEnumTag extends JSDocTag, Declaration {
6117        readonly kind: SyntaxKind.JSDocEnumTag;
6118        readonly parent: JSDoc;
6119        readonly typeExpression: JSDocTypeExpression;
6120    }
6121    interface JSDocThisTag extends JSDocTag {
6122        readonly kind: SyntaxKind.JSDocThisTag;
6123        readonly typeExpression: JSDocTypeExpression;
6124    }
6125    interface JSDocTemplateTag extends JSDocTag {
6126        readonly kind: SyntaxKind.JSDocTemplateTag;
6127        readonly constraint: JSDocTypeExpression | undefined;
6128        readonly typeParameters: NodeArray<TypeParameterDeclaration>;
6129    }
6130    interface JSDocSeeTag extends JSDocTag {
6131        readonly kind: SyntaxKind.JSDocSeeTag;
6132        readonly name?: JSDocNameReference;
6133    }
6134    interface JSDocReturnTag extends JSDocTag {
6135        readonly kind: SyntaxKind.JSDocReturnTag;
6136        readonly typeExpression?: JSDocTypeExpression;
6137    }
6138    interface JSDocTypeTag extends JSDocTag {
6139        readonly kind: SyntaxKind.JSDocTypeTag;
6140        readonly typeExpression: JSDocTypeExpression;
6141    }
6142    interface JSDocTypedefTag extends JSDocTag, NamedDeclaration {
6143        readonly kind: SyntaxKind.JSDocTypedefTag;
6144        readonly parent: JSDoc;
6145        readonly fullName?: JSDocNamespaceDeclaration | Identifier;
6146        readonly name?: Identifier;
6147        readonly typeExpression?: JSDocTypeExpression | JSDocTypeLiteral;
6148    }
6149    interface JSDocCallbackTag extends JSDocTag, NamedDeclaration {
6150        readonly kind: SyntaxKind.JSDocCallbackTag;
6151        readonly parent: JSDoc;
6152        readonly fullName?: JSDocNamespaceDeclaration | Identifier;
6153        readonly name?: Identifier;
6154        readonly typeExpression: JSDocSignature;
6155    }
6156    interface JSDocSignature extends JSDocType, Declaration {
6157        readonly kind: SyntaxKind.JSDocSignature;
6158        readonly typeParameters?: readonly JSDocTemplateTag[];
6159        readonly parameters: readonly JSDocParameterTag[];
6160        readonly type: JSDocReturnTag | undefined;
6161    }
6162    interface JSDocPropertyLikeTag extends JSDocTag, Declaration {
6163        readonly parent: JSDoc;
6164        readonly name: EntityName;
6165        readonly typeExpression?: JSDocTypeExpression;
6166        /** Whether the property name came before the type -- non-standard for JSDoc, but Typescript-like */
6167        readonly isNameFirst: boolean;
6168        readonly isBracketed: boolean;
6169    }
6170    interface JSDocPropertyTag extends JSDocPropertyLikeTag {
6171        readonly kind: SyntaxKind.JSDocPropertyTag;
6172    }
6173    interface JSDocParameterTag extends JSDocPropertyLikeTag {
6174        readonly kind: SyntaxKind.JSDocParameterTag;
6175    }
6176    interface JSDocTypeLiteral extends JSDocType {
6177        readonly kind: SyntaxKind.JSDocTypeLiteral;
6178        readonly jsDocPropertyTags?: readonly JSDocPropertyLikeTag[];
6179        /** If true, then this type literal represents an *array* of its type. */
6180        readonly isArrayType: boolean;
6181    }
6182    enum FlowFlags {
6183        Unreachable = 1,
6184        Start = 2,
6185        BranchLabel = 4,
6186        LoopLabel = 8,
6187        Assignment = 16,
6188        TrueCondition = 32,
6189        FalseCondition = 64,
6190        SwitchClause = 128,
6191        ArrayMutation = 256,
6192        Call = 512,
6193        ReduceLabel = 1024,
6194        Referenced = 2048,
6195        Shared = 4096,
6196        Label = 12,
6197        Condition = 96
6198    }
6199    type FlowNode = FlowStart | FlowLabel | FlowAssignment | FlowCondition | FlowSwitchClause | FlowArrayMutation | FlowCall | FlowReduceLabel;
6200    interface FlowNodeBase {
6201        flags: FlowFlags;
6202        id?: number;
6203    }
6204    interface FlowStart extends FlowNodeBase {
6205        node?: FunctionExpression | ArrowFunction | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration;
6206    }
6207    interface FlowLabel extends FlowNodeBase {
6208        antecedents: FlowNode[] | undefined;
6209    }
6210    interface FlowAssignment extends FlowNodeBase {
6211        node: Expression | VariableDeclaration | BindingElement;
6212        antecedent: FlowNode;
6213    }
6214    interface FlowCall extends FlowNodeBase {
6215        node: CallExpression;
6216        antecedent: FlowNode;
6217    }
6218    interface FlowCondition extends FlowNodeBase {
6219        node: Expression;
6220        antecedent: FlowNode;
6221    }
6222    interface FlowSwitchClause extends FlowNodeBase {
6223        switchStatement: SwitchStatement;
6224        clauseStart: number;
6225        clauseEnd: number;
6226        antecedent: FlowNode;
6227    }
6228    interface FlowArrayMutation extends FlowNodeBase {
6229        node: CallExpression | BinaryExpression;
6230        antecedent: FlowNode;
6231    }
6232    interface FlowReduceLabel extends FlowNodeBase {
6233        target: FlowLabel;
6234        antecedents: FlowNode[];
6235        antecedent: FlowNode;
6236    }
6237    type FlowType = Type | IncompleteType;
6238    interface IncompleteType {
6239        flags: TypeFlags;
6240        type: Type;
6241    }
6242    interface AmdDependency {
6243        path: string;
6244        name?: string;
6245    }
6246    /**
6247     * Subset of properties from SourceFile that are used in multiple utility functions
6248     */
6249    interface SourceFileLike {
6250        readonly text: string;
6251        readonly fileName?: string;
6252    }
6253    interface SourceFileLike {
6254        getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
6255    }
6256    interface SourceFile extends Declaration {
6257        readonly kind: SyntaxKind.SourceFile;
6258        readonly statements: NodeArray<Statement>;
6259        readonly endOfFileToken: Token<SyntaxKind.EndOfFileToken>;
6260        fileName: string;
6261        text: string;
6262        amdDependencies: readonly AmdDependency[];
6263        moduleName?: string;
6264        referencedFiles: readonly FileReference[];
6265        typeReferenceDirectives: readonly FileReference[];
6266        libReferenceDirectives: readonly FileReference[];
6267        languageVariant: LanguageVariant;
6268        isDeclarationFile: boolean;
6269        /**
6270         * lib.d.ts should have a reference comment like
6271         *
6272         *  /// <reference no-default-lib="true"/>
6273         *
6274         * If any other file has this comment, it signals not to include lib.d.ts
6275         * because this containing file is intended to act as a default library.
6276         */
6277        hasNoDefaultLib: boolean;
6278        languageVersion: ScriptTarget;
6279        /**
6280         * When `module` is `Node16` or `NodeNext`, this field controls whether the
6281         * source file in question is an ESNext-output-format file, or a CommonJS-output-format
6282         * module. This is derived by the module resolver as it looks up the file, since
6283         * it is derived from either the file extension of the module, or the containing
6284         * `package.json` context, and affects both checking and emit.
6285         *
6286         * It is _public_ so that (pre)transformers can set this field,
6287         * since it switches the builtin `node` module transform. Generally speaking, if unset,
6288         * the field is treated as though it is `ModuleKind.CommonJS`.
6289         *
6290         * Note that this field is only set by the module resolution process when
6291         * `moduleResolution` is `Node16` or `NodeNext`, which is implied by the `module` setting
6292         * of `Node16` or `NodeNext`, respectively, but may be overriden (eg, by a `moduleResolution`
6293         * of `node`). If so, this field will be unset and source files will be considered to be
6294         * CommonJS-output-format by the node module transformer and type checker, regardless of extension or context.
6295         */
6296        impliedNodeFormat?: ModuleKind.ESNext | ModuleKind.CommonJS;
6297    }
6298    interface SourceFile {
6299        getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
6300        getLineEndOfPosition(pos: number): number;
6301        getLineStarts(): readonly number[];
6302        getPositionOfLineAndCharacter(line: number, character: number): number;
6303        update(newText: string, textChangeRange: TextChangeRange): SourceFile;
6304    }
6305    interface Bundle extends Node {
6306        readonly kind: SyntaxKind.Bundle;
6307        readonly prepends: readonly (InputFiles | UnparsedSource)[];
6308        readonly sourceFiles: readonly SourceFile[];
6309    }
6310    interface InputFiles extends Node {
6311        readonly kind: SyntaxKind.InputFiles;
6312        javascriptPath?: string;
6313        javascriptText: string;
6314        javascriptMapPath?: string;
6315        javascriptMapText?: string;
6316        declarationPath?: string;
6317        declarationText: string;
6318        declarationMapPath?: string;
6319        declarationMapText?: string;
6320    }
6321    interface UnparsedSource extends Node {
6322        readonly kind: SyntaxKind.UnparsedSource;
6323        fileName: string;
6324        text: string;
6325        readonly prologues: readonly UnparsedPrologue[];
6326        helpers: readonly UnscopedEmitHelper[] | undefined;
6327        referencedFiles: readonly FileReference[];
6328        typeReferenceDirectives: readonly FileReference[] | undefined;
6329        libReferenceDirectives: readonly FileReference[];
6330        hasNoDefaultLib?: boolean;
6331        sourceMapPath?: string;
6332        sourceMapText?: string;
6333        readonly syntheticReferences?: readonly UnparsedSyntheticReference[];
6334        readonly texts: readonly UnparsedSourceText[];
6335    }
6336    type UnparsedSourceText = UnparsedPrepend | UnparsedTextLike;
6337    type UnparsedNode = UnparsedPrologue | UnparsedSourceText | UnparsedSyntheticReference;
6338    interface UnparsedSection extends Node {
6339        readonly kind: SyntaxKind;
6340        readonly parent: UnparsedSource;
6341        readonly data?: string;
6342    }
6343    interface UnparsedPrologue extends UnparsedSection {
6344        readonly kind: SyntaxKind.UnparsedPrologue;
6345        readonly parent: UnparsedSource;
6346        readonly data: string;
6347    }
6348    interface UnparsedPrepend extends UnparsedSection {
6349        readonly kind: SyntaxKind.UnparsedPrepend;
6350        readonly parent: UnparsedSource;
6351        readonly data: string;
6352        readonly texts: readonly UnparsedTextLike[];
6353    }
6354    interface UnparsedTextLike extends UnparsedSection {
6355        readonly kind: SyntaxKind.UnparsedText | SyntaxKind.UnparsedInternalText;
6356        readonly parent: UnparsedSource;
6357    }
6358    interface UnparsedSyntheticReference extends UnparsedSection {
6359        readonly kind: SyntaxKind.UnparsedSyntheticReference;
6360        readonly parent: UnparsedSource;
6361    }
6362    interface JsonSourceFile extends SourceFile {
6363        readonly statements: NodeArray<JsonObjectExpressionStatement>;
6364    }
6365    interface TsConfigSourceFile extends JsonSourceFile {
6366        extendedSourceFiles?: string[];
6367    }
6368    interface JsonMinusNumericLiteral extends PrefixUnaryExpression {
6369        readonly kind: SyntaxKind.PrefixUnaryExpression;
6370        readonly operator: SyntaxKind.MinusToken;
6371        readonly operand: NumericLiteral;
6372    }
6373    type JsonObjectExpression = ObjectLiteralExpression | ArrayLiteralExpression | JsonMinusNumericLiteral | NumericLiteral | StringLiteral | BooleanLiteral | NullLiteral;
6374    interface JsonObjectExpressionStatement extends ExpressionStatement {
6375        readonly expression: JsonObjectExpression;
6376    }
6377    interface ScriptReferenceHost {
6378        getCompilerOptions(): CompilerOptions;
6379        getSourceFile(fileName: string): SourceFile | undefined;
6380        getSourceFileByPath(path: Path): SourceFile | undefined;
6381        getCurrentDirectory(): string;
6382    }
6383    interface ParseConfigHost {
6384        useCaseSensitiveFileNames: boolean;
6385        readDirectory(rootDir: string, extensions: readonly string[], excludes: readonly string[] | undefined, includes: readonly string[], depth?: number): readonly string[];
6386        /**
6387         * Gets a value indicating whether the specified path exists and is a file.
6388         * @param path The path to test.
6389         */
6390        fileExists(path: string): boolean;
6391        readFile(path: string): string | undefined;
6392        trace?(s: string): void;
6393    }
6394    /**
6395     * Branded string for keeping track of when we've turned an ambiguous path
6396     * specified like "./blah" to an absolute path to an actual
6397     * tsconfig file, e.g. "/root/blah/tsconfig.json"
6398     */
6399    type ResolvedConfigFileName = string & {
6400        _isResolvedConfigFileName: never;
6401    };
6402    interface WriteFileCallbackData {
6403    }
6404    type WriteFileCallback = (fileName: string, text: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: readonly SourceFile[], data?: WriteFileCallbackData) => void;
6405    class OperationCanceledException {
6406    }
6407    interface CancellationToken {
6408        isCancellationRequested(): boolean;
6409        /** OperationCanceledException if isCancellationRequested is true */
6410        throwIfCancellationRequested(): void;
6411    }
6412    interface SymbolDisplayPart {
6413        text: string;
6414        kind: string;
6415    }
6416    interface SymbolDisplayPart {
6417        text: string;
6418        kind: string;
6419    }
6420    interface JsDocTagInfo {
6421        name: string;
6422        text?: string | SymbolDisplayPart[];
6423    }
6424    interface Program extends ScriptReferenceHost {
6425        getCurrentDirectory(): string;
6426        /**
6427         * Get a list of root file names that were passed to a 'createProgram'
6428         */
6429        getRootFileNames(): readonly string[];
6430        /**
6431         * Get a list of files in the program
6432         */
6433        getSourceFiles(): readonly SourceFile[];
6434        /**
6435         * Emits the JavaScript and declaration files.  If targetSourceFile is not specified, then
6436         * the JavaScript and declaration files will be produced for all the files in this program.
6437         * If targetSourceFile is specified, then only the JavaScript and declaration for that
6438         * specific file will be generated.
6439         *
6440         * If writeFile is not specified then the writeFile callback from the compiler host will be
6441         * used for writing the JavaScript and declaration files.  Otherwise, the writeFile parameter
6442         * will be invoked when writing the JavaScript and declaration files.
6443         */
6444        emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult;
6445        getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
6446        getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
6447        getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[];
6448        /** The first time this is called, it will return global diagnostics (no location). */
6449        getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
6450        getSemanticDiagnosticsForLinter(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
6451        getDeclarationDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[];
6452        getConfigFileParsingDiagnostics(): readonly Diagnostic[];
6453        getEtsLibSFromProgram(): string[];
6454        /**
6455         * Gets a type checker that can be used to semantically analyze source files in the program.
6456         */
6457        getTypeChecker(): TypeChecker;
6458        /**
6459         * Gets a type checker that can be used to semantically analyze source files in the program for arkts linter.
6460         */
6461        getLinterTypeChecker(): TypeChecker;
6462        getNodeCount(): number;
6463        getIdentifierCount(): number;
6464        getSymbolCount(): number;
6465        getTypeCount(): number;
6466        getInstantiationCount(): number;
6467        getRelationCacheSizes(): {
6468            assignable: number;
6469            identity: number;
6470            subtype: number;
6471            strictSubtype: number;
6472        };
6473        isSourceFileFromExternalLibrary(file: SourceFile): boolean;
6474        isSourceFileDefaultLibrary(file: SourceFile): boolean;
6475        getSourceFileFromReference(referencingFile: SourceFile | UnparsedSource, ref: FileReference): SourceFile | undefined;
6476        getProjectReferences(): readonly ProjectReference[] | undefined;
6477        getResolvedProjectReferences(): readonly (ResolvedProjectReference | undefined)[] | undefined;
6478        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
6479        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocTagInfos: JsDocTagInfo[], jsDocs?: JSDoc[]): ConditionCheckResult;
6480        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
6481        /**
6482         * Release typeChecker & linterTypeChecker
6483         */
6484        releaseTypeChecker(): void;
6485        getEmitHost(writeFileCallback?: WriteFileCallback): EmitHost;
6486        refreshTypeChecker(): void;
6487        setProgramSourceFiles(file: SourceFile): void;
6488        initProcessingFiles(): void;
6489        processImportedModules(file: SourceFile): void;
6490        getProcessingFiles(): SourceFile[] | undefined;
6491        deleteProgramSourceFiles(fileNames: string[]): void;
6492    }
6493    type RedirectTargetsMap = ReadonlyESMap<Path, readonly string[]>;
6494    interface ResolvedProjectReference {
6495        commandLine: ParsedCommandLine;
6496        sourceFile: SourceFile;
6497        references?: readonly (ResolvedProjectReference | undefined)[];
6498    }
6499    type CustomTransformerFactory = (context: TransformationContext) => CustomTransformer;
6500    interface CustomTransformer {
6501        transformSourceFile(node: SourceFile): SourceFile;
6502        transformBundle(node: Bundle): Bundle;
6503    }
6504    interface CustomTransformers {
6505        /** Custom transformers to evaluate before built-in .js transformations. */
6506        before?: (TransformerFactory<SourceFile> | CustomTransformerFactory)[];
6507        /** Custom transformers to evaluate after built-in .js transformations. */
6508        after?: (TransformerFactory<SourceFile> | CustomTransformerFactory)[];
6509        /** Custom transformers to evaluate after built-in .d.ts transformations. */
6510        afterDeclarations?: (TransformerFactory<Bundle | SourceFile> | CustomTransformerFactory)[];
6511    }
6512    interface SourceMapSpan {
6513        /** Line number in the .js file. */
6514        emittedLine: number;
6515        /** Column number in the .js file. */
6516        emittedColumn: number;
6517        /** Line number in the .ts file. */
6518        sourceLine: number;
6519        /** Column number in the .ts file. */
6520        sourceColumn: number;
6521        /** Optional name (index into names array) associated with this span. */
6522        nameIndex?: number;
6523        /** .ts file (index into sources array) associated with this span */
6524        sourceIndex: number;
6525    }
6526    /** Return code used by getEmitOutput function to indicate status of the function */
6527    enum ExitStatus {
6528        Success = 0,
6529        DiagnosticsPresent_OutputsSkipped = 1,
6530        DiagnosticsPresent_OutputsGenerated = 2,
6531        InvalidProject_OutputsSkipped = 3,
6532        ProjectReferenceCycle_OutputsSkipped = 4,
6533        /** @deprecated Use ProjectReferenceCycle_OutputsSkipped instead. */
6534        ProjectReferenceCycle_OutputsSkupped = 4
6535    }
6536    interface EmitResult {
6537        emitSkipped: boolean;
6538        /** Contains declaration emit diagnostics */
6539        diagnostics: readonly Diagnostic[];
6540        emittedFiles?: string[];
6541    }
6542    interface TypeChecker {
6543        getTypeOfSymbolAtLocation(symbol: Symbol, node: Node): Type;
6544        getDeclaredTypeOfSymbol(symbol: Symbol): Type;
6545        getPropertiesOfType(type: Type): Symbol[];
6546        getPropertyOfType(type: Type, propertyName: string): Symbol | undefined;
6547        getPrivateIdentifierPropertyOfType(leftType: Type, name: string, location: Node): Symbol | undefined;
6548        getIndexInfoOfType(type: Type, kind: IndexKind): IndexInfo | undefined;
6549        getIndexInfosOfType(type: Type): readonly IndexInfo[];
6550        getIndexInfosOfIndexSymbol: (indexSymbol: Symbol) => IndexInfo[];
6551        getSignaturesOfType(type: Type, kind: SignatureKind): readonly Signature[];
6552        getIndexTypeOfType(type: Type, kind: IndexKind): Type | undefined;
6553        getBaseTypes(type: InterfaceType): BaseType[];
6554        getBaseTypeOfLiteralType(type: Type): Type;
6555        getWidenedType(type: Type): Type;
6556        getReturnTypeOfSignature(signature: Signature): Type;
6557        getNullableType(type: Type, flags: TypeFlags): Type;
6558        getNonNullableType(type: Type): Type;
6559        getTypeArguments(type: TypeReference): readonly Type[];
6560        /** Note that the resulting nodes cannot be checked. */
6561        typeToTypeNode(type: Type, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): TypeNode | undefined;
6562        /** Note that the resulting nodes cannot be checked. */
6563        signatureToSignatureDeclaration(signature: Signature, kind: SyntaxKind, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): SignatureDeclaration & {
6564            typeArguments?: NodeArray<TypeNode>;
6565        } | undefined;
6566        /** Note that the resulting nodes cannot be checked. */
6567        indexInfoToIndexSignatureDeclaration(indexInfo: IndexInfo, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): IndexSignatureDeclaration | undefined;
6568        /** Note that the resulting nodes cannot be checked. */
6569        symbolToEntityName(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): EntityName | undefined;
6570        /** Note that the resulting nodes cannot be checked. */
6571        symbolToExpression(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): Expression | undefined;
6572        /** Note that the resulting nodes cannot be checked. */
6573        symbolToTypeParameterDeclarations(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): NodeArray<TypeParameterDeclaration> | undefined;
6574        /** Note that the resulting nodes cannot be checked. */
6575        symbolToParameterDeclaration(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): ParameterDeclaration | undefined;
6576        /** Note that the resulting nodes cannot be checked. */
6577        typeParameterToDeclaration(parameter: TypeParameter, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): TypeParameterDeclaration | undefined;
6578        getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[];
6579        getSymbolAtLocation(node: Node): Symbol | undefined;
6580        getSymbolsOfParameterPropertyDeclaration(parameter: ParameterDeclaration, parameterName: string): Symbol[];
6581        /**
6582         * The function returns the value (local variable) symbol of an identifier in the short-hand property assignment.
6583         * This is necessary as an identifier in short-hand property assignment can contains two meaning: property name and property value.
6584         */
6585        getShorthandAssignmentValueSymbol(location: Node | undefined): Symbol | undefined;
6586        getExportSpecifierLocalTargetSymbol(location: ExportSpecifier | Identifier): Symbol | undefined;
6587        /**
6588         * If a symbol is a local symbol with an associated exported symbol, returns the exported symbol.
6589         * Otherwise returns its input.
6590         * For example, at `export type T = number;`:
6591         *     - `getSymbolAtLocation` at the location `T` will return the exported symbol for `T`.
6592         *     - But the result of `getSymbolsInScope` will contain the *local* symbol for `T`, not the exported symbol.
6593         *     - Calling `getExportSymbolOfSymbol` on that local symbol will return the exported symbol.
6594         */
6595        getExportSymbolOfSymbol(symbol: Symbol): Symbol;
6596        getPropertySymbolOfDestructuringAssignment(location: Identifier): Symbol | undefined;
6597        getTypeOfAssignmentPattern(pattern: AssignmentPattern): Type;
6598        getTypeAtLocation(node: Node): Type;
6599        tryGetTypeAtLocationWithoutCheck(node: Node): Type;
6600        getTypeFromTypeNode(node: TypeNode): Type;
6601        signatureToString(signature: Signature, enclosingDeclaration?: Node, flags?: TypeFormatFlags, kind?: SignatureKind): string;
6602        typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string;
6603        symbolToString(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags, flags?: SymbolFormatFlags): string;
6604        typePredicateToString(predicate: TypePredicate, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string;
6605        getFullyQualifiedName(symbol: Symbol): string;
6606        getAugmentedPropertiesOfType(type: Type): Symbol[];
6607        getRootSymbols(symbol: Symbol): readonly Symbol[];
6608        getSymbolOfExpando(node: Node, allowDeclaration: boolean): Symbol | undefined;
6609        getContextualType(node: Expression): Type | undefined;
6610        /**
6611         * returns unknownSignature in the case of an error.
6612         * returns undefined if the node is not valid.
6613         * @param argumentCount Apparent number of arguments, passed in case of a possibly incomplete call. This should come from an ArgumentListInfo. See `signatureHelp.ts`.
6614         */
6615        getResolvedSignature(node: CallLikeExpression, candidatesOutArray?: Signature[], argumentCount?: number): Signature | undefined;
6616        tryGetResolvedSignatureWithoutCheck(node: CallLikeExpression, candidatesOutArray?: Signature[], argumentCount?: number): Signature | undefined;
6617        getSignatureFromDeclaration(declaration: SignatureDeclaration): Signature | undefined;
6618        isImplementationOfOverload(node: SignatureDeclaration): boolean | undefined;
6619        isUndefinedSymbol(symbol: Symbol): boolean;
6620        isArgumentsSymbol(symbol: Symbol): boolean;
6621        isUnknownSymbol(symbol: Symbol): boolean;
6622        getMergedSymbol(symbol: Symbol): Symbol;
6623        getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): string | number | undefined;
6624        isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName | ImportTypeNode, propertyName: string): boolean;
6625        /** Follow all aliases to get the original symbol. */
6626        getAliasedSymbol(symbol: Symbol): Symbol;
6627        /** Follow a *single* alias to get the immediately aliased symbol. */
6628        getImmediateAliasedSymbol(symbol: Symbol): Symbol | undefined;
6629        getExportsOfModule(moduleSymbol: Symbol): Symbol[];
6630        getJsxIntrinsicTagNamesAt(location: Node): Symbol[];
6631        isOptionalParameter(node: ParameterDeclaration): boolean;
6632        getAmbientModules(): Symbol[];
6633        tryGetMemberInModuleExports(memberName: string, moduleSymbol: Symbol): Symbol | undefined;
6634        getApparentType(type: Type): Type;
6635        getBaseConstraintOfType(type: Type): Type | undefined;
6636        getDefaultFromTypeParameter(type: Type): Type | undefined;
6637        getTypePredicateOfSignature(signature: Signature): TypePredicate | undefined;
6638        /**
6639         * Depending on the operation performed, it may be appropriate to throw away the checker
6640         * if the cancellation token is triggered. Typically, if it is used for error checking
6641         * and the operation is cancelled, then it should be discarded, otherwise it is safe to keep.
6642         */
6643        runWithCancellationToken<T>(token: CancellationToken, cb: (checker: TypeChecker) => T): T;
6644        getConstEnumRelate?(): ESMap<string, ESMap<string, string>>;
6645        clearConstEnumRelate?(): void;
6646        deleteConstEnumRelate?(path: string): void;
6647        getTypeArgumentsForResolvedSignature(signature: Signature): readonly Type[] | undefined;
6648        getCheckedSourceFiles(): Set<SourceFile>;
6649        collectHaveTsNoCheckFilesForLinter(sourceFile: SourceFile): void;
6650        clearQualifiedNameCache?(): void;
6651        isStaticRecord?(type: Type): boolean;
6652        isStaticSourceFile?(sourceFile: SourceFile | undefined): boolean;
6653        createIntrinsicType?(kind: TypeFlags, intrinsicName: string, objectFlags?: ObjectFlags): Type;
6654    }
6655    enum NodeBuilderFlags {
6656        None = 0,
6657        NoTruncation = 1,
6658        WriteArrayAsGenericType = 2,
6659        GenerateNamesForShadowedTypeParams = 4,
6660        UseStructuralFallback = 8,
6661        ForbidIndexedAccessSymbolReferences = 16,
6662        WriteTypeArgumentsOfSignature = 32,
6663        UseFullyQualifiedType = 64,
6664        UseOnlyExternalAliasing = 128,
6665        SuppressAnyReturnType = 256,
6666        WriteTypeParametersInQualifiedName = 512,
6667        MultilineObjectLiterals = 1024,
6668        WriteClassExpressionAsTypeLiteral = 2048,
6669        UseTypeOfFunction = 4096,
6670        OmitParameterModifiers = 8192,
6671        UseAliasDefinedOutsideCurrentScope = 16384,
6672        UseSingleQuotesForStringLiteralType = 268435456,
6673        NoTypeReduction = 536870912,
6674        OmitThisParameter = 33554432,
6675        AllowThisInObjectLiteral = 32768,
6676        AllowQualifiedNameInPlaceOfIdentifier = 65536,
6677        /** @deprecated AllowQualifedNameInPlaceOfIdentifier. Use AllowQualifiedNameInPlaceOfIdentifier instead. */
6678        AllowQualifedNameInPlaceOfIdentifier = 65536,
6679        AllowAnonymousIdentifier = 131072,
6680        AllowEmptyUnionOrIntersection = 262144,
6681        AllowEmptyTuple = 524288,
6682        AllowUniqueESSymbolType = 1048576,
6683        AllowEmptyIndexInfoType = 2097152,
6684        AllowNodeModulesRelativePaths = 67108864,
6685        IgnoreErrors = 70221824,
6686        InObjectTypeLiteral = 4194304,
6687        InTypeAlias = 8388608,
6688        InInitialEntityName = 16777216
6689    }
6690    enum TypeFormatFlags {
6691        None = 0,
6692        NoTruncation = 1,
6693        WriteArrayAsGenericType = 2,
6694        UseStructuralFallback = 8,
6695        WriteTypeArgumentsOfSignature = 32,
6696        UseFullyQualifiedType = 64,
6697        SuppressAnyReturnType = 256,
6698        MultilineObjectLiterals = 1024,
6699        WriteClassExpressionAsTypeLiteral = 2048,
6700        UseTypeOfFunction = 4096,
6701        OmitParameterModifiers = 8192,
6702        UseAliasDefinedOutsideCurrentScope = 16384,
6703        UseSingleQuotesForStringLiteralType = 268435456,
6704        NoTypeReduction = 536870912,
6705        OmitThisParameter = 33554432,
6706        AllowUniqueESSymbolType = 1048576,
6707        AddUndefined = 131072,
6708        WriteArrowStyleSignature = 262144,
6709        InArrayType = 524288,
6710        InElementType = 2097152,
6711        InFirstTypeArgument = 4194304,
6712        InTypeAlias = 8388608,
6713        /** @deprecated */ WriteOwnNameForAnyLike = 0,
6714        NodeBuilderFlagsMask = 848330091
6715    }
6716    enum SymbolFormatFlags {
6717        None = 0,
6718        WriteTypeParametersOrArguments = 1,
6719        UseOnlyExternalAliasing = 2,
6720        AllowAnyNodeKind = 4,
6721        UseAliasDefinedOutsideCurrentScope = 8
6722    }
6723    interface SymbolWriter extends SymbolTracker {
6724        writeKeyword(text: string): void;
6725        writeOperator(text: string): void;
6726        writePunctuation(text: string): void;
6727        writeSpace(text: string): void;
6728        writeStringLiteral(text: string): void;
6729        writeParameter(text: string): void;
6730        writeProperty(text: string): void;
6731        writeSymbol(text: string, symbol: Symbol): void;
6732        writeLine(force?: boolean): void;
6733        increaseIndent(): void;
6734        decreaseIndent(): void;
6735        clear(): void;
6736    }
6737    enum TypePredicateKind {
6738        This = 0,
6739        Identifier = 1,
6740        AssertsThis = 2,
6741        AssertsIdentifier = 3
6742    }
6743    interface TypePredicateBase {
6744        kind: TypePredicateKind;
6745        type: Type | undefined;
6746    }
6747    interface ThisTypePredicate extends TypePredicateBase {
6748        kind: TypePredicateKind.This;
6749        parameterName: undefined;
6750        parameterIndex: undefined;
6751        type: Type;
6752    }
6753    interface IdentifierTypePredicate extends TypePredicateBase {
6754        kind: TypePredicateKind.Identifier;
6755        parameterName: string;
6756        parameterIndex: number;
6757        type: Type;
6758    }
6759    interface AssertsThisTypePredicate extends TypePredicateBase {
6760        kind: TypePredicateKind.AssertsThis;
6761        parameterName: undefined;
6762        parameterIndex: undefined;
6763        type: Type | undefined;
6764    }
6765    interface AssertsIdentifierTypePredicate extends TypePredicateBase {
6766        kind: TypePredicateKind.AssertsIdentifier;
6767        parameterName: string;
6768        parameterIndex: number;
6769        type: Type | undefined;
6770    }
6771    type TypePredicate = ThisTypePredicate | IdentifierTypePredicate | AssertsThisTypePredicate | AssertsIdentifierTypePredicate;
6772    enum SymbolFlags {
6773        None = 0,
6774        FunctionScopedVariable = 1,
6775        BlockScopedVariable = 2,
6776        Property = 4,
6777        EnumMember = 8,
6778        Function = 16,
6779        Class = 32,
6780        Interface = 64,
6781        ConstEnum = 128,
6782        RegularEnum = 256,
6783        ValueModule = 512,
6784        NamespaceModule = 1024,
6785        TypeLiteral = 2048,
6786        ObjectLiteral = 4096,
6787        Method = 8192,
6788        Constructor = 16384,
6789        GetAccessor = 32768,
6790        SetAccessor = 65536,
6791        Signature = 131072,
6792        TypeParameter = 262144,
6793        TypeAlias = 524288,
6794        ExportValue = 1048576,
6795        Alias = 2097152,
6796        Prototype = 4194304,
6797        ExportStar = 8388608,
6798        Optional = 16777216,
6799        Transient = 33554432,
6800        Assignment = 67108864,
6801        ModuleExports = 134217728,
6802        Annotation = 268435456,
6803        Enum = 384,
6804        Variable = 3,
6805        Value = 111551,
6806        Type = 788968,
6807        Namespace = 1920,
6808        Module = 1536,
6809        Accessor = 98304,
6810        FunctionScopedVariableExcludes = 111550,
6811        BlockScopedVariableExcludes = 111551,
6812        ParameterExcludes = 111551,
6813        PropertyExcludes = 0,
6814        EnumMemberExcludes = 900095,
6815        FunctionExcludes = 110991,
6816        ClassExcludes = 899503,
6817        InterfaceExcludes = 788872,
6818        RegularEnumExcludes = 899327,
6819        ConstEnumExcludes = 899967,
6820        ValueModuleExcludes = 110735,
6821        NamespaceModuleExcludes = 0,
6822        MethodExcludes = 103359,
6823        GetAccessorExcludes = 46015,
6824        SetAccessorExcludes = 78783,
6825        AccessorExcludes = 13247,
6826        TypeParameterExcludes = 526824,
6827        TypeAliasExcludes = 788968,
6828        AliasExcludes = 2097152,
6829        ModuleMember = 2623475,
6830        ExportHasLocal = 944,
6831        BlockScoped = 418,
6832        PropertyOrAccessor = 98308,
6833        ClassMember = 106500
6834    }
6835    interface Symbol {
6836        flags: SymbolFlags;
6837        escapedName: __String;
6838        declarations?: Declaration[];
6839        valueDeclaration?: Declaration;
6840        members?: SymbolTable;
6841        exports?: SymbolTable;
6842        globalExports?: SymbolTable;
6843        exportSymbol?: Symbol;
6844    }
6845    interface Symbol {
6846        readonly name: string;
6847        getFlags(): SymbolFlags;
6848        getEscapedName(): __String;
6849        getName(): string;
6850        getDeclarations(): Declaration[] | undefined;
6851        getDocumentationComment(typeChecker: TypeChecker | undefined): SymbolDisplayPart[];
6852        getJsDocTags(checker?: TypeChecker): JSDocTagInfo[];
6853    }
6854    enum InternalSymbolName {
6855        Call = "__call",
6856        Constructor = "__constructor",
6857        New = "__new",
6858        Index = "__index",
6859        ExportStar = "__export",
6860        Global = "__global",
6861        Missing = "__missing",
6862        Type = "__type",
6863        Object = "__object",
6864        JSXAttributes = "__jsxAttributes",
6865        Class = "__class",
6866        Function = "__function",
6867        Computed = "__computed",
6868        Resolving = "__resolving__",
6869        ExportEquals = "export=",
6870        Default = "default",
6871        This = "this"
6872    }
6873    /**
6874     * This represents a string whose leading underscore have been escaped by adding extra leading underscores.
6875     * The shape of this brand is rather unique compared to others we've used.
6876     * Instead of just an intersection of a string and an object, it is that union-ed
6877     * with an intersection of void and an object. This makes it wholly incompatible
6878     * with a normal string (which is good, it cannot be misused on assignment or on usage),
6879     * while still being comparable with a normal string via === (also good) and castable from a string.
6880     */
6881    type __String = (string & {
6882        __escapedIdentifier: void;
6883    }) | (void & {
6884        __escapedIdentifier: void;
6885    }) | InternalSymbolName;
6886    /** ReadonlyMap where keys are `__String`s. */
6887    interface ReadonlyUnderscoreEscapedMap<T> extends ReadonlyESMap<__String, T> {
6888    }
6889    /** Map where keys are `__String`s. */
6890    interface UnderscoreEscapedMap<T> extends ESMap<__String, T>, ReadonlyUnderscoreEscapedMap<T> {
6891    }
6892    /** SymbolTable based on ES6 Map interface. */
6893    type SymbolTable = UnderscoreEscapedMap<Symbol>;
6894    enum TypeFlags {
6895        Any = 1,
6896        Unknown = 2,
6897        String = 4,
6898        Number = 8,
6899        Boolean = 16,
6900        Enum = 32,
6901        BigInt = 64,
6902        StringLiteral = 128,
6903        NumberLiteral = 256,
6904        BooleanLiteral = 512,
6905        EnumLiteral = 1024,
6906        BigIntLiteral = 2048,
6907        ESSymbol = 4096,
6908        UniqueESSymbol = 8192,
6909        Void = 16384,
6910        Undefined = 32768,
6911        Null = 65536,
6912        Never = 131072,
6913        TypeParameter = 262144,
6914        Object = 524288,
6915        Union = 1048576,
6916        Intersection = 2097152,
6917        Index = 4194304,
6918        IndexedAccess = 8388608,
6919        Conditional = 16777216,
6920        Substitution = 33554432,
6921        NonPrimitive = 67108864,
6922        TemplateLiteral = 134217728,
6923        StringMapping = 268435456,
6924        Literal = 2944,
6925        Unit = 109440,
6926        StringOrNumberLiteral = 384,
6927        PossiblyFalsy = 117724,
6928        StringLike = 402653316,
6929        NumberLike = 296,
6930        BigIntLike = 2112,
6931        BooleanLike = 528,
6932        EnumLike = 1056,
6933        ESSymbolLike = 12288,
6934        VoidLike = 49152,
6935        UnionOrIntersection = 3145728,
6936        StructuredType = 3670016,
6937        TypeVariable = 8650752,
6938        InstantiableNonPrimitive = 58982400,
6939        InstantiablePrimitive = 406847488,
6940        Instantiable = 465829888,
6941        StructuredOrInstantiable = 469499904,
6942        Narrowable = 536624127
6943    }
6944    type DestructuringPattern = BindingPattern | ObjectLiteralExpression | ArrayLiteralExpression;
6945    interface Type {
6946        flags: TypeFlags;
6947        symbol: Symbol;
6948        pattern?: DestructuringPattern;
6949        aliasSymbol?: Symbol;
6950        aliasTypeArguments?: readonly Type[];
6951    }
6952    interface Type {
6953        getFlags(): TypeFlags;
6954        getSymbol(): Symbol | undefined;
6955        getProperties(): Symbol[];
6956        getProperty(propertyName: string): Symbol | undefined;
6957        getApparentProperties(): Symbol[];
6958        getCallSignatures(): readonly Signature[];
6959        getConstructSignatures(): readonly Signature[];
6960        getStringIndexType(): Type | undefined;
6961        getNumberIndexType(): Type | undefined;
6962        getBaseTypes(): BaseType[] | undefined;
6963        getNonNullableType(): Type;
6964        getConstraint(): Type | undefined;
6965        getDefault(): Type | undefined;
6966        isUnion(): this is UnionType;
6967        isIntersection(): this is IntersectionType;
6968        isUnionOrIntersection(): this is UnionOrIntersectionType;
6969        isLiteral(): this is LiteralType;
6970        isStringLiteral(): this is StringLiteralType;
6971        isNumberLiteral(): this is NumberLiteralType;
6972        isTypeParameter(): this is TypeParameter;
6973        isClassOrInterface(): this is InterfaceType;
6974        isClass(): this is InterfaceType;
6975        isIndexType(): this is IndexType;
6976    }
6977    interface LiteralType extends Type {
6978        value: string | number | PseudoBigInt;
6979        freshType: LiteralType;
6980        regularType: LiteralType;
6981    }
6982    interface UniqueESSymbolType extends Type {
6983        symbol: Symbol;
6984        escapedName: __String;
6985    }
6986    interface StringLiteralType extends LiteralType {
6987        value: string;
6988    }
6989    interface NumberLiteralType extends LiteralType {
6990        value: number;
6991    }
6992    interface BigIntLiteralType extends LiteralType {
6993        value: PseudoBigInt;
6994    }
6995    interface EnumType extends Type {
6996    }
6997    enum ObjectFlags {
6998        Class = 1,
6999        Interface = 2,
7000        Reference = 4,
7001        Tuple = 8,
7002        Anonymous = 16,
7003        Mapped = 32,
7004        Instantiated = 64,
7005        ObjectLiteral = 128,
7006        EvolvingArray = 256,
7007        ObjectLiteralPatternWithComputedProperties = 512,
7008        ReverseMapped = 1024,
7009        JsxAttributes = 2048,
7010        JSLiteral = 4096,
7011        FreshLiteral = 8192,
7012        ArrayLiteral = 16384,
7013        Annotation = 134217728,
7014        ClassOrInterface = 3,
7015        ContainsSpread = 2097152,
7016        ObjectRestType = 4194304,
7017        InstantiationExpressionType = 8388608
7018    }
7019    interface ObjectType extends Type {
7020        objectFlags: ObjectFlags;
7021    }
7022    /** Class and interface types (ObjectFlags.Class and ObjectFlags.Interface). */
7023    interface InterfaceType extends ObjectType {
7024        typeParameters: TypeParameter[] | undefined;
7025        outerTypeParameters: TypeParameter[] | undefined;
7026        localTypeParameters: TypeParameter[] | undefined;
7027        thisType: TypeParameter | undefined;
7028    }
7029    type BaseType = ObjectType | IntersectionType | TypeVariable;
7030    interface InterfaceTypeWithDeclaredMembers extends InterfaceType {
7031        declaredProperties: Symbol[];
7032        declaredCallSignatures: Signature[];
7033        declaredConstructSignatures: Signature[];
7034        declaredIndexInfos: IndexInfo[];
7035    }
7036    /**
7037     * Type references (ObjectFlags.Reference). When a class or interface has type parameters or
7038     * a "this" type, references to the class or interface are made using type references. The
7039     * typeArguments property specifies the types to substitute for the type parameters of the
7040     * class or interface and optionally includes an extra element that specifies the type to
7041     * substitute for "this" in the resulting instantiation. When no extra argument is present,
7042     * the type reference itself is substituted for "this". The typeArguments property is undefined
7043     * if the class or interface has no type parameters and the reference isn't specifying an
7044     * explicit "this" argument.
7045     */
7046    interface TypeReference extends ObjectType {
7047        target: GenericType;
7048        node?: TypeReferenceNode | ArrayTypeNode | TupleTypeNode;
7049    }
7050    interface TypeReference {
7051        typeArguments?: readonly Type[];
7052    }
7053    interface DeferredTypeReference extends TypeReference {
7054    }
7055    interface GenericType extends InterfaceType, TypeReference {
7056    }
7057    enum ElementFlags {
7058        Required = 1,
7059        Optional = 2,
7060        Rest = 4,
7061        Variadic = 8,
7062        Fixed = 3,
7063        Variable = 12,
7064        NonRequired = 14,
7065        NonRest = 11
7066    }
7067    interface TupleType extends GenericType {
7068        elementFlags: readonly ElementFlags[];
7069        minLength: number;
7070        fixedLength: number;
7071        hasRestElement: boolean;
7072        combinedFlags: ElementFlags;
7073        readonly: boolean;
7074        labeledElementDeclarations?: readonly (NamedTupleMember | ParameterDeclaration)[];
7075    }
7076    interface TupleTypeReference extends TypeReference {
7077        target: TupleType;
7078    }
7079    interface UnionOrIntersectionType extends Type {
7080        types: Type[];
7081    }
7082    interface UnionType extends UnionOrIntersectionType {
7083    }
7084    interface IntersectionType extends UnionOrIntersectionType {
7085    }
7086    type StructuredType = ObjectType | UnionType | IntersectionType;
7087    interface EvolvingArrayType extends ObjectType {
7088        elementType: Type;
7089        finalArrayType?: Type;
7090    }
7091    interface InstantiableType extends Type {
7092    }
7093    interface TypeParameter extends InstantiableType {
7094    }
7095    interface IndexedAccessType extends InstantiableType {
7096        objectType: Type;
7097        indexType: Type;
7098        constraint?: Type;
7099        simplifiedForReading?: Type;
7100        simplifiedForWriting?: Type;
7101    }
7102    type TypeVariable = TypeParameter | IndexedAccessType;
7103    interface IndexType extends InstantiableType {
7104        type: InstantiableType | UnionOrIntersectionType;
7105    }
7106    interface ConditionalRoot {
7107        node: ConditionalTypeNode;
7108        checkType: Type;
7109        extendsType: Type;
7110        isDistributive: boolean;
7111        inferTypeParameters?: TypeParameter[];
7112        outerTypeParameters?: TypeParameter[];
7113        instantiations?: Map<Type>;
7114        aliasSymbol?: Symbol;
7115        aliasTypeArguments?: Type[];
7116    }
7117    interface ConditionalType extends InstantiableType {
7118        root: ConditionalRoot;
7119        checkType: Type;
7120        extendsType: Type;
7121        resolvedTrueType?: Type;
7122        resolvedFalseType?: Type;
7123    }
7124    interface TemplateLiteralType extends InstantiableType {
7125        texts: readonly string[];
7126        types: readonly Type[];
7127    }
7128    interface StringMappingType extends InstantiableType {
7129        symbol: Symbol;
7130        type: Type;
7131    }
7132    interface SubstitutionType extends InstantiableType {
7133        objectFlags: ObjectFlags;
7134        baseType: Type;
7135        constraint: Type;
7136    }
7137    enum SignatureKind {
7138        Call = 0,
7139        Construct = 1
7140    }
7141    interface Signature {
7142        declaration?: SignatureDeclaration | JSDocSignature;
7143        typeParameters?: readonly TypeParameter[];
7144        parameters: readonly Symbol[];
7145    }
7146    interface Signature {
7147        getDeclaration(): SignatureDeclaration;
7148        getTypeParameters(): TypeParameter[] | undefined;
7149        getParameters(): Symbol[];
7150        getTypeParameterAtPosition(pos: number): Type;
7151        getReturnType(): Type;
7152        getDocumentationComment(typeChecker: TypeChecker | undefined): SymbolDisplayPart[];
7153        getJsDocTags(): JSDocTagInfo[];
7154    }
7155    enum IndexKind {
7156        String = 0,
7157        Number = 1
7158    }
7159    interface IndexInfo {
7160        keyType: Type;
7161        type: Type;
7162        isReadonly: boolean;
7163        declaration?: IndexSignatureDeclaration;
7164    }
7165    enum InferencePriority {
7166        NakedTypeVariable = 1,
7167        SpeculativeTuple = 2,
7168        SubstituteSource = 4,
7169        HomomorphicMappedType = 8,
7170        PartialHomomorphicMappedType = 16,
7171        MappedTypeConstraint = 32,
7172        ContravariantConditional = 64,
7173        ReturnType = 128,
7174        LiteralKeyof = 256,
7175        NoConstraints = 512,
7176        AlwaysStrict = 1024,
7177        MaxValue = 2048,
7178        PriorityImpliesCombination = 416,
7179        Circularity = -1
7180    }
7181    /** @deprecated Use FileExtensionInfo instead. */
7182    type JsFileExtensionInfo = FileExtensionInfo;
7183    interface FileExtensionInfo {
7184        extension: string;
7185        isMixedContent: boolean;
7186        scriptKind?: ScriptKind;
7187    }
7188    interface DiagnosticMessage {
7189        key: string;
7190        category: DiagnosticCategory;
7191        code: number;
7192        message: string;
7193        reportsUnnecessary?: {};
7194        reportsDeprecated?: {};
7195    }
7196    /**
7197     * A linked list of formatted diagnostic messages to be used as part of a multiline message.
7198     * It is built from the bottom up, leaving the head to be the "main" diagnostic.
7199     * While it seems that DiagnosticMessageChain is structurally similar to DiagnosticMessage,
7200     * the difference is that messages are all preformatted in DMC.
7201     */
7202    interface DiagnosticMessageChain {
7203        messageText: string;
7204        category: DiagnosticCategory;
7205        code: number;
7206        next?: DiagnosticMessageChain[];
7207    }
7208    interface Diagnostic extends DiagnosticRelatedInformation {
7209        /** May store more in future. For now, this will simply be `true` to indicate when a diagnostic is an unused-identifier diagnostic. */
7210        reportsUnnecessary?: {};
7211        reportsDeprecated?: {};
7212        source?: string;
7213        relatedInformation?: DiagnosticRelatedInformation[];
7214    }
7215    interface DiagnosticRelatedInformation {
7216        category: DiagnosticCategory;
7217        code: number;
7218        file: SourceFile | undefined;
7219        start: number | undefined;
7220        length: number | undefined;
7221        messageText: string | DiagnosticMessageChain;
7222    }
7223    interface DiagnosticWithLocation extends Diagnostic {
7224        file: SourceFile;
7225        start: number;
7226        length: number;
7227    }
7228    enum DiagnosticCategory {
7229        Warning = 0,
7230        Error = 1,
7231        Suggestion = 2,
7232        Message = 3
7233    }
7234    enum ModuleResolutionKind {
7235        Classic = 1,
7236        NodeJs = 2,
7237        Node16 = 3,
7238        NodeNext = 99
7239    }
7240    enum ModuleDetectionKind {
7241        /**
7242         * Files with imports, exports and/or import.meta are considered modules
7243         */
7244        Legacy = 1,
7245        /**
7246         * Legacy, but also files with jsx under react-jsx or react-jsxdev and esm mode files under moduleResolution: node16+
7247         */
7248        Auto = 2,
7249        /**
7250         * Consider all non-declaration files modules, regardless of present syntax
7251         */
7252        Force = 3
7253    }
7254    interface PluginImport {
7255        name: string;
7256    }
7257    interface ProjectReference {
7258        /** A normalized path on disk */
7259        path: string;
7260        /** The path as the user originally wrote it */
7261        originalPath?: string;
7262        /** True if the output of this reference should be prepended to the output of this project. Only valid for --outFile compilations */
7263        prepend?: boolean;
7264        /** True if it is intended that this reference form a circularity */
7265        circular?: boolean;
7266    }
7267    enum WatchFileKind {
7268        FixedPollingInterval = 0,
7269        PriorityPollingInterval = 1,
7270        DynamicPriorityPolling = 2,
7271        FixedChunkSizePolling = 3,
7272        UseFsEvents = 4,
7273        UseFsEventsOnParentDirectory = 5
7274    }
7275    enum WatchDirectoryKind {
7276        UseFsEvents = 0,
7277        FixedPollingInterval = 1,
7278        DynamicPriorityPolling = 2,
7279        FixedChunkSizePolling = 3
7280    }
7281    enum PollingWatchKind {
7282        FixedInterval = 0,
7283        PriorityInterval = 1,
7284        DynamicPriority = 2,
7285        FixedChunkSize = 3
7286    }
7287    type CompilerOptionsValue = string | number | boolean | (string | number)[] | string[] | MapLike<string[]> | PluginImport[] | ProjectReference[] | null | undefined | EtsOptions;
7288    interface CompilerOptions {
7289        allowJs?: boolean;
7290        allowSyntheticDefaultImports?: boolean;
7291        allowUmdGlobalAccess?: boolean;
7292        allowUnreachableCode?: boolean;
7293        allowUnusedLabels?: boolean;
7294        alwaysStrict?: boolean;
7295        baseUrl?: string;
7296        charset?: string;
7297        checkJs?: boolean;
7298        declaration?: boolean;
7299        declarationMap?: boolean;
7300        emitDeclarationOnly?: boolean;
7301        declarationDir?: string;
7302        disableSizeLimit?: boolean;
7303        disableSourceOfProjectReferenceRedirect?: boolean;
7304        disableSolutionSearching?: boolean;
7305        disableReferencedProjectLoad?: boolean;
7306        downlevelIteration?: boolean;
7307        emitBOM?: boolean;
7308        emitDecoratorMetadata?: boolean;
7309        exactOptionalPropertyTypes?: boolean;
7310        experimentalDecorators?: boolean;
7311        forceConsistentCasingInFileNames?: boolean;
7312        importHelpers?: boolean;
7313        importsNotUsedAsValues?: ImportsNotUsedAsValues;
7314        inlineSourceMap?: boolean;
7315        inlineSources?: boolean;
7316        isolatedModules?: boolean;
7317        isolatedDeclarations?: boolean;
7318        jsx?: JsxEmit;
7319        keyofStringsOnly?: boolean;
7320        lib?: string[];
7321        locale?: string;
7322        mapRoot?: string;
7323        maxNodeModuleJsDepth?: number;
7324        module?: ModuleKind;
7325        moduleResolution?: ModuleResolutionKind;
7326        moduleSuffixes?: string[];
7327        moduleDetection?: ModuleDetectionKind;
7328        newLine?: NewLineKind;
7329        noEmit?: boolean;
7330        noEmitHelpers?: boolean;
7331        noEmitOnError?: boolean;
7332        noErrorTruncation?: boolean;
7333        noFallthroughCasesInSwitch?: boolean;
7334        noImplicitAny?: boolean;
7335        noImplicitReturns?: boolean;
7336        noImplicitThis?: boolean;
7337        noStrictGenericChecks?: boolean;
7338        noUnusedLocals?: boolean;
7339        noUnusedParameters?: boolean;
7340        noImplicitUseStrict?: boolean;
7341        noPropertyAccessFromIndexSignature?: boolean;
7342        assumeChangesOnlyAffectDirectDependencies?: boolean;
7343        noLib?: boolean;
7344        noResolve?: boolean;
7345        noUncheckedIndexedAccess?: boolean;
7346        out?: string;
7347        outDir?: string;
7348        outFile?: string;
7349        paths?: MapLike<string[]>;
7350        preserveConstEnums?: boolean;
7351        noImplicitOverride?: boolean;
7352        preserveSymlinks?: boolean;
7353        preserveValueImports?: boolean;
7354        project?: string;
7355        reactNamespace?: string;
7356        jsxFactory?: string;
7357        jsxFragmentFactory?: string;
7358        jsxImportSource?: string;
7359        composite?: boolean;
7360        incremental?: boolean;
7361        tsBuildInfoFile?: string;
7362        removeComments?: boolean;
7363        rootDir?: string;
7364        rootDirs?: string[];
7365        skipLibCheck?: boolean;
7366        skipDefaultLibCheck?: boolean;
7367        sourceMap?: boolean;
7368        sourceRoot?: string;
7369        strict?: boolean;
7370        strictFunctionTypes?: boolean;
7371        strictBindCallApply?: boolean;
7372        strictNullChecks?: boolean;
7373        strictPropertyInitialization?: boolean;
7374        stripInternal?: boolean;
7375        suppressExcessPropertyErrors?: boolean;
7376        suppressImplicitAnyIndexErrors?: boolean;
7377        target?: ScriptTarget;
7378        traceResolution?: boolean;
7379        useUnknownInCatchVariables?: boolean;
7380        resolveJsonModule?: boolean;
7381        types?: string[];
7382        /** Paths used to compute primary types search locations */
7383        typeRoots?: string[];
7384        esModuleInterop?: boolean;
7385        useDefineForClassFields?: boolean;
7386        ets?: EtsOptions;
7387        packageManagerType?: string;
7388        emitNodeModulesFiles?: boolean;
7389        etsLoaderPath?: string;
7390        tsImportSendableEnable?: boolean;
7391        skipPathsInKeyForCompilationSettings?: boolean;
7392        compatibleSdkVersion?: number;
7393        compatibleSdkVersionStage?: string;
7394        noTransformedKitInParser?: boolean;
7395        [option: string]: CompilerOptionsValue | TsConfigSourceFile | undefined;
7396        etsAnnotationsEnable?: boolean;
7397        maxFlowDepth?: number;
7398        skipOhModulesLint?: boolean;
7399        mixCompile?: boolean;
7400    }
7401    interface EtsOptions {
7402        render: {
7403            method: string[];
7404            decorator: string[];
7405        };
7406        components: string[];
7407        libs: string[];
7408        extend: {
7409            decorator: string[];
7410            components: {
7411                name: string;
7412                type: string;
7413                instance: string;
7414            }[];
7415        };
7416        styles: {
7417            decorator: string;
7418            component: {
7419                name: string;
7420                type: string;
7421                instance: string;
7422            };
7423            property: string;
7424        };
7425        concurrent: {
7426            decorator: string;
7427        };
7428        customComponent?: string;
7429        propertyDecorators: {
7430            name: string;
7431            needInitialization: boolean;
7432        }[];
7433        emitDecorators: {
7434            name: string;
7435            emitParameters: boolean;
7436        }[];
7437        syntaxComponents: {
7438            paramsUICallback: string[];
7439            attrUICallback: {
7440                name: string;
7441                attributes: string[];
7442            }[];
7443        };
7444    }
7445    interface WatchOptions {
7446        watchFile?: WatchFileKind;
7447        watchDirectory?: WatchDirectoryKind;
7448        fallbackPolling?: PollingWatchKind;
7449        synchronousWatchDirectory?: boolean;
7450        excludeDirectories?: string[];
7451        excludeFiles?: string[];
7452        [option: string]: CompilerOptionsValue | undefined;
7453    }
7454    interface TypeAcquisition {
7455        /**
7456         * @deprecated typingOptions.enableAutoDiscovery
7457         * Use typeAcquisition.enable instead.
7458         */
7459        enableAutoDiscovery?: boolean;
7460        enable?: boolean;
7461        include?: string[];
7462        exclude?: string[];
7463        disableFilenameBasedTypeAcquisition?: boolean;
7464        [option: string]: CompilerOptionsValue | undefined;
7465    }
7466    enum ModuleKind {
7467        None = 0,
7468        CommonJS = 1,
7469        AMD = 2,
7470        UMD = 3,
7471        System = 4,
7472        ES2015 = 5,
7473        ES2020 = 6,
7474        ES2022 = 7,
7475        ESNext = 99,
7476        Node16 = 100,
7477        NodeNext = 199
7478    }
7479    enum JsxEmit {
7480        None = 0,
7481        Preserve = 1,
7482        React = 2,
7483        ReactNative = 3,
7484        ReactJSX = 4,
7485        ReactJSXDev = 5
7486    }
7487    enum ImportsNotUsedAsValues {
7488        Remove = 0,
7489        Preserve = 1,
7490        Error = 2
7491    }
7492    enum NewLineKind {
7493        CarriageReturnLineFeed = 0,
7494        LineFeed = 1
7495    }
7496    interface LineAndCharacter {
7497        /** 0-based. */
7498        line: number;
7499        character: number;
7500    }
7501    enum ScriptKind {
7502        Unknown = 0,
7503        JS = 1,
7504        JSX = 2,
7505        TS = 3,
7506        TSX = 4,
7507        External = 5,
7508        JSON = 6,
7509        /**
7510         * Used on extensions that doesn't define the ScriptKind but the content defines it.
7511         * Deferred extensions are going to be included in all project contexts.
7512         */
7513        Deferred = 7,
7514        ETS = 8
7515    }
7516    enum ScriptTarget {
7517        ES3 = 0,
7518        ES5 = 1,
7519        ES2015 = 2,
7520        ES2016 = 3,
7521        ES2017 = 4,
7522        ES2018 = 5,
7523        ES2019 = 6,
7524        ES2020 = 7,
7525        ES2021 = 8,
7526        ES2022 = 9,
7527        ESNext = 99,
7528        JSON = 100,
7529        Latest = 99
7530    }
7531    enum LanguageVariant {
7532        Standard = 0,
7533        JSX = 1
7534    }
7535    /** Either a parsed command line or a parsed tsconfig.json */
7536    interface ParsedCommandLine {
7537        options: CompilerOptions;
7538        typeAcquisition?: TypeAcquisition;
7539        fileNames: string[];
7540        projectReferences?: readonly ProjectReference[];
7541        watchOptions?: WatchOptions;
7542        raw?: any;
7543        errors: Diagnostic[];
7544        wildcardDirectories?: MapLike<WatchDirectoryFlags>;
7545        compileOnSave?: boolean;
7546    }
7547    enum WatchDirectoryFlags {
7548        None = 0,
7549        Recursive = 1
7550    }
7551    interface CreateProgramOptions {
7552        rootNames: readonly string[];
7553        options: CompilerOptions;
7554        projectReferences?: readonly ProjectReference[];
7555        host?: CompilerHost;
7556        oldProgram?: Program;
7557        configFileParsingDiagnostics?: readonly Diagnostic[];
7558    }
7559    interface ModuleResolutionHost {
7560        fileExists(fileName: string): boolean;
7561        readFile(fileName: string): string | undefined;
7562        trace?(s: string): void;
7563        directoryExists?(directoryName: string): boolean;
7564        /**
7565         * Resolve a symbolic link.
7566         * @see https://nodejs.org/api/fs.html#fs_fs_realpathsync_path_options
7567         */
7568        realpath?(path: string): string;
7569        getCurrentDirectory?(): string;
7570        getDirectories?(path: string): string[];
7571        useCaseSensitiveFileNames?: boolean | (() => boolean) | undefined;
7572        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
7573        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocTagInfos: JsDocTagInfo[], jsDocs?: JSDoc[]): ConditionCheckResult;
7574        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
7575    }
7576    /**
7577     * Used by services to specify the minimum host area required to set up source files under any compilation settings
7578     */
7579    interface MinimalResolutionCacheHost extends ModuleResolutionHost {
7580        getCompilationSettings(): CompilerOptions;
7581        getCompilerHost?(): CompilerHost | undefined;
7582    }
7583    /**
7584     * Represents the result of module resolution.
7585     * Module resolution will pick up tsx/jsx/js files even if '--jsx' and '--allowJs' are turned off.
7586     * The Program will then filter results based on these flags.
7587     *
7588     * Prefer to return a `ResolvedModuleFull` so that the file type does not have to be inferred.
7589     */
7590    interface ResolvedModule {
7591        /** Path of the file the module was resolved to. */
7592        resolvedFileName: string;
7593        /** True if `resolvedFileName` comes from `node_modules`. */
7594        isExternalLibraryImport?: boolean;
7595    }
7596    /**
7597     * ResolvedModule with an explicitly provided `extension` property.
7598     * Prefer this over `ResolvedModule`.
7599     * If changing this, remember to change `moduleResolutionIsEqualTo`.
7600     */
7601    interface ResolvedModuleFull extends ResolvedModule {
7602        /**
7603         * Extension of resolvedFileName. This must match what's at the end of resolvedFileName.
7604         * This is optional for backwards-compatibility, but will be added if not provided.
7605         */
7606        extension: Extension;
7607        packageId?: PackageId;
7608    }
7609    /**
7610     * Unique identifier with a package name and version.
7611     * If changing this, remember to change `packageIdIsEqual`.
7612     */
7613    interface PackageId {
7614        /**
7615         * Name of the package.
7616         * Should not include `@types`.
7617         * If accessing a non-index file, this should include its name e.g. "foo/bar".
7618         */
7619        name: string;
7620        /**
7621         * Name of a submodule within this package.
7622         * May be "".
7623         */
7624        subModuleName: string;
7625        /** Version of the package, e.g. "1.2.3" */
7626        version: string;
7627    }
7628    enum Extension {
7629        Ts = ".ts",
7630        Tsx = ".tsx",
7631        Dts = ".d.ts",
7632        Js = ".js",
7633        Jsx = ".jsx",
7634        Json = ".json",
7635        TsBuildInfo = ".tsbuildinfo",
7636        Mjs = ".mjs",
7637        Mts = ".mts",
7638        Dmts = ".d.mts",
7639        Cjs = ".cjs",
7640        Cts = ".cts",
7641        Dcts = ".d.cts",
7642        Ets = ".ets",
7643        Dets = ".d.ets"
7644    }
7645    interface ResolvedModuleWithFailedLookupLocations {
7646        readonly resolvedModule: ResolvedModuleFull | undefined;
7647    }
7648    interface ResolvedTypeReferenceDirective {
7649        primary: boolean;
7650        resolvedFileName: string | undefined;
7651        packageId?: PackageId;
7652        /** True if `resolvedFileName` comes from `node_modules` or `oh_modules`. */
7653        isExternalLibraryImport?: boolean;
7654    }
7655    interface ResolvedTypeReferenceDirectiveWithFailedLookupLocations {
7656        readonly resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective | undefined;
7657        readonly failedLookupLocations: string[];
7658    }
7659    interface FileCheckModuleInfo {
7660        fileNeedCheck: boolean;
7661        checkPayload: any;
7662        currentFileName: string;
7663        tagName?: string[];
7664    }
7665    interface JsDocNodeCheckConfig {
7666        nodeNeedCheck: boolean;
7667        checkConfig: JsDocNodeCheckConfigItem[];
7668    }
7669    interface JsDocNodeCheckConfigItem {
7670        tagName: string[];
7671        message: string;
7672        needConditionCheck: boolean;
7673        type: DiagnosticCategory;
7674        specifyCheckConditionFuncName: string;
7675        tagNameShouldExisted: boolean;
7676        checkValidCallback?: (jsDocTag: JSDocTag, config: JsDocNodeCheckConfigItem) => boolean;
7677        checkJsDocSpecialValidCallback?: (jsDocTags: readonly JSDocTag[], config: JsDocNodeCheckConfigItem) => boolean;
7678        checkConditionValidCallback?: (node: CallExpression, specifyFuncName: string, importSymbol: string, jsDocs?: JSDoc[]) => boolean;
7679    }
7680    interface TagCheckParam {
7681        needCheck: boolean;
7682        checkConfig: TagCheckConfig[];
7683    }
7684    interface TagCheckConfig {
7685        tagName: string;
7686        message: string;
7687        needConditionCheck: boolean;
7688        specifyCheckConditionFuncName: string;
7689    }
7690    interface ConditionCheckResult {
7691        valid: boolean;
7692        type?: DiagnosticCategory;
7693        message?: string;
7694    }
7695    interface CompilerHost extends ModuleResolutionHost {
7696        getSourceFile(fileName: string, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, onError?: (message: string) => void, shouldCreateNewSourceFile?: boolean, options?: CompilerOptions): SourceFile | undefined;
7697        getSourceFileByPath?(fileName: string, path: Path, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, onError?: (message: string) => void, shouldCreateNewSourceFile?: boolean): SourceFile | undefined;
7698        getCancellationToken?(): CancellationToken;
7699        getDefaultLibFileName(options: CompilerOptions): string;
7700        getDefaultLibLocation?(): string;
7701        writeFile: WriteFileCallback;
7702        getCurrentDirectory(): string;
7703        getCanonicalFileName(fileName: string): string;
7704        useCaseSensitiveFileNames(): boolean;
7705        getNewLine(): string;
7706        readDirectory?(rootDir: string, extensions: readonly string[], excludes: readonly string[] | undefined, includes: readonly string[], depth?: number): string[];
7707        resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[];
7708        /**
7709         * 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
7710         */
7711        getModuleResolutionCache?(): ModuleResolutionCache | undefined;
7712        /**
7713         * This method is a companion for 'resolveModuleNames' and is used to resolve 'types' references to actual type declaration files
7714         */
7715        resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[] | readonly FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[];
7716        getEnvironmentVariable?(name: string): string | undefined;
7717        /** If provided along with custom resolveModuleNames or resolveTypeReferenceDirectives, used to determine if unchanged file path needs to re-resolve modules/type reference directives */
7718        hasInvalidatedResolutions?(filePath: Path): boolean;
7719        createHash?(data: string): string;
7720        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
7721        /**
7722         * get tagName where need to be determined based on the file path
7723         * @param jsDocFileCheckInfo filePath
7724         * @param symbolSourceFilePath filePath
7725         */
7726        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
7727        /**
7728         * get checked results based on the file path and jsDocs
7729         * @param jsDocFileCheckedInfo
7730         * @param jsDocs
7731         */
7732        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocTagInfos: JsDocTagInfo[], jsDocs?: JSDoc[]): ConditionCheckResult;
7733        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
7734        getLastCompiledProgram?(): Program;
7735        isStaticSourceFile?(filePath: string): boolean;
7736    }
7737    interface SourceMapRange extends TextRange {
7738        source?: SourceMapSource;
7739    }
7740    interface SourceMapSource {
7741        fileName: string;
7742        text: string;
7743        skipTrivia?: (pos: number) => number;
7744    }
7745    interface SourceMapSource {
7746        getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
7747    }
7748    enum EmitFlags {
7749        None = 0,
7750        SingleLine = 1,
7751        AdviseOnEmitNode = 2,
7752        NoSubstitution = 4,
7753        CapturesThis = 8,
7754        NoLeadingSourceMap = 16,
7755        NoTrailingSourceMap = 32,
7756        NoSourceMap = 48,
7757        NoNestedSourceMaps = 64,
7758        NoTokenLeadingSourceMaps = 128,
7759        NoTokenTrailingSourceMaps = 256,
7760        NoTokenSourceMaps = 384,
7761        NoLeadingComments = 512,
7762        NoTrailingComments = 1024,
7763        NoComments = 1536,
7764        NoNestedComments = 2048,
7765        HelperName = 4096,
7766        ExportName = 8192,
7767        LocalName = 16384,
7768        InternalName = 32768,
7769        Indented = 65536,
7770        NoIndentation = 131072,
7771        AsyncFunctionBody = 262144,
7772        ReuseTempVariableScope = 524288,
7773        CustomPrologue = 1048576,
7774        NoHoisting = 2097152,
7775        HasEndOfDeclarationMarker = 4194304,
7776        Iterator = 8388608,
7777        NoAsciiEscaping = 16777216
7778    }
7779    interface EmitHelperBase {
7780        readonly name: string;
7781        readonly scoped: boolean;
7782        readonly text: string | ((node: EmitHelperUniqueNameCallback) => string);
7783        readonly priority?: number;
7784        readonly dependencies?: EmitHelper[];
7785    }
7786    interface ScopedEmitHelper extends EmitHelperBase {
7787        readonly scoped: true;
7788    }
7789    interface UnscopedEmitHelper extends EmitHelperBase {
7790        readonly scoped: false;
7791        readonly text: string;
7792    }
7793    type EmitHelper = ScopedEmitHelper | UnscopedEmitHelper;
7794    type EmitHelperUniqueNameCallback = (name: string) => string;
7795    enum EmitHint {
7796        SourceFile = 0,
7797        Expression = 1,
7798        IdentifierName = 2,
7799        MappedTypeParameter = 3,
7800        Unspecified = 4,
7801        EmbeddedStatement = 5,
7802        JsxAttributeValue = 6
7803    }
7804    interface SourceFileMayBeEmittedHost {
7805        getCompilerOptions(): CompilerOptions;
7806        isSourceFileFromExternalLibrary(file: SourceFile): boolean;
7807        getResolvedProjectReferenceToRedirect(fileName: string): ResolvedProjectReference | undefined;
7808        isSourceOfProjectReferenceRedirect(fileName: string): boolean;
7809    }
7810    interface EmitHost extends ScriptReferenceHost, ModuleSpecifierResolutionHost, SourceFileMayBeEmittedHost {
7811        getSourceFiles(): readonly SourceFile[];
7812        useCaseSensitiveFileNames(): boolean;
7813        getCurrentDirectory(): string;
7814        getLibFileFromReference(ref: FileReference): SourceFile | undefined;
7815        getCommonSourceDirectory(): string;
7816        getCanonicalFileName(fileName: string): string;
7817        getNewLine(): string;
7818        isEmitBlocked(emitFileName: string): boolean;
7819        getPrependNodes(): readonly (InputFiles | UnparsedSource)[];
7820        writeFile: WriteFileCallback;
7821        getSourceFileFromReference: Program["getSourceFileFromReference"];
7822        readonly redirectTargetsMap: RedirectTargetsMap;
7823        createHash?(data: string): string;
7824    }
7825    enum OuterExpressionKinds {
7826        Parentheses = 1,
7827        TypeAssertions = 2,
7828        NonNullAssertions = 4,
7829        PartiallyEmittedExpressions = 8,
7830        Assertions = 6,
7831        All = 15,
7832        ExcludeJSDocTypeAssertion = 16
7833    }
7834    type TypeOfTag = "undefined" | "number" | "bigint" | "boolean" | "string" | "symbol" | "object" | "function";
7835    interface NodeFactory {
7836        createNodeArray<T extends Node>(elements?: readonly T[], hasTrailingComma?: boolean): NodeArray<T>;
7837        createNumericLiteral(value: string | number, numericLiteralFlags?: TokenFlags): NumericLiteral;
7838        createBigIntLiteral(value: string | PseudoBigInt): BigIntLiteral;
7839        createStringLiteral(text: string, isSingleQuote?: boolean): StringLiteral;
7840        createStringLiteralFromNode(sourceNode: PropertyNameLiteral | PrivateIdentifier, isSingleQuote?: boolean): StringLiteral;
7841        createRegularExpressionLiteral(text: string): RegularExpressionLiteral;
7842        createIdentifier(text: string): Identifier;
7843        /**
7844         * Create a unique temporary variable.
7845         * @param recordTempVariable An optional callback used to record the temporary variable name. This
7846         * should usually be a reference to `hoistVariableDeclaration` from a `TransformationContext`, but
7847         * can be `undefined` if you plan to record the temporary variable manually.
7848         * @param reservedInNestedScopes When `true`, reserves the temporary variable name in all nested scopes
7849         * during emit so that the variable can be referenced in a nested function body. This is an alternative to
7850         * setting `EmitFlags.ReuseTempVariableScope` on the nested function itself.
7851         */
7852        createTempVariable(recordTempVariable: ((node: Identifier) => void) | undefined, reservedInNestedScopes?: boolean): Identifier;
7853        /**
7854         * Create a unique temporary variable for use in a loop.
7855         * @param reservedInNestedScopes When `true`, reserves the temporary variable name in all nested scopes
7856         * during emit so that the variable can be referenced in a nested function body. This is an alternative to
7857         * setting `EmitFlags.ReuseTempVariableScope` on the nested function itself.
7858         */
7859        createLoopVariable(reservedInNestedScopes?: boolean): Identifier;
7860        /** Create a unique name based on the supplied text. */
7861        createUniqueName(text: string, flags?: GeneratedIdentifierFlags): Identifier;
7862        /** Create a unique name generated for a node. */
7863        getGeneratedNameForNode(node: Node | undefined, flags?: GeneratedIdentifierFlags): Identifier;
7864        createPrivateIdentifier(text: string): PrivateIdentifier;
7865        createUniquePrivateName(text?: string): PrivateIdentifier;
7866        getGeneratedPrivateNameForNode(node: Node): PrivateIdentifier;
7867        createToken(token: SyntaxKind.SuperKeyword): SuperExpression;
7868        createToken(token: SyntaxKind.ThisKeyword): ThisExpression;
7869        createToken(token: SyntaxKind.NullKeyword): NullLiteral;
7870        createToken(token: SyntaxKind.TrueKeyword): TrueLiteral;
7871        createToken(token: SyntaxKind.FalseKeyword): FalseLiteral;
7872        createToken<TKind extends PunctuationSyntaxKind>(token: TKind): PunctuationToken<TKind>;
7873        createToken<TKind extends KeywordTypeSyntaxKind>(token: TKind): KeywordTypeNode<TKind>;
7874        createToken<TKind extends ModifierSyntaxKind>(token: TKind): ModifierToken<TKind>;
7875        createToken<TKind extends KeywordSyntaxKind>(token: TKind): KeywordToken<TKind>;
7876        createToken<TKind extends SyntaxKind.Unknown | SyntaxKind.EndOfFileToken>(token: TKind): Token<TKind>;
7877        createSuper(): SuperExpression;
7878        createThis(): ThisExpression;
7879        createNull(): NullLiteral;
7880        createTrue(): TrueLiteral;
7881        createFalse(): FalseLiteral;
7882        createModifier<T extends ModifierSyntaxKind>(kind: T): ModifierToken<T>;
7883        createModifiersFromModifierFlags(flags: ModifierFlags): Modifier[] | undefined;
7884        createQualifiedName(left: EntityName, right: string | Identifier): QualifiedName;
7885        updateQualifiedName(node: QualifiedName, left: EntityName, right: Identifier): QualifiedName;
7886        createComputedPropertyName(expression: Expression): ComputedPropertyName;
7887        updateComputedPropertyName(node: ComputedPropertyName, expression: Expression): ComputedPropertyName;
7888        createTypeParameterDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, constraint?: TypeNode, defaultType?: TypeNode): TypeParameterDeclaration;
7889        updateTypeParameterDeclaration(node: TypeParameterDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration;
7890        createParameterDeclaration(modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken, type?: TypeNode, initializer?: Expression): ParameterDeclaration;
7891        updateParameterDeclaration(node: ParameterDeclaration, modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): ParameterDeclaration;
7892        createDecorator(expression: Expression, annotationDeclaration?: AnnotationDeclaration): Decorator;
7893        updateDecorator(node: Decorator, expression: Expression, annotationDeclaration?: AnnotationDeclaration): Decorator;
7894        createPropertySignature(modifiers: readonly Modifier[] | undefined, name: PropertyName | string, questionToken: QuestionToken | undefined, type: TypeNode | undefined): PropertySignature;
7895        updatePropertySignature(node: PropertySignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, type: TypeNode | undefined): PropertySignature;
7896        createPropertyDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
7897        updatePropertyDeclaration(node: PropertyDeclaration, modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
7898        createAnnotationPropertyDeclaration(name: string | PropertyName, type: TypeNode | undefined, initializer: Expression | undefined): AnnotationPropertyDeclaration;
7899        updateAnnotationPropertyDeclaration(node: AnnotationPropertyDeclaration, name: string | PropertyName, type: TypeNode | undefined, initializer: Expression | undefined): AnnotationPropertyDeclaration;
7900        createMethodSignature(modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): MethodSignature;
7901        updateMethodSignature(node: MethodSignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): MethodSignature;
7902        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;
7903        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;
7904        createConstructorDeclaration(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
7905        updateConstructorDeclaration(node: ConstructorDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
7906        createGetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
7907        updateGetAccessorDeclaration(node: GetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
7908        createSetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
7909        updateSetAccessorDeclaration(node: SetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
7910        createCallSignature(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): CallSignatureDeclaration;
7911        updateCallSignature(node: CallSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): CallSignatureDeclaration;
7912        createConstructSignature(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): ConstructSignatureDeclaration;
7913        updateConstructSignature(node: ConstructSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): ConstructSignatureDeclaration;
7914        createIndexSignature(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
7915        updateIndexSignature(node: IndexSignatureDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
7916        createTemplateLiteralTypeSpan(type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan;
7917        updateTemplateLiteralTypeSpan(node: TemplateLiteralTypeSpan, type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan;
7918        createClassStaticBlockDeclaration(body: Block): ClassStaticBlockDeclaration;
7919        updateClassStaticBlockDeclaration(node: ClassStaticBlockDeclaration, body: Block): ClassStaticBlockDeclaration;
7920        createKeywordTypeNode<TKind extends KeywordTypeSyntaxKind>(kind: TKind): KeywordTypeNode<TKind>;
7921        createTypePredicateNode(assertsModifier: AssertsKeyword | undefined, parameterName: Identifier | ThisTypeNode | string, type: TypeNode | undefined): TypePredicateNode;
7922        updateTypePredicateNode(node: TypePredicateNode, assertsModifier: AssertsKeyword | undefined, parameterName: Identifier | ThisTypeNode, type: TypeNode | undefined): TypePredicateNode;
7923        createTypeReferenceNode(typeName: string | EntityName, typeArguments?: readonly TypeNode[]): TypeReferenceNode;
7924        updateTypeReferenceNode(node: TypeReferenceNode, typeName: EntityName, typeArguments: NodeArray<TypeNode> | undefined): TypeReferenceNode;
7925        createFunctionTypeNode(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): FunctionTypeNode;
7926        updateFunctionTypeNode(node: FunctionTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): FunctionTypeNode;
7927        createConstructorTypeNode(modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): ConstructorTypeNode;
7928        updateConstructorTypeNode(node: ConstructorTypeNode, modifiers: readonly Modifier[] | undefined, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): ConstructorTypeNode;
7929        createTypeQueryNode(exprName: EntityName, typeArguments?: readonly TypeNode[]): TypeQueryNode;
7930        updateTypeQueryNode(node: TypeQueryNode, exprName: EntityName, typeArguments?: readonly TypeNode[]): TypeQueryNode;
7931        createTypeLiteralNode(members: readonly TypeElement[] | undefined): TypeLiteralNode;
7932        updateTypeLiteralNode(node: TypeLiteralNode, members: NodeArray<TypeElement>): TypeLiteralNode;
7933        createArrayTypeNode(elementType: TypeNode): ArrayTypeNode;
7934        updateArrayTypeNode(node: ArrayTypeNode, elementType: TypeNode): ArrayTypeNode;
7935        createTupleTypeNode(elements: readonly (TypeNode | NamedTupleMember)[]): TupleTypeNode;
7936        updateTupleTypeNode(node: TupleTypeNode, elements: readonly (TypeNode | NamedTupleMember)[]): TupleTypeNode;
7937        createNamedTupleMember(dotDotDotToken: DotDotDotToken | undefined, name: Identifier, questionToken: QuestionToken | undefined, type: TypeNode): NamedTupleMember;
7938        updateNamedTupleMember(node: NamedTupleMember, dotDotDotToken: DotDotDotToken | undefined, name: Identifier, questionToken: QuestionToken | undefined, type: TypeNode): NamedTupleMember;
7939        createOptionalTypeNode(type: TypeNode): OptionalTypeNode;
7940        updateOptionalTypeNode(node: OptionalTypeNode, type: TypeNode): OptionalTypeNode;
7941        createRestTypeNode(type: TypeNode): RestTypeNode;
7942        updateRestTypeNode(node: RestTypeNode, type: TypeNode): RestTypeNode;
7943        createUnionTypeNode(types: readonly TypeNode[]): UnionTypeNode;
7944        updateUnionTypeNode(node: UnionTypeNode, types: NodeArray<TypeNode>): UnionTypeNode;
7945        createIntersectionTypeNode(types: readonly TypeNode[]): IntersectionTypeNode;
7946        updateIntersectionTypeNode(node: IntersectionTypeNode, types: NodeArray<TypeNode>): IntersectionTypeNode;
7947        createConditionalTypeNode(checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode): ConditionalTypeNode;
7948        updateConditionalTypeNode(node: ConditionalTypeNode, checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode): ConditionalTypeNode;
7949        createInferTypeNode(typeParameter: TypeParameterDeclaration): InferTypeNode;
7950        updateInferTypeNode(node: InferTypeNode, typeParameter: TypeParameterDeclaration): InferTypeNode;
7951        createImportTypeNode(argument: TypeNode, assertions?: ImportTypeAssertionContainer, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode;
7952        updateImportTypeNode(node: ImportTypeNode, argument: TypeNode, assertions: ImportTypeAssertionContainer | undefined, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean): ImportTypeNode;
7953        createParenthesizedType(type: TypeNode): ParenthesizedTypeNode;
7954        updateParenthesizedType(node: ParenthesizedTypeNode, type: TypeNode): ParenthesizedTypeNode;
7955        createThisTypeNode(): ThisTypeNode;
7956        createTypeOperatorNode(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode;
7957        updateTypeOperatorNode(node: TypeOperatorNode, type: TypeNode): TypeOperatorNode;
7958        createIndexedAccessTypeNode(objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode;
7959        updateIndexedAccessTypeNode(node: IndexedAccessTypeNode, objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode;
7960        createMappedTypeNode(readonlyToken: ReadonlyKeyword | PlusToken | MinusToken | undefined, typeParameter: TypeParameterDeclaration, nameType: TypeNode | undefined, questionToken: QuestionToken | PlusToken | MinusToken | undefined, type: TypeNode | undefined, members: NodeArray<TypeElement> | undefined): MappedTypeNode;
7961        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;
7962        createLiteralTypeNode(literal: LiteralTypeNode["literal"]): LiteralTypeNode;
7963        updateLiteralTypeNode(node: LiteralTypeNode, literal: LiteralTypeNode["literal"]): LiteralTypeNode;
7964        createTemplateLiteralType(head: TemplateHead, templateSpans: readonly TemplateLiteralTypeSpan[]): TemplateLiteralTypeNode;
7965        updateTemplateLiteralType(node: TemplateLiteralTypeNode, head: TemplateHead, templateSpans: readonly TemplateLiteralTypeSpan[]): TemplateLiteralTypeNode;
7966        createObjectBindingPattern(elements: readonly BindingElement[]): ObjectBindingPattern;
7967        updateObjectBindingPattern(node: ObjectBindingPattern, elements: readonly BindingElement[]): ObjectBindingPattern;
7968        createArrayBindingPattern(elements: readonly ArrayBindingElement[]): ArrayBindingPattern;
7969        updateArrayBindingPattern(node: ArrayBindingPattern, elements: readonly ArrayBindingElement[]): ArrayBindingPattern;
7970        createBindingElement(dotDotDotToken: DotDotDotToken | undefined, propertyName: string | PropertyName | undefined, name: string | BindingName, initializer?: Expression): BindingElement;
7971        updateBindingElement(node: BindingElement, dotDotDotToken: DotDotDotToken | undefined, propertyName: PropertyName | undefined, name: BindingName, initializer: Expression | undefined): BindingElement;
7972        createArrayLiteralExpression(elements?: readonly Expression[], multiLine?: boolean): ArrayLiteralExpression;
7973        updateArrayLiteralExpression(node: ArrayLiteralExpression, elements: readonly Expression[]): ArrayLiteralExpression;
7974        createObjectLiteralExpression(properties?: readonly ObjectLiteralElementLike[], multiLine?: boolean): ObjectLiteralExpression;
7975        updateObjectLiteralExpression(node: ObjectLiteralExpression, properties: readonly ObjectLiteralElementLike[]): ObjectLiteralExpression;
7976        createPropertyAccessExpression(expression: Expression, name: string | MemberName): PropertyAccessExpression;
7977        updatePropertyAccessExpression(node: PropertyAccessExpression, expression: Expression, name: MemberName): PropertyAccessExpression;
7978        createPropertyAccessChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, name: string | MemberName): PropertyAccessChain;
7979        updatePropertyAccessChain(node: PropertyAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, name: MemberName): PropertyAccessChain;
7980        createElementAccessExpression(expression: Expression, index: number | Expression): ElementAccessExpression;
7981        updateElementAccessExpression(node: ElementAccessExpression, expression: Expression, argumentExpression: Expression): ElementAccessExpression;
7982        createElementAccessChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, index: number | Expression): ElementAccessChain;
7983        updateElementAccessChain(node: ElementAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, argumentExpression: Expression): ElementAccessChain;
7984        createCallExpression(expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): CallExpression;
7985        updateCallExpression(node: CallExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]): CallExpression;
7986        createCallChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): CallChain;
7987        updateCallChain(node: CallChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]): CallChain;
7988        createNewExpression(expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): NewExpression;
7989        updateNewExpression(node: NewExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): NewExpression;
7990        createTaggedTemplateExpression(tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
7991        updateTaggedTemplateExpression(node: TaggedTemplateExpression, tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
7992        createTypeAssertion(type: TypeNode, expression: Expression): TypeAssertion;
7993        updateTypeAssertion(node: TypeAssertion, type: TypeNode, expression: Expression): TypeAssertion;
7994        createParenthesizedExpression(expression: Expression): ParenthesizedExpression;
7995        updateParenthesizedExpression(node: ParenthesizedExpression, expression: Expression): ParenthesizedExpression;
7996        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;
7997        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;
7998        createArrowFunction(modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken | undefined, body: ConciseBody): ArrowFunction;
7999        updateArrowFunction(node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken, body: ConciseBody): ArrowFunction;
8000        createEtsComponentExpression(name: Expression, argumentExpression: Expression[] | NodeArray<Expression> | undefined, body: Block | undefined): EtsComponentExpression;
8001        updateEtsComponentExpression(node: EtsComponentExpression, name: Expression | undefined, argumentExpression: Expression[] | NodeArray<Expression> | undefined, body: Block | undefined): EtsComponentExpression;
8002        createDeleteExpression(expression: Expression): DeleteExpression;
8003        updateDeleteExpression(node: DeleteExpression, expression: Expression): DeleteExpression;
8004        createTypeOfExpression(expression: Expression): TypeOfExpression;
8005        updateTypeOfExpression(node: TypeOfExpression, expression: Expression): TypeOfExpression;
8006        createVoidExpression(expression: Expression): VoidExpression;
8007        updateVoidExpression(node: VoidExpression, expression: Expression): VoidExpression;
8008        createAwaitExpression(expression: Expression): AwaitExpression;
8009        updateAwaitExpression(node: AwaitExpression, expression: Expression): AwaitExpression;
8010        createPrefixUnaryExpression(operator: PrefixUnaryOperator, operand: Expression): PrefixUnaryExpression;
8011        updatePrefixUnaryExpression(node: PrefixUnaryExpression, operand: Expression): PrefixUnaryExpression;
8012        createPostfixUnaryExpression(operand: Expression, operator: PostfixUnaryOperator): PostfixUnaryExpression;
8013        updatePostfixUnaryExpression(node: PostfixUnaryExpression, operand: Expression): PostfixUnaryExpression;
8014        createBinaryExpression(left: Expression, operator: BinaryOperator | BinaryOperatorToken, right: Expression): BinaryExpression;
8015        updateBinaryExpression(node: BinaryExpression, left: Expression, operator: BinaryOperator | BinaryOperatorToken, right: Expression): BinaryExpression;
8016        createConditionalExpression(condition: Expression, questionToken: QuestionToken | undefined, whenTrue: Expression, colonToken: ColonToken | undefined, whenFalse: Expression): ConditionalExpression;
8017        updateConditionalExpression(node: ConditionalExpression, condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression): ConditionalExpression;
8018        createTemplateExpression(head: TemplateHead, templateSpans: readonly TemplateSpan[]): TemplateExpression;
8019        updateTemplateExpression(node: TemplateExpression, head: TemplateHead, templateSpans: readonly TemplateSpan[]): TemplateExpression;
8020        createTemplateHead(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateHead;
8021        createTemplateHead(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateHead;
8022        createTemplateMiddle(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateMiddle;
8023        createTemplateMiddle(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateMiddle;
8024        createTemplateTail(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateTail;
8025        createTemplateTail(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateTail;
8026        createNoSubstitutionTemplateLiteral(text: string, rawText?: string): NoSubstitutionTemplateLiteral;
8027        createNoSubstitutionTemplateLiteral(text: string | undefined, rawText: string): NoSubstitutionTemplateLiteral;
8028        createYieldExpression(asteriskToken: AsteriskToken, expression: Expression): YieldExpression;
8029        createYieldExpression(asteriskToken: undefined, expression: Expression | undefined): YieldExpression;
8030        updateYieldExpression(node: YieldExpression, asteriskToken: AsteriskToken | undefined, expression: Expression | undefined): YieldExpression;
8031        createSpreadElement(expression: Expression): SpreadElement;
8032        updateSpreadElement(node: SpreadElement, expression: Expression): SpreadElement;
8033        createClassExpression(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression;
8034        updateClassExpression(node: ClassExpression, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression;
8035        createOmittedExpression(): OmittedExpression;
8036        createExpressionWithTypeArguments(expression: Expression, typeArguments: readonly TypeNode[] | undefined): ExpressionWithTypeArguments;
8037        updateExpressionWithTypeArguments(node: ExpressionWithTypeArguments, expression: Expression, typeArguments: readonly TypeNode[] | undefined): ExpressionWithTypeArguments;
8038        createAsExpression(expression: Expression, type: TypeNode): AsExpression;
8039        updateAsExpression(node: AsExpression, expression: Expression, type: TypeNode): AsExpression;
8040        createNonNullExpression(expression: Expression): NonNullExpression;
8041        updateNonNullExpression(node: NonNullExpression, expression: Expression): NonNullExpression;
8042        createNonNullChain(expression: Expression): NonNullChain;
8043        updateNonNullChain(node: NonNullChain, expression: Expression): NonNullChain;
8044        createMetaProperty(keywordToken: MetaProperty["keywordToken"], name: Identifier): MetaProperty;
8045        updateMetaProperty(node: MetaProperty, name: Identifier): MetaProperty;
8046        createSatisfiesExpression(expression: Expression, type: TypeNode): SatisfiesExpression;
8047        updateSatisfiesExpression(node: SatisfiesExpression, expression: Expression, type: TypeNode): SatisfiesExpression;
8048        createTemplateSpan(expression: Expression, literal: TemplateMiddle | TemplateTail): TemplateSpan;
8049        updateTemplateSpan(node: TemplateSpan, expression: Expression, literal: TemplateMiddle | TemplateTail): TemplateSpan;
8050        createSemicolonClassElement(): SemicolonClassElement;
8051        createBlock(statements: readonly Statement[], multiLine?: boolean): Block;
8052        updateBlock(node: Block, statements: readonly Statement[]): Block;
8053        createVariableStatement(modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]): VariableStatement;
8054        updateVariableStatement(node: VariableStatement, modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList): VariableStatement;
8055        createEmptyStatement(): EmptyStatement;
8056        createExpressionStatement(expression: Expression): ExpressionStatement;
8057        updateExpressionStatement(node: ExpressionStatement, expression: Expression): ExpressionStatement;
8058        createIfStatement(expression: Expression, thenStatement: Statement, elseStatement?: Statement): IfStatement;
8059        updateIfStatement(node: IfStatement, expression: Expression, thenStatement: Statement, elseStatement: Statement | undefined): IfStatement;
8060        createDoStatement(statement: Statement, expression: Expression): DoStatement;
8061        updateDoStatement(node: DoStatement, statement: Statement, expression: Expression): DoStatement;
8062        createWhileStatement(expression: Expression, statement: Statement): WhileStatement;
8063        updateWhileStatement(node: WhileStatement, expression: Expression, statement: Statement): WhileStatement;
8064        createForStatement(initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement): ForStatement;
8065        updateForStatement(node: ForStatement, initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement): ForStatement;
8066        createForInStatement(initializer: ForInitializer, expression: Expression, statement: Statement): ForInStatement;
8067        updateForInStatement(node: ForInStatement, initializer: ForInitializer, expression: Expression, statement: Statement): ForInStatement;
8068        createForOfStatement(awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement): ForOfStatement;
8069        updateForOfStatement(node: ForOfStatement, awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement): ForOfStatement;
8070        createContinueStatement(label?: string | Identifier): ContinueStatement;
8071        updateContinueStatement(node: ContinueStatement, label: Identifier | undefined): ContinueStatement;
8072        createBreakStatement(label?: string | Identifier): BreakStatement;
8073        updateBreakStatement(node: BreakStatement, label: Identifier | undefined): BreakStatement;
8074        createReturnStatement(expression?: Expression): ReturnStatement;
8075        updateReturnStatement(node: ReturnStatement, expression: Expression | undefined): ReturnStatement;
8076        createWithStatement(expression: Expression, statement: Statement): WithStatement;
8077        updateWithStatement(node: WithStatement, expression: Expression, statement: Statement): WithStatement;
8078        createSwitchStatement(expression: Expression, caseBlock: CaseBlock): SwitchStatement;
8079        updateSwitchStatement(node: SwitchStatement, expression: Expression, caseBlock: CaseBlock): SwitchStatement;
8080        createLabeledStatement(label: string | Identifier, statement: Statement): LabeledStatement;
8081        updateLabeledStatement(node: LabeledStatement, label: Identifier, statement: Statement): LabeledStatement;
8082        createThrowStatement(expression: Expression): ThrowStatement;
8083        updateThrowStatement(node: ThrowStatement, expression: Expression): ThrowStatement;
8084        createTryStatement(tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined): TryStatement;
8085        updateTryStatement(node: TryStatement, tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined): TryStatement;
8086        createDebuggerStatement(): DebuggerStatement;
8087        createVariableDeclaration(name: string | BindingName, exclamationToken?: ExclamationToken, type?: TypeNode, initializer?: Expression): VariableDeclaration;
8088        updateVariableDeclaration(node: VariableDeclaration, name: BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
8089        createVariableDeclarationList(declarations: readonly VariableDeclaration[], flags?: NodeFlags): VariableDeclarationList;
8090        updateVariableDeclarationList(node: VariableDeclarationList, declarations: readonly VariableDeclaration[]): VariableDeclarationList;
8091        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;
8092        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;
8093        createClassDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
8094        updateClassDeclaration(node: ClassDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
8095        createStructDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): StructDeclaration;
8096        updateStructDeclaration(node: StructDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): StructDeclaration;
8097        createAnnotationDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, members: readonly AnnotationElement[]): AnnotationDeclaration;
8098        updateAnnotationDeclaration(node: AnnotationDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, members: readonly AnnotationElement[]): AnnotationDeclaration;
8099        createInterfaceDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
8100        updateInterfaceDeclaration(node: InterfaceDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
8101        createTypeAliasDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
8102        updateTypeAliasDeclaration(node: TypeAliasDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
8103        createEnumDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration;
8104        updateEnumDeclaration(node: EnumDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration;
8105        createModuleDeclaration(modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration;
8106        updateModuleDeclaration(node: ModuleDeclaration, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration;
8107        createModuleBlock(statements: readonly Statement[]): ModuleBlock;
8108        updateModuleBlock(node: ModuleBlock, statements: readonly Statement[]): ModuleBlock;
8109        createCaseBlock(clauses: readonly CaseOrDefaultClause[]): CaseBlock;
8110        updateCaseBlock(node: CaseBlock, clauses: readonly CaseOrDefaultClause[]): CaseBlock;
8111        createNamespaceExportDeclaration(name: string | Identifier): NamespaceExportDeclaration;
8112        updateNamespaceExportDeclaration(node: NamespaceExportDeclaration, name: Identifier): NamespaceExportDeclaration;
8113        createImportEqualsDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
8114        updateImportEqualsDeclaration(node: ImportEqualsDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
8115        createImportDeclaration(modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration;
8116        updateImportDeclaration(node: ImportDeclaration, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration;
8117        createImportClause(isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause;
8118        updateImportClause(node: ImportClause, isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause;
8119        createAssertClause(elements: NodeArray<AssertEntry>, multiLine?: boolean): AssertClause;
8120        updateAssertClause(node: AssertClause, elements: NodeArray<AssertEntry>, multiLine?: boolean): AssertClause;
8121        createAssertEntry(name: AssertionKey, value: Expression): AssertEntry;
8122        updateAssertEntry(node: AssertEntry, name: AssertionKey, value: Expression): AssertEntry;
8123        createImportTypeAssertionContainer(clause: AssertClause, multiLine?: boolean): ImportTypeAssertionContainer;
8124        updateImportTypeAssertionContainer(node: ImportTypeAssertionContainer, clause: AssertClause, multiLine?: boolean): ImportTypeAssertionContainer;
8125        createNamespaceImport(name: Identifier): NamespaceImport;
8126        updateNamespaceImport(node: NamespaceImport, name: Identifier): NamespaceImport;
8127        createNamespaceExport(name: Identifier): NamespaceExport;
8128        updateNamespaceExport(node: NamespaceExport, name: Identifier): NamespaceExport;
8129        createNamedImports(elements: readonly ImportSpecifier[]): NamedImports;
8130        updateNamedImports(node: NamedImports, elements: readonly ImportSpecifier[]): NamedImports;
8131        createImportSpecifier(isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier;
8132        updateImportSpecifier(node: ImportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier;
8133        createExportAssignment(modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment;
8134        updateExportAssignment(node: ExportAssignment, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment;
8135        createExportDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration;
8136        updateExportDeclaration(node: ExportDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration;
8137        createNamedExports(elements: readonly ExportSpecifier[]): NamedExports;
8138        updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports;
8139        createExportSpecifier(isTypeOnly: boolean, propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier;
8140        updateExportSpecifier(node: ExportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ExportSpecifier;
8141        createExternalModuleReference(expression: Expression): ExternalModuleReference;
8142        updateExternalModuleReference(node: ExternalModuleReference, expression: Expression): ExternalModuleReference;
8143        createJSDocAllType(): JSDocAllType;
8144        createJSDocUnknownType(): JSDocUnknownType;
8145        createJSDocNonNullableType(type: TypeNode, postfix?: boolean): JSDocNonNullableType;
8146        updateJSDocNonNullableType(node: JSDocNonNullableType, type: TypeNode): JSDocNonNullableType;
8147        createJSDocNullableType(type: TypeNode, postfix?: boolean): JSDocNullableType;
8148        updateJSDocNullableType(node: JSDocNullableType, type: TypeNode): JSDocNullableType;
8149        createJSDocOptionalType(type: TypeNode): JSDocOptionalType;
8150        updateJSDocOptionalType(node: JSDocOptionalType, type: TypeNode): JSDocOptionalType;
8151        createJSDocFunctionType(parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): JSDocFunctionType;
8152        updateJSDocFunctionType(node: JSDocFunctionType, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): JSDocFunctionType;
8153        createJSDocVariadicType(type: TypeNode): JSDocVariadicType;
8154        updateJSDocVariadicType(node: JSDocVariadicType, type: TypeNode): JSDocVariadicType;
8155        createJSDocNamepathType(type: TypeNode): JSDocNamepathType;
8156        updateJSDocNamepathType(node: JSDocNamepathType, type: TypeNode): JSDocNamepathType;
8157        createJSDocTypeExpression(type: TypeNode): JSDocTypeExpression;
8158        updateJSDocTypeExpression(node: JSDocTypeExpression, type: TypeNode): JSDocTypeExpression;
8159        createJSDocNameReference(name: EntityName | JSDocMemberName): JSDocNameReference;
8160        updateJSDocNameReference(node: JSDocNameReference, name: EntityName | JSDocMemberName): JSDocNameReference;
8161        createJSDocMemberName(left: EntityName | JSDocMemberName, right: Identifier): JSDocMemberName;
8162        updateJSDocMemberName(node: JSDocMemberName, left: EntityName | JSDocMemberName, right: Identifier): JSDocMemberName;
8163        createJSDocLink(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLink;
8164        updateJSDocLink(node: JSDocLink, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLink;
8165        createJSDocLinkCode(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkCode;
8166        updateJSDocLinkCode(node: JSDocLinkCode, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkCode;
8167        createJSDocLinkPlain(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkPlain;
8168        updateJSDocLinkPlain(node: JSDocLinkPlain, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkPlain;
8169        createJSDocTypeLiteral(jsDocPropertyTags?: readonly JSDocPropertyLikeTag[], isArrayType?: boolean): JSDocTypeLiteral;
8170        updateJSDocTypeLiteral(node: JSDocTypeLiteral, jsDocPropertyTags: readonly JSDocPropertyLikeTag[] | undefined, isArrayType: boolean | undefined): JSDocTypeLiteral;
8171        createJSDocSignature(typeParameters: readonly JSDocTemplateTag[] | undefined, parameters: readonly JSDocParameterTag[], type?: JSDocReturnTag): JSDocSignature;
8172        updateJSDocSignature(node: JSDocSignature, typeParameters: readonly JSDocTemplateTag[] | undefined, parameters: readonly JSDocParameterTag[], type: JSDocReturnTag | undefined): JSDocSignature;
8173        createJSDocTemplateTag(tagName: Identifier | undefined, constraint: JSDocTypeExpression | undefined, typeParameters: readonly TypeParameterDeclaration[], comment?: string | NodeArray<JSDocComment>): JSDocTemplateTag;
8174        updateJSDocTemplateTag(node: JSDocTemplateTag, tagName: Identifier | undefined, constraint: JSDocTypeExpression | undefined, typeParameters: readonly TypeParameterDeclaration[], comment: string | NodeArray<JSDocComment> | undefined): JSDocTemplateTag;
8175        createJSDocTypedefTag(tagName: Identifier | undefined, typeExpression?: JSDocTypeExpression | JSDocTypeLiteral, fullName?: Identifier | JSDocNamespaceDeclaration, comment?: string | NodeArray<JSDocComment>): JSDocTypedefTag;
8176        updateJSDocTypedefTag(node: JSDocTypedefTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | JSDocTypeLiteral | undefined, fullName: Identifier | JSDocNamespaceDeclaration | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocTypedefTag;
8177        createJSDocParameterTag(tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression, isNameFirst?: boolean, comment?: string | NodeArray<JSDocComment>): JSDocParameterTag;
8178        updateJSDocParameterTag(node: JSDocParameterTag, tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression: JSDocTypeExpression | undefined, isNameFirst: boolean, comment: string | NodeArray<JSDocComment> | undefined): JSDocParameterTag;
8179        createJSDocPropertyTag(tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression, isNameFirst?: boolean, comment?: string | NodeArray<JSDocComment>): JSDocPropertyTag;
8180        updateJSDocPropertyTag(node: JSDocPropertyTag, tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression: JSDocTypeExpression | undefined, isNameFirst: boolean, comment: string | NodeArray<JSDocComment> | undefined): JSDocPropertyTag;
8181        createJSDocTypeTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocTypeTag;
8182        updateJSDocTypeTag(node: JSDocTypeTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment: string | NodeArray<JSDocComment> | undefined): JSDocTypeTag;
8183        createJSDocSeeTag(tagName: Identifier | undefined, nameExpression: JSDocNameReference | undefined, comment?: string | NodeArray<JSDocComment>): JSDocSeeTag;
8184        updateJSDocSeeTag(node: JSDocSeeTag, tagName: Identifier | undefined, nameExpression: JSDocNameReference | undefined, comment?: string | NodeArray<JSDocComment>): JSDocSeeTag;
8185        createJSDocReturnTag(tagName: Identifier | undefined, typeExpression?: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocReturnTag;
8186        updateJSDocReturnTag(node: JSDocReturnTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocReturnTag;
8187        createJSDocThisTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocThisTag;
8188        updateJSDocThisTag(node: JSDocThisTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocThisTag;
8189        createJSDocEnumTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocEnumTag;
8190        updateJSDocEnumTag(node: JSDocEnumTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment: string | NodeArray<JSDocComment> | undefined): JSDocEnumTag;
8191        createJSDocCallbackTag(tagName: Identifier | undefined, typeExpression: JSDocSignature, fullName?: Identifier | JSDocNamespaceDeclaration, comment?: string | NodeArray<JSDocComment>): JSDocCallbackTag;
8192        updateJSDocCallbackTag(node: JSDocCallbackTag, tagName: Identifier | undefined, typeExpression: JSDocSignature, fullName: Identifier | JSDocNamespaceDeclaration | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocCallbackTag;
8193        createJSDocAugmentsTag(tagName: Identifier | undefined, className: JSDocAugmentsTag["class"], comment?: string | NodeArray<JSDocComment>): JSDocAugmentsTag;
8194        updateJSDocAugmentsTag(node: JSDocAugmentsTag, tagName: Identifier | undefined, className: JSDocAugmentsTag["class"], comment: string | NodeArray<JSDocComment> | undefined): JSDocAugmentsTag;
8195        createJSDocImplementsTag(tagName: Identifier | undefined, className: JSDocImplementsTag["class"], comment?: string | NodeArray<JSDocComment>): JSDocImplementsTag;
8196        updateJSDocImplementsTag(node: JSDocImplementsTag, tagName: Identifier | undefined, className: JSDocImplementsTag["class"], comment: string | NodeArray<JSDocComment> | undefined): JSDocImplementsTag;
8197        createJSDocAuthorTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocAuthorTag;
8198        updateJSDocAuthorTag(node: JSDocAuthorTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocAuthorTag;
8199        createJSDocClassTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocClassTag;
8200        updateJSDocClassTag(node: JSDocClassTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocClassTag;
8201        createJSDocPublicTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocPublicTag;
8202        updateJSDocPublicTag(node: JSDocPublicTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocPublicTag;
8203        createJSDocPrivateTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocPrivateTag;
8204        updateJSDocPrivateTag(node: JSDocPrivateTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocPrivateTag;
8205        createJSDocProtectedTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocProtectedTag;
8206        updateJSDocProtectedTag(node: JSDocProtectedTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocProtectedTag;
8207        createJSDocReadonlyTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocReadonlyTag;
8208        updateJSDocReadonlyTag(node: JSDocReadonlyTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocReadonlyTag;
8209        createJSDocUnknownTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocUnknownTag;
8210        updateJSDocUnknownTag(node: JSDocUnknownTag, tagName: Identifier, comment: string | NodeArray<JSDocComment> | undefined): JSDocUnknownTag;
8211        createJSDocDeprecatedTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocDeprecatedTag;
8212        updateJSDocDeprecatedTag(node: JSDocDeprecatedTag, tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocDeprecatedTag;
8213        createJSDocOverrideTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocOverrideTag;
8214        updateJSDocOverrideTag(node: JSDocOverrideTag, tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocOverrideTag;
8215        createJSDocText(text: string): JSDocText;
8216        updateJSDocText(node: JSDocText, text: string): JSDocText;
8217        createJSDocComment(comment?: string | NodeArray<JSDocComment> | undefined, tags?: readonly JSDocTag[] | undefined): JSDoc;
8218        updateJSDocComment(node: JSDoc, comment: string | NodeArray<JSDocComment> | undefined, tags: readonly JSDocTag[] | undefined): JSDoc;
8219        createJsxElement(openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement): JsxElement;
8220        updateJsxElement(node: JsxElement, openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement): JsxElement;
8221        createJsxSelfClosingElement(tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxSelfClosingElement;
8222        updateJsxSelfClosingElement(node: JsxSelfClosingElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxSelfClosingElement;
8223        createJsxOpeningElement(tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxOpeningElement;
8224        updateJsxOpeningElement(node: JsxOpeningElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxOpeningElement;
8225        createJsxClosingElement(tagName: JsxTagNameExpression): JsxClosingElement;
8226        updateJsxClosingElement(node: JsxClosingElement, tagName: JsxTagNameExpression): JsxClosingElement;
8227        createJsxFragment(openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment): JsxFragment;
8228        createJsxText(text: string, containsOnlyTriviaWhiteSpaces?: boolean): JsxText;
8229        updateJsxText(node: JsxText, text: string, containsOnlyTriviaWhiteSpaces?: boolean): JsxText;
8230        createJsxOpeningFragment(): JsxOpeningFragment;
8231        createJsxJsxClosingFragment(): JsxClosingFragment;
8232        updateJsxFragment(node: JsxFragment, openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment): JsxFragment;
8233        createJsxAttribute(name: Identifier, initializer: JsxAttributeValue | undefined): JsxAttribute;
8234        updateJsxAttribute(node: JsxAttribute, name: Identifier, initializer: JsxAttributeValue | undefined): JsxAttribute;
8235        createJsxAttributes(properties: readonly JsxAttributeLike[]): JsxAttributes;
8236        updateJsxAttributes(node: JsxAttributes, properties: readonly JsxAttributeLike[]): JsxAttributes;
8237        createJsxSpreadAttribute(expression: Expression): JsxSpreadAttribute;
8238        updateJsxSpreadAttribute(node: JsxSpreadAttribute, expression: Expression): JsxSpreadAttribute;
8239        createJsxExpression(dotDotDotToken: DotDotDotToken | undefined, expression: Expression | undefined): JsxExpression;
8240        updateJsxExpression(node: JsxExpression, expression: Expression | undefined): JsxExpression;
8241        createCaseClause(expression: Expression, statements: readonly Statement[]): CaseClause;
8242        updateCaseClause(node: CaseClause, expression: Expression, statements: readonly Statement[]): CaseClause;
8243        createDefaultClause(statements: readonly Statement[]): DefaultClause;
8244        updateDefaultClause(node: DefaultClause, statements: readonly Statement[]): DefaultClause;
8245        createHeritageClause(token: HeritageClause["token"], types: readonly ExpressionWithTypeArguments[]): HeritageClause;
8246        updateHeritageClause(node: HeritageClause, types: readonly ExpressionWithTypeArguments[]): HeritageClause;
8247        createCatchClause(variableDeclaration: string | BindingName | VariableDeclaration | undefined, block: Block): CatchClause;
8248        updateCatchClause(node: CatchClause, variableDeclaration: VariableDeclaration | undefined, block: Block): CatchClause;
8249        createPropertyAssignment(name: string | PropertyName, initializer: Expression): PropertyAssignment;
8250        updatePropertyAssignment(node: PropertyAssignment, name: PropertyName, initializer: Expression): PropertyAssignment;
8251        createShorthandPropertyAssignment(name: string | Identifier, objectAssignmentInitializer?: Expression): ShorthandPropertyAssignment;
8252        updateShorthandPropertyAssignment(node: ShorthandPropertyAssignment, name: Identifier, objectAssignmentInitializer: Expression | undefined): ShorthandPropertyAssignment;
8253        createSpreadAssignment(expression: Expression): SpreadAssignment;
8254        updateSpreadAssignment(node: SpreadAssignment, expression: Expression): SpreadAssignment;
8255        createEnumMember(name: string | PropertyName, initializer?: Expression): EnumMember;
8256        updateEnumMember(node: EnumMember, name: PropertyName, initializer: Expression | undefined): EnumMember;
8257        createSourceFile(statements: readonly Statement[], endOfFileToken: EndOfFileToken, flags: NodeFlags): SourceFile;
8258        updateSourceFile(node: SourceFile, statements: readonly Statement[], isDeclarationFile?: boolean, referencedFiles?: readonly FileReference[], typeReferences?: readonly FileReference[], hasNoDefaultLib?: boolean, libReferences?: readonly FileReference[]): SourceFile;
8259        createNotEmittedStatement(original: Node): NotEmittedStatement;
8260        createPartiallyEmittedExpression(expression: Expression, original?: Node): PartiallyEmittedExpression;
8261        updatePartiallyEmittedExpression(node: PartiallyEmittedExpression, expression: Expression): PartiallyEmittedExpression;
8262        createCommaListExpression(elements: readonly Expression[]): CommaListExpression;
8263        updateCommaListExpression(node: CommaListExpression, elements: readonly Expression[]): CommaListExpression;
8264        createBundle(sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle;
8265        updateBundle(node: Bundle, sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle;
8266        createComma(left: Expression, right: Expression): BinaryExpression;
8267        createAssignment(left: ObjectLiteralExpression | ArrayLiteralExpression, right: Expression): DestructuringAssignment;
8268        createAssignment(left: Expression, right: Expression): AssignmentExpression<EqualsToken>;
8269        createLogicalOr(left: Expression, right: Expression): BinaryExpression;
8270        createLogicalAnd(left: Expression, right: Expression): BinaryExpression;
8271        createBitwiseOr(left: Expression, right: Expression): BinaryExpression;
8272        createBitwiseXor(left: Expression, right: Expression): BinaryExpression;
8273        createBitwiseAnd(left: Expression, right: Expression): BinaryExpression;
8274        createStrictEquality(left: Expression, right: Expression): BinaryExpression;
8275        createStrictInequality(left: Expression, right: Expression): BinaryExpression;
8276        createEquality(left: Expression, right: Expression): BinaryExpression;
8277        createInequality(left: Expression, right: Expression): BinaryExpression;
8278        createLessThan(left: Expression, right: Expression): BinaryExpression;
8279        createLessThanEquals(left: Expression, right: Expression): BinaryExpression;
8280        createGreaterThan(left: Expression, right: Expression): BinaryExpression;
8281        createGreaterThanEquals(left: Expression, right: Expression): BinaryExpression;
8282        createLeftShift(left: Expression, right: Expression): BinaryExpression;
8283        createRightShift(left: Expression, right: Expression): BinaryExpression;
8284        createUnsignedRightShift(left: Expression, right: Expression): BinaryExpression;
8285        createAdd(left: Expression, right: Expression): BinaryExpression;
8286        createSubtract(left: Expression, right: Expression): BinaryExpression;
8287        createMultiply(left: Expression, right: Expression): BinaryExpression;
8288        createDivide(left: Expression, right: Expression): BinaryExpression;
8289        createModulo(left: Expression, right: Expression): BinaryExpression;
8290        createExponent(left: Expression, right: Expression): BinaryExpression;
8291        createPrefixPlus(operand: Expression): PrefixUnaryExpression;
8292        createPrefixMinus(operand: Expression): PrefixUnaryExpression;
8293        createPrefixIncrement(operand: Expression): PrefixUnaryExpression;
8294        createPrefixDecrement(operand: Expression): PrefixUnaryExpression;
8295        createBitwiseNot(operand: Expression): PrefixUnaryExpression;
8296        createLogicalNot(operand: Expression): PrefixUnaryExpression;
8297        createPostfixIncrement(operand: Expression): PostfixUnaryExpression;
8298        createPostfixDecrement(operand: Expression): PostfixUnaryExpression;
8299        createImmediatelyInvokedFunctionExpression(statements: readonly Statement[]): CallExpression;
8300        createImmediatelyInvokedFunctionExpression(statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression;
8301        createImmediatelyInvokedArrowFunction(statements: readonly Statement[]): CallExpression;
8302        createImmediatelyInvokedArrowFunction(statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression;
8303        createVoidZero(): VoidExpression;
8304        createExportDefault(expression: Expression): ExportAssignment;
8305        createExternalModuleExport(exportName: Identifier): ExportDeclaration;
8306        restoreOuterExpressions(outerExpression: Expression | undefined, innerExpression: Expression, kinds?: OuterExpressionKinds): Expression;
8307    }
8308    interface NodeFactory {
8309        /** @deprecated Use the overload that accepts 'modifiers' */
8310        createConstructorTypeNode(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): ConstructorTypeNode;
8311        /** @deprecated Use the overload that accepts 'modifiers' */
8312        updateConstructorTypeNode(node: ConstructorTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): ConstructorTypeNode;
8313    }
8314    interface NodeFactory {
8315        createImportTypeNode(argument: TypeNode, assertions?: ImportTypeAssertionContainer, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode;
8316        /** @deprecated Use the overload that accepts 'assertions' */
8317        createImportTypeNode(argument: TypeNode, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode;
8318        /** @deprecated Use the overload that accepts 'assertions' */
8319        updateImportTypeNode(node: ImportTypeNode, argument: TypeNode, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean): ImportTypeNode;
8320    }
8321    interface NodeFactory {
8322        /** @deprecated Use the overload that accepts 'modifiers' */
8323        createTypeParameterDeclaration(name: string | Identifier, constraint?: TypeNode, defaultType?: TypeNode): TypeParameterDeclaration;
8324        /** @deprecated Use the overload that accepts 'modifiers' */
8325        updateTypeParameterDeclaration(node: TypeParameterDeclaration, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration;
8326    }
8327    interface NodeFactory {
8328        /**
8329         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8330         */
8331        createParameterDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken, type?: TypeNode, initializer?: Expression): ParameterDeclaration;
8332        /**
8333         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8334         */
8335        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;
8336        /**
8337         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8338         */
8339        createPropertyDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
8340        /**
8341         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8342         */
8343        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;
8344        /**
8345         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8346         */
8347        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;
8348        /**
8349         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8350         */
8351        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;
8352        /**
8353         * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter.
8354         */
8355        createConstructorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
8356        /**
8357         * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter.
8358         */
8359        updateConstructorDeclaration(node: ConstructorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
8360        /**
8361         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8362         */
8363        createGetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
8364        /**
8365         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8366         */
8367        updateGetAccessorDeclaration(node: GetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
8368        /**
8369         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8370         */
8371        createSetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
8372        /**
8373         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8374         */
8375        updateSetAccessorDeclaration(node: SetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
8376        /**
8377         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8378         */
8379        createIndexSignature(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
8380        /**
8381         * @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.
8382         */
8383        updateIndexSignature(node: IndexSignatureDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
8384        /**
8385         * @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.
8386         */
8387        createClassStaticBlockDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration;
8388        /**
8389         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8390         */
8391        updateClassStaticBlockDeclaration(node: ClassStaticBlockDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration;
8392        /**
8393         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8394         */
8395        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;
8396        /**
8397         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8398         */
8399        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;
8400        /**
8401         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8402         */
8403        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;
8404        /**
8405         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8406         */
8407        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;
8408        /**
8409         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8410         */
8411        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;
8412        /**
8413         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8414         */
8415        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;
8416        /**
8417         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8418         */
8419        createInterfaceDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
8420        /**
8421         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8422         */
8423        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;
8424        /**
8425         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8426         */
8427        createTypeAliasDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
8428        /**
8429         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8430         */
8431        updateTypeAliasDeclaration(node: TypeAliasDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
8432        /**
8433         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8434         */
8435        createEnumDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration;
8436        /**
8437         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8438         */
8439        updateEnumDeclaration(node: EnumDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration;
8440        /**
8441         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8442         */
8443        createModuleDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration;
8444        /**
8445         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8446         */
8447        updateModuleDeclaration(node: ModuleDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration;
8448        /**
8449         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8450         */
8451        createImportEqualsDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
8452        /**
8453         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8454         */
8455        updateImportEqualsDeclaration(node: ImportEqualsDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
8456        /**
8457         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8458         */
8459        createImportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration;
8460        /**
8461         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8462         */
8463        updateImportDeclaration(node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration;
8464        /**
8465         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8466         */
8467        createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment;
8468        /**
8469         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8470         */
8471        updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment;
8472        /**
8473         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8474         */
8475        createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration;
8476        /**
8477         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8478         */
8479        updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration;
8480    }
8481    interface CoreTransformationContext {
8482        readonly factory: NodeFactory;
8483        /** Gets the compiler options supplied to the transformer. */
8484        getCompilerOptions(): CompilerOptions;
8485        /** Starts a new lexical environment. */
8486        startLexicalEnvironment(): void;
8487        /** Suspends the current lexical environment, usually after visiting a parameter list. */
8488        suspendLexicalEnvironment(): void;
8489        /** Resumes a suspended lexical environment, usually before visiting a function body. */
8490        resumeLexicalEnvironment(): void;
8491        /** Ends a lexical environment, returning any declarations. */
8492        endLexicalEnvironment(): Statement[] | undefined;
8493        /** Hoists a function declaration to the containing scope. */
8494        hoistFunctionDeclaration(node: FunctionDeclaration): void;
8495        /** Hoists a variable declaration to the containing scope. */
8496        hoistVariableDeclaration(node: Identifier): void;
8497    }
8498    interface TransformationContext extends CoreTransformationContext {
8499        /** Records a request for a non-scoped emit helper in the current context. */
8500        requestEmitHelper(helper: EmitHelper): void;
8501        /** Gets and resets the requested non-scoped emit helpers. */
8502        readEmitHelpers(): EmitHelper[] | undefined;
8503        /** Enables expression substitutions in the pretty printer for the provided SyntaxKind. */
8504        enableSubstitution(kind: SyntaxKind): void;
8505        /** Determines whether expression substitutions are enabled for the provided node. */
8506        isSubstitutionEnabled(node: Node): boolean;
8507        /**
8508         * Hook used by transformers to substitute expressions just before they
8509         * are emitted by the pretty printer.
8510         *
8511         * NOTE: Transformation hooks should only be modified during `Transformer` initialization,
8512         * before returning the `NodeTransformer` callback.
8513         */
8514        onSubstituteNode: (hint: EmitHint, node: Node) => Node;
8515        /**
8516         * Enables before/after emit notifications in the pretty printer for the provided
8517         * SyntaxKind.
8518         */
8519        enableEmitNotification(kind: SyntaxKind): void;
8520        /**
8521         * Determines whether before/after emit notifications should be raised in the pretty
8522         * printer when it emits a node.
8523         */
8524        isEmitNotificationEnabled(node: Node): boolean;
8525        /**
8526         * Hook used to allow transformers to capture state before or after
8527         * the printer emits a node.
8528         *
8529         * NOTE: Transformation hooks should only be modified during `Transformer` initialization,
8530         * before returning the `NodeTransformer` callback.
8531         */
8532        onEmitNode: (hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void) => void;
8533        /** Determines whether the lexical environment is suspended */
8534        isLexicalEnvironmentSuspended?(): boolean;
8535    }
8536    interface TransformationResult<T extends Node> {
8537        /** Gets the transformed source files. */
8538        transformed: T[];
8539        /** Gets diagnostics for the transformation. */
8540        diagnostics?: DiagnosticWithLocation[];
8541        /**
8542         * Gets a substitute for a node, if one is available; otherwise, returns the original node.
8543         *
8544         * @param hint A hint as to the intended usage of the node.
8545         * @param node The node to substitute.
8546         */
8547        substituteNode(hint: EmitHint, node: Node): Node;
8548        /**
8549         * Emits a node with possible notification.
8550         *
8551         * @param hint A hint as to the intended usage of the node.
8552         * @param node The node to emit.
8553         * @param emitCallback A callback used to emit the node.
8554         */
8555        emitNodeWithNotification(hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void): void;
8556        /**
8557         * Indicates if a given node needs an emit notification
8558         *
8559         * @param node The node to emit.
8560         */
8561        isEmitNotificationEnabled?(node: Node): boolean;
8562        /**
8563         * Clean up EmitNode entries on any parse-tree nodes.
8564         */
8565        dispose(): void;
8566    }
8567    /**
8568     * A function that is used to initialize and return a `Transformer` callback, which in turn
8569     * will be used to transform one or more nodes.
8570     */
8571    type TransformerFactory<T extends Node> = (context: TransformationContext) => Transformer<T>;
8572    /**
8573     * A function that transforms a node.
8574     */
8575    type Transformer<T extends Node> = (node: T) => T;
8576    /**
8577     * A function that accepts and possibly transforms a node.
8578     */
8579    type Visitor = (node: Node) => VisitResult<Node>;
8580    interface NodeVisitor {
8581        <T extends Node>(nodes: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T;
8582        <T extends Node>(nodes: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined;
8583    }
8584    interface NodesVisitor {
8585        <T extends Node>(nodes: NodeArray<T>, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T>;
8586        <T extends Node>(nodes: NodeArray<T> | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T> | undefined;
8587    }
8588    type VisitResult<T extends Node> = T | readonly T[] | undefined;
8589    interface Printer {
8590        /**
8591         * Print a node and its subtree as-is, without any emit transformations.
8592         * @param hint A value indicating the purpose of a node. This is primarily used to
8593         * distinguish between an `Identifier` used in an expression position, versus an
8594         * `Identifier` used as an `IdentifierName` as part of a declaration. For most nodes you
8595         * should just pass `Unspecified`.
8596         * @param node The node to print. The node and its subtree are printed as-is, without any
8597         * emit transformations.
8598         * @param sourceFile A source file that provides context for the node. The source text of
8599         * the file is used to emit the original source content for literals and identifiers, while
8600         * the identifiers of the source file are used when generating unique names to avoid
8601         * collisions.
8602         */
8603        printNode(hint: EmitHint, node: Node, sourceFile: SourceFile): string;
8604        /**
8605         * Prints a list of nodes using the given format flags
8606         */
8607        printList<T extends Node>(format: ListFormat, list: NodeArray<T>, sourceFile: SourceFile): string;
8608        /**
8609         * Prints a source file as-is, without any emit transformations.
8610         */
8611        printFile(sourceFile: SourceFile): string;
8612        /**
8613         * Prints a bundle of source files as-is, without any emit transformations.
8614         */
8615        printBundle(bundle: Bundle): string;
8616        writeFile(sourceFile: SourceFile, writer: EmitTextWriter, sourceMapGenerator: SourceMapGenerator | undefined): void;
8617    }
8618    interface PrintHandlers {
8619        /**
8620         * A hook used by the Printer when generating unique names to avoid collisions with
8621         * globally defined names that exist outside of the current source file.
8622         */
8623        hasGlobalName?(name: string): boolean;
8624        /**
8625         * A hook used by the Printer to provide notifications prior to emitting a node. A
8626         * compatible implementation **must** invoke `emitCallback` with the provided `hint` and
8627         * `node` values.
8628         * @param hint A hint indicating the intended purpose of the node.
8629         * @param node The node to emit.
8630         * @param emitCallback A callback that, when invoked, will emit the node.
8631         * @example
8632         * ```ts
8633         * var printer = createPrinter(printerOptions, {
8634         *   onEmitNode(hint, node, emitCallback) {
8635         *     // set up or track state prior to emitting the node...
8636         *     emitCallback(hint, node);
8637         *     // restore state after emitting the node...
8638         *   }
8639         * });
8640         * ```
8641         */
8642        onEmitNode?(hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void): void;
8643        /**
8644         * A hook used to check if an emit notification is required for a node.
8645         * @param node The node to emit.
8646         */
8647        isEmitNotificationEnabled?(node: Node): boolean;
8648        /**
8649         * A hook used by the Printer to perform just-in-time substitution of a node. This is
8650         * primarily used by node transformations that need to substitute one node for another,
8651         * such as replacing `myExportedVar` with `exports.myExportedVar`.
8652         * @param hint A hint indicating the intended purpose of the node.
8653         * @param node The node to emit.
8654         * @example
8655         * ```ts
8656         * var printer = createPrinter(printerOptions, {
8657         *   substituteNode(hint, node) {
8658         *     // perform substitution if necessary...
8659         *     return node;
8660         *   }
8661         * });
8662         * ```
8663         */
8664        substituteNode?(hint: EmitHint, node: Node): Node;
8665    }
8666    interface PrinterOptions {
8667        removeComments?: boolean;
8668        newLine?: NewLineKind;
8669        omitTrailingSemicolon?: boolean;
8670        noEmitHelpers?: boolean;
8671        sourceMap?: boolean;
8672        inlineSourceMap?: boolean;
8673        inlineSources?: boolean;
8674    }
8675    interface RawSourceMap {
8676        version: 3;
8677        file: string;
8678        sourceRoot?: string | null;
8679        sources: string[];
8680        sourcesContent?: (string | null)[] | null;
8681        mappings: string;
8682        names?: string[] | null;
8683    }
8684    /**
8685     * Generates a source map.
8686     */
8687    interface SourceMapGenerator {
8688        getSources(): readonly string[];
8689        /**
8690         * Adds a source to the source map.
8691         */
8692        addSource(fileName: string): number;
8693        /**
8694         * Set the content for a source.
8695         */
8696        setSourceContent(sourceIndex: number, content: string | null): void;
8697        /**
8698         * Adds a name.
8699         */
8700        addName(name: string): number;
8701        /**
8702         * Adds a mapping without source information.
8703         */
8704        addMapping(generatedLine: number, generatedCharacter: number): void;
8705        /**
8706         * Adds a mapping with source information.
8707         */
8708        addMapping(generatedLine: number, generatedCharacter: number, sourceIndex: number, sourceLine: number, sourceCharacter: number, nameIndex?: number): void;
8709        /**
8710         * Appends a source map.
8711         */
8712        appendSourceMap(generatedLine: number, generatedCharacter: number, sourceMap: RawSourceMap, sourceMapPath: string, start?: LineAndCharacter, end?: LineAndCharacter): void;
8713        /**
8714         * Gets the source map as a `RawSourceMap` object.
8715         */
8716        toJSON(): RawSourceMap;
8717        /**
8718         * Gets the string representation of the source map.
8719         */
8720        toString(): string;
8721    }
8722    interface EmitTextWriter extends SymbolWriter {
8723        write(s: string): void;
8724        writeTrailingSemicolon(text: string): void;
8725        writeComment(text: string): void;
8726        getText(): string;
8727        rawWrite(s: string): void;
8728        writeLiteral(s: string): void;
8729        getTextPos(): number;
8730        getLine(): number;
8731        getColumn(): number;
8732        getIndent(): number;
8733        isAtStartOfLine(): boolean;
8734        hasTrailingComment(): boolean;
8735        hasTrailingWhitespace(): boolean;
8736        getTextPosWithWriteLine?(): number;
8737        nonEscapingWrite?(text: string): void;
8738    }
8739    interface GetEffectiveTypeRootsHost {
8740        directoryExists?(directoryName: string): boolean;
8741        getCurrentDirectory?(): string;
8742    }
8743    interface ModuleSpecifierResolutionHost {
8744        useCaseSensitiveFileNames?(): boolean;
8745        fileExists(path: string): boolean;
8746        getCurrentDirectory(): string;
8747        directoryExists?(path: string): boolean;
8748        readFile?(path: string): string | undefined;
8749        realpath?(path: string): string;
8750        getModuleSpecifierCache?(): ModuleSpecifierCache;
8751        getPackageJsonInfoCache?(): PackageJsonInfoCache | undefined;
8752        getGlobalTypingsCacheLocation?(): string | undefined;
8753        getNearestAncestorDirectoryWithPackageJson?(fileName: string, rootDir?: string): string | undefined;
8754        readonly redirectTargetsMap: RedirectTargetsMap;
8755        getProjectReferenceRedirect(fileName: string): string | undefined;
8756        isSourceOfProjectReferenceRedirect(fileName: string): boolean;
8757    }
8758    interface ModulePath {
8759        path: string;
8760        isInNodeModules: boolean;
8761        isRedirect: boolean;
8762    }
8763    interface ResolvedModuleSpecifierInfo {
8764        modulePaths: readonly ModulePath[] | undefined;
8765        moduleSpecifiers: readonly string[] | undefined;
8766        isBlockedByPackageJsonDependencies: boolean | undefined;
8767    }
8768    interface ModuleSpecifierOptions {
8769        overrideImportMode?: SourceFile["impliedNodeFormat"];
8770    }
8771    interface ModuleSpecifierCache {
8772        get(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions): Readonly<ResolvedModuleSpecifierInfo> | undefined;
8773        set(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, modulePaths: readonly ModulePath[], moduleSpecifiers: readonly string[]): void;
8774        setBlockedByPackageJsonDependencies(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, isBlockedByPackageJsonDependencies: boolean): void;
8775        setModulePaths(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, modulePaths: readonly ModulePath[]): void;
8776        clear(): void;
8777        count(): number;
8778    }
8779    interface SymbolTracker {
8780        trackSymbol?(symbol: Symbol, enclosingDeclaration: Node | undefined, meaning: SymbolFlags): boolean;
8781        reportInaccessibleThisError?(): void;
8782        reportPrivateInBaseOfClassExpression?(propertyName: string): void;
8783        reportInaccessibleUniqueSymbolError?(): void;
8784        reportCyclicStructureError?(): void;
8785        reportLikelyUnsafeImportRequiredError?(specifier: string): void;
8786        reportTruncationError?(): void;
8787        moduleResolverHost?: ModuleSpecifierResolutionHost & {
8788            getCommonSourceDirectory(): string;
8789        };
8790        trackReferencedAmbientModule?(decl: ModuleDeclaration, symbol: Symbol): void;
8791        trackExternalModuleSymbolOfImportTypeNode?(symbol: Symbol): void;
8792        reportNonlocalAugmentation?(containingFile: SourceFile, parentSymbol: Symbol, augmentingSymbol: Symbol): void;
8793        reportNonSerializableProperty?(propertyName: string): void;
8794        reportImportTypeNodeResolutionModeOverride?(): void;
8795    }
8796    interface TextSpan {
8797        start: number;
8798        length: number;
8799    }
8800    interface TextChangeRange {
8801        span: TextSpan;
8802        newLength: number;
8803    }
8804    interface SyntaxList extends Node {
8805        kind: SyntaxKind.SyntaxList;
8806        _children: Node[];
8807    }
8808    enum ListFormat {
8809        None = 0,
8810        SingleLine = 0,
8811        MultiLine = 1,
8812        PreserveLines = 2,
8813        LinesMask = 3,
8814        NotDelimited = 0,
8815        BarDelimited = 4,
8816        AmpersandDelimited = 8,
8817        CommaDelimited = 16,
8818        AsteriskDelimited = 32,
8819        DelimitersMask = 60,
8820        AllowTrailingComma = 64,
8821        Indented = 128,
8822        SpaceBetweenBraces = 256,
8823        SpaceBetweenSiblings = 512,
8824        Braces = 1024,
8825        Parenthesis = 2048,
8826        AngleBrackets = 4096,
8827        SquareBrackets = 8192,
8828        BracketsMask = 15360,
8829        OptionalIfUndefined = 16384,
8830        OptionalIfEmpty = 32768,
8831        Optional = 49152,
8832        PreferNewLine = 65536,
8833        NoTrailingNewLine = 131072,
8834        NoInterveningComments = 262144,
8835        NoSpaceIfEmpty = 524288,
8836        SingleElement = 1048576,
8837        SpaceAfterList = 2097152,
8838        Modifiers = 2359808,
8839        HeritageClauses = 512,
8840        SingleLineTypeLiteralMembers = 768,
8841        MultiLineTypeLiteralMembers = 32897,
8842        SingleLineTupleTypeElements = 528,
8843        MultiLineTupleTypeElements = 657,
8844        UnionTypeConstituents = 516,
8845        IntersectionTypeConstituents = 520,
8846        ObjectBindingPatternElements = 525136,
8847        ArrayBindingPatternElements = 524880,
8848        ObjectLiteralExpressionProperties = 526226,
8849        ImportClauseEntries = 526226,
8850        ArrayLiteralExpressionElements = 8914,
8851        CommaListElements = 528,
8852        CallExpressionArguments = 2576,
8853        NewExpressionArguments = 18960,
8854        TemplateExpressionSpans = 262144,
8855        SingleLineBlockStatements = 768,
8856        MultiLineBlockStatements = 129,
8857        VariableDeclarationList = 528,
8858        SingleLineFunctionBodyStatements = 768,
8859        MultiLineFunctionBodyStatements = 1,
8860        ClassHeritageClauses = 0,
8861        ClassMembers = 129,
8862        InterfaceMembers = 129,
8863        EnumMembers = 145,
8864        CaseBlockClauses = 129,
8865        NamedImportsOrExportsElements = 525136,
8866        JsxElementOrFragmentChildren = 262144,
8867        JsxElementAttributes = 262656,
8868        CaseOrDefaultClauseStatements = 163969,
8869        HeritageClauseTypes = 528,
8870        SourceFileStatements = 131073,
8871        Decorators = 2146305,
8872        TypeArguments = 53776,
8873        TypeParameters = 53776,
8874        Parameters = 2576,
8875        IndexSignatureParameters = 8848,
8876        JSDocComment = 33
8877    }
8878    interface UserPreferences {
8879        readonly disableSuggestions?: boolean;
8880        readonly quotePreference?: "auto" | "double" | "single";
8881        readonly includeCompletionsForModuleExports?: boolean;
8882        readonly includeCompletionsForImportStatements?: boolean;
8883        readonly includeCompletionsWithSnippetText?: boolean;
8884        readonly includeAutomaticOptionalChainCompletions?: boolean;
8885        readonly includeCompletionsWithInsertText?: boolean;
8886        readonly includeCompletionsWithClassMemberSnippets?: boolean;
8887        readonly includeCompletionsWithObjectLiteralMethodSnippets?: boolean;
8888        readonly useLabelDetailsInCompletionEntries?: boolean;
8889        readonly allowIncompleteCompletions?: boolean;
8890        readonly importModuleSpecifierPreference?: "shortest" | "project-relative" | "relative" | "non-relative";
8891        /** Determines whether we import `foo/index.ts` as "foo", "foo/index", or "foo/index.js" */
8892        readonly importModuleSpecifierEnding?: "auto" | "minimal" | "index" | "js";
8893        readonly allowTextChangesInNewFiles?: boolean;
8894        readonly providePrefixAndSuffixTextForRename?: boolean;
8895        readonly includePackageJsonAutoImports?: "auto" | "on" | "off";
8896        readonly provideRefactorNotApplicableReason?: boolean;
8897        readonly jsxAttributeCompletionStyle?: "auto" | "braces" | "none";
8898        readonly includeInlayParameterNameHints?: "none" | "literals" | "all";
8899        readonly includeInlayParameterNameHintsWhenArgumentMatchesName?: boolean;
8900        readonly includeInlayFunctionParameterTypeHints?: boolean;
8901        readonly includeInlayVariableTypeHints?: boolean;
8902        readonly includeInlayVariableTypeHintsWhenTypeMatchesName?: boolean;
8903        readonly includeInlayPropertyDeclarationTypeHints?: boolean;
8904        readonly includeInlayFunctionLikeReturnTypeHints?: boolean;
8905        readonly includeInlayEnumMemberValueHints?: boolean;
8906        readonly allowRenameOfImportPath?: boolean;
8907        readonly autoImportFileExcludePatterns?: string[];
8908    }
8909    /** Represents a bigint literal value without requiring bigint support */
8910    interface PseudoBigInt {
8911        negative: boolean;
8912        base10Value: string;
8913    }
8914    function getNodeMajorVersion(): number | undefined;
8915    enum FileWatcherEventKind {
8916        Created = 0,
8917        Changed = 1,
8918        Deleted = 2
8919    }
8920    type FileWatcherCallback = (fileName: string, eventKind: FileWatcherEventKind, modifiedTime?: Date) => void;
8921    type DirectoryWatcherCallback = (fileName: string) => void;
8922    interface System {
8923        args: string[];
8924        newLine: string;
8925        useCaseSensitiveFileNames: boolean;
8926        write(s: string): void;
8927        writeOutputIsTTY?(): boolean;
8928        getWidthOfTerminal?(): number;
8929        readFile(path: string, encoding?: string): string | undefined;
8930        getFileSize?(path: string): number;
8931        writeFile(path: string, data: string, writeByteOrderMark?: boolean): void;
8932        /**
8933         * @pollingInterval - this parameter is used in polling-based watchers and ignored in watchers that
8934         * use native OS file watching
8935         */
8936        watchFile?(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher;
8937        watchDirectory?(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher;
8938        resolvePath(path: string): string;
8939        fileExists(path: string): boolean;
8940        directoryExists(path: string): boolean;
8941        createDirectory(path: string): void;
8942        getExecutingFilePath(): string;
8943        getCurrentDirectory(): string;
8944        getDirectories(path: string): string[];
8945        readDirectory(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
8946        getModifiedTime?(path: string): Date | undefined;
8947        setModifiedTime?(path: string, time: Date): void;
8948        deleteFile?(path: string): void;
8949        /**
8950         * A good implementation is node.js' `crypto.createHash`. (https://nodejs.org/api/crypto.html#crypto_crypto_createhash_algorithm)
8951         */
8952        createHash?(data: string): string;
8953        /** This must be cryptographically secure. Only implement this method using `crypto.createHash("sha256")`. */
8954        createSHA256Hash?(data: string): string;
8955        getMemoryUsage?(): number;
8956        exit(exitCode?: number): void;
8957        realpath?(path: string): string;
8958        setTimeout?(callback: (...args: any[]) => void, ms: number, ...args: any[]): any;
8959        clearTimeout?(timeoutId: any): void;
8960        clearScreen?(): void;
8961        base64decode?(input: string): string;
8962        base64encode?(input: string): string;
8963    }
8964    interface FileWatcher {
8965        close(): void;
8966    }
8967    let sys: System;
8968    namespace MemoryDotting {
8969        interface RecordInfo {
8970            recordStage: string;
8971            recordIndex: number;
8972        }
8973        const BINDE_SOURCE_FILE = "binder(bindSourceFile: Bind)";
8974        const CHECK_SOURCE_FILE = "checker(checkSourceFile: Check)";
8975        const EMIT_FILES = "emitter(emitFiles: EmitEachOutputFile)";
8976        const CREATE_SORUCE_FILE_PARSE = "parser(createSourceFile: Parse)";
8977        const BEFORE_PROGRAM = "program(createProgram: beforeProgram)";
8978        const TRANSFORM = "transformer(transformNodes: Transform)";
8979        function recordStage(stage: string): RecordInfo | null;
8980        function stopRecordStage(recordInfo: RecordInfo | null): void;
8981        function setMemoryDottingCallBack(recordCallback: (stage: string) => RecordInfo, stopCallback: (recordInfo: RecordInfo) => void): void;
8982        function clearCallBack(): void;
8983    }
8984    function tokenToString(t: SyntaxKind): string | undefined;
8985    function getPositionOfLineAndCharacter(sourceFile: SourceFileLike, line: number, character: number): number;
8986    function getLineAndCharacterOfPosition(sourceFile: SourceFileLike, position: number): LineAndCharacter;
8987    function isWhiteSpaceLike(ch: number): boolean;
8988    /** Does not include line breaks. For that, see isWhiteSpaceLike. */
8989    function isWhiteSpaceSingleLine(ch: number): boolean;
8990    function isLineBreak(ch: number): boolean;
8991    function couldStartTrivia(text: string, pos: number): boolean;
8992    function forEachLeadingCommentRange<U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined;
8993    function forEachLeadingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined;
8994    function forEachTrailingCommentRange<U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined;
8995    function forEachTrailingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined;
8996    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;
8997    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;
8998    function getLeadingCommentRanges(text: string, pos: number): CommentRange[] | undefined;
8999    function getTrailingCommentRanges(text: string, pos: number): CommentRange[] | undefined;
9000    /** Optionally, get the shebang */
9001    function getShebang(text: string): string | undefined;
9002    function isIdentifierStart(ch: number, languageVersion: ScriptTarget | undefined): boolean;
9003    function isIdentifierPart(ch: number, languageVersion: ScriptTarget | undefined, identifierVariant?: LanguageVariant): boolean;
9004    function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean, languageVariant?: LanguageVariant, textInitial?: string, onError?: ErrorCallback, start?: number, length?: number): Scanner;
9005    type ErrorCallback = (message: DiagnosticMessage, length: number) => void;
9006    interface Scanner {
9007        getStartPos(): number;
9008        getToken(): SyntaxKind;
9009        getTextPos(): number;
9010        getTokenPos(): number;
9011        getTokenText(): string;
9012        getTokenValue(): string;
9013        hasUnicodeEscape(): boolean;
9014        hasExtendedUnicodeEscape(): boolean;
9015        hasPrecedingLineBreak(): boolean;
9016        isIdentifier(): boolean;
9017        isReservedWord(): boolean;
9018        isUnterminated(): boolean;
9019        reScanGreaterToken(): SyntaxKind;
9020        reScanSlashToken(): SyntaxKind;
9021        reScanAsteriskEqualsToken(): SyntaxKind;
9022        reScanTemplateToken(isTaggedTemplate: boolean): SyntaxKind;
9023        reScanTemplateHeadOrNoSubstitutionTemplate(): SyntaxKind;
9024        scanJsxIdentifier(): SyntaxKind;
9025        scanJsxAttributeValue(): SyntaxKind;
9026        reScanJsxAttributeValue(): SyntaxKind;
9027        reScanJsxToken(allowMultilineJsxText?: boolean): JsxTokenSyntaxKind;
9028        reScanLessThanToken(): SyntaxKind;
9029        reScanHashToken(): SyntaxKind;
9030        reScanQuestionToken(): SyntaxKind;
9031        reScanInvalidIdentifier(): SyntaxKind;
9032        scanJsxToken(): JsxTokenSyntaxKind;
9033        scanJsDocToken(): JSDocSyntaxKind;
9034        scan(): SyntaxKind;
9035        getText(): string;
9036        setText(text: string | undefined, start?: number, length?: number): void;
9037        setOnError(onError: ErrorCallback | undefined): void;
9038        setScriptTarget(scriptTarget: ScriptTarget): void;
9039        setLanguageVariant(variant: LanguageVariant): void;
9040        setTextPos(textPos: number): void;
9041        lookAhead<T>(callback: () => T): T;
9042        scanRange<T>(start: number, length: number, callback: () => T): T;
9043        tryScan<T>(callback: () => T): T;
9044        setEtsContext(isEtsContext: boolean): void;
9045    }
9046    function isExternalModuleNameRelative(moduleName: string): boolean;
9047    function sortAndDeduplicateDiagnostics<T extends Diagnostic>(diagnostics: readonly T[]): SortedReadonlyArray<T>;
9048    function getDefaultLibFileName(options: CompilerOptions): string;
9049    function textSpanEnd(span: TextSpan): number;
9050    function textSpanIsEmpty(span: TextSpan): boolean;
9051    function textSpanContainsPosition(span: TextSpan, position: number): boolean;
9052    function textSpanContainsTextSpan(span: TextSpan, other: TextSpan): boolean;
9053    function textSpanOverlapsWith(span: TextSpan, other: TextSpan): boolean;
9054    function textSpanOverlap(span1: TextSpan, span2: TextSpan): TextSpan | undefined;
9055    function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan): boolean;
9056    function textSpanIntersectsWith(span: TextSpan, start: number, length: number): boolean;
9057    function decodedTextSpanIntersectsWith(start1: number, length1: number, start2: number, length2: number): boolean;
9058    function textSpanIntersectsWithPosition(span: TextSpan, position: number): boolean;
9059    function textSpanIntersection(span1: TextSpan, span2: TextSpan): TextSpan | undefined;
9060    function createTextSpan(start: number, length: number): TextSpan;
9061    function createTextSpanFromBounds(start: number, end: number): TextSpan;
9062    function textChangeRangeNewSpan(range: TextChangeRange): TextSpan;
9063    function textChangeRangeIsUnchanged(range: TextChangeRange): boolean;
9064    function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange;
9065    /**
9066     * Called to merge all the changes that occurred across several versions of a script snapshot
9067     * into a single change.  i.e. if a user keeps making successive edits to a script we will
9068     * have a text change from V1 to V2, V2 to V3, ..., Vn.
9069     *
9070     * This function will then merge those changes into a single change range valid between V1 and
9071     * Vn.
9072     */
9073    function collapseTextChangeRangesAcrossMultipleVersions(changes: readonly TextChangeRange[]): TextChangeRange;
9074    function getTypeParameterOwner(d: Declaration): Declaration | undefined;
9075    function isParameterPropertyDeclaration(node: Node, parent: Node): node is ParameterPropertyDeclaration;
9076    function isEmptyBindingPattern(node: BindingName): node is BindingPattern;
9077    function isEmptyBindingElement(node: BindingElement): boolean;
9078    function walkUpBindingElementsAndPatterns(binding: BindingElement): VariableDeclaration | ParameterDeclaration;
9079    function getCombinedModifierFlags(node: Declaration): ModifierFlags;
9080    function getCombinedNodeFlags(node: Node): NodeFlags;
9081    /**
9082     * Checks to see if the locale is in the appropriate format,
9083     * and if it is, attempts to set the appropriate language.
9084     */
9085    function validateLocaleAndSetLanguage(locale: string, sys: {
9086        getExecutingFilePath(): string;
9087        resolvePath(path: string): string;
9088        fileExists(fileName: string): boolean;
9089        readFile(fileName: string): string | undefined;
9090    }, errors?: Push<Diagnostic>): void;
9091    function getOriginalNode(node: Node): Node;
9092    function getOriginalNode<T extends Node>(node: Node, nodeTest: (node: Node) => node is T): T;
9093    function getOriginalNode(node: Node | undefined): Node | undefined;
9094    function getOriginalNode<T extends Node>(node: Node | undefined, nodeTest: (node: Node | undefined) => node is T): T | undefined;
9095    /**
9096     * Iterates through the parent chain of a node and performs the callback on each parent until the callback
9097     * returns a truthy value, then returns that value.
9098     * If no such value is found, it applies the callback until the parent pointer is undefined or the callback returns "quit"
9099     * At that point findAncestor returns undefined.
9100     */
9101    function findAncestor<T extends Node>(node: Node | undefined, callback: (element: Node) => element is T): T | undefined;
9102    function findAncestor(node: Node | undefined, callback: (element: Node) => boolean | "quit"): Node | undefined;
9103    /**
9104     * Gets a value indicating whether a node originated in the parse tree.
9105     *
9106     * @param node The node to test.
9107     */
9108    function isParseTreeNode(node: Node): boolean;
9109    /**
9110     * Gets the original parse tree node for a node.
9111     *
9112     * @param node The original node.
9113     * @returns The original parse tree node if found; otherwise, undefined.
9114     */
9115    function getParseTreeNode(node: Node | undefined): Node | undefined;
9116    /**
9117     * Gets the original parse tree node for a node.
9118     *
9119     * @param node The original node.
9120     * @param nodeTest A callback used to ensure the correct type of parse tree node is returned.
9121     * @returns The original parse tree node if found; otherwise, undefined.
9122     */
9123    function getParseTreeNode<T extends Node>(node: T | undefined, nodeTest?: (node: Node) => node is T): T | undefined;
9124    /** Add an extra underscore to identifiers that start with two underscores to avoid issues with magic names like '__proto__' */
9125    function escapeLeadingUnderscores(identifier: string): __String;
9126    /**
9127     * Remove extra underscore from escaped identifier text content.
9128     *
9129     * @param identifier The escaped identifier text.
9130     * @returns The unescaped identifier text.
9131     */
9132    function unescapeLeadingUnderscores(identifier: __String): string;
9133    function idText(identifierOrPrivateName: Identifier | PrivateIdentifier): string;
9134    function symbolName(symbol: Symbol): string;
9135    function getNameOfJSDocTypedef(declaration: JSDocTypedefTag): Identifier | PrivateIdentifier | undefined;
9136    function getNameOfDeclaration(declaration: Declaration | Expression | undefined): DeclarationName | undefined;
9137    function getDecorators(node: HasDecorators): readonly Decorator[] | undefined;
9138    function getAnnotations(node: HasDecorators): readonly Decorator[] | undefined;
9139    function getModifiers(node: HasModifiers): readonly Modifier[] | undefined;
9140    function getAllDecorators(node: Node | undefined): readonly Decorator[];
9141    function getIllegalDecorators(node: HasIllegalDecorators): readonly Decorator[] | undefined;
9142    /**
9143     * Gets the JSDoc parameter tags for the node if present.
9144     *
9145     * @remarks Returns any JSDoc param tag whose name matches the provided
9146     * parameter, whether a param tag on a containing function
9147     * expression, or a param tag on a variable declaration whose
9148     * initializer is the containing function. The tags closest to the
9149     * node are returned first, so in the previous example, the param
9150     * tag on the containing function expression would be first.
9151     *
9152     * For binding patterns, parameter tags are matched by position.
9153     */
9154    function getJSDocParameterTags(param: ParameterDeclaration): readonly JSDocParameterTag[];
9155    /**
9156     * Gets the JSDoc type parameter tags for the node if present.
9157     *
9158     * @remarks Returns any JSDoc template tag whose names match the provided
9159     * parameter, whether a template tag on a containing function
9160     * expression, or a template tag on a variable declaration whose
9161     * initializer is the containing function. The tags closest to the
9162     * node are returned first, so in the previous example, the template
9163     * tag on the containing function expression would be first.
9164     */
9165    function getJSDocTypeParameterTags(param: TypeParameterDeclaration): readonly JSDocTemplateTag[];
9166    /**
9167     * Return true if the node has JSDoc parameter tags.
9168     *
9169     * @remarks Includes parameter tags that are not directly on the node,
9170     * for example on a variable declaration whose initializer is a function expression.
9171     */
9172    function hasJSDocParameterTags(node: FunctionLikeDeclaration | SignatureDeclaration): boolean;
9173    /** Gets the JSDoc augments tag for the node if present */
9174    function getJSDocAugmentsTag(node: Node): JSDocAugmentsTag | undefined;
9175    /** Gets the JSDoc implements tags for the node if present */
9176    function getJSDocImplementsTags(node: Node): readonly JSDocImplementsTag[];
9177    /** Gets the JSDoc class tag for the node if present */
9178    function getJSDocClassTag(node: Node): JSDocClassTag | undefined;
9179    /** Gets the JSDoc public tag for the node if present */
9180    function getJSDocPublicTag(node: Node): JSDocPublicTag | undefined;
9181    /** Gets the JSDoc private tag for the node if present */
9182    function getJSDocPrivateTag(node: Node): JSDocPrivateTag | undefined;
9183    /** Gets the JSDoc protected tag for the node if present */
9184    function getJSDocProtectedTag(node: Node): JSDocProtectedTag | undefined;
9185    /** Gets the JSDoc protected tag for the node if present */
9186    function getJSDocReadonlyTag(node: Node): JSDocReadonlyTag | undefined;
9187    function getJSDocOverrideTagNoCache(node: Node): JSDocOverrideTag | undefined;
9188    /** Gets the JSDoc deprecated tag for the node if present */
9189    function getJSDocDeprecatedTag(node: Node): JSDocDeprecatedTag | undefined;
9190    /** Gets the JSDoc enum tag for the node if present */
9191    function getJSDocEnumTag(node: Node): JSDocEnumTag | undefined;
9192    /** Gets the JSDoc this tag for the node if present */
9193    function getJSDocThisTag(node: Node): JSDocThisTag | undefined;
9194    /** Gets the JSDoc return tag for the node if present */
9195    function getJSDocReturnTag(node: Node): JSDocReturnTag | undefined;
9196    /** Gets the JSDoc template tag for the node if present */
9197    function getJSDocTemplateTag(node: Node): JSDocTemplateTag | undefined;
9198    /** Gets the JSDoc type tag for the node if present and valid */
9199    function getJSDocTypeTag(node: Node): JSDocTypeTag | undefined;
9200    /**
9201     * Gets the type node for the node if provided via JSDoc.
9202     *
9203     * @remarks The search includes any JSDoc param tag that relates
9204     * to the provided parameter, for example a type tag on the
9205     * parameter itself, or a param tag on a containing function
9206     * expression, or a param tag on a variable declaration whose
9207     * initializer is the containing function. The tags closest to the
9208     * node are examined first, so in the previous example, the type
9209     * tag directly on the node would be returned.
9210     */
9211    function getJSDocType(node: Node): TypeNode | undefined;
9212    /**
9213     * Gets the return type node for the node if provided via JSDoc return tag or type tag.
9214     *
9215     * @remarks `getJSDocReturnTag` just gets the whole JSDoc tag. This function
9216     * gets the type from inside the braces, after the fat arrow, etc.
9217     */
9218    function getJSDocReturnType(node: Node): TypeNode | undefined;
9219    /** Get all JSDoc tags related to a node, including those on parent nodes. */
9220    function getJSDocTags(node: Node): readonly JSDocTag[];
9221    /** Gets all JSDoc tags that match a specified predicate */
9222    function getAllJSDocTags<T extends JSDocTag>(node: Node, predicate: (tag: JSDocTag) => tag is T): readonly T[];
9223    /** Gets all JSDoc tags of a specified kind */
9224    function getAllJSDocTagsOfKind(node: Node, kind: SyntaxKind): readonly JSDocTag[];
9225    /** Gets the text of a jsdoc comment, flattening links to their text. */
9226    function getTextOfJSDocComment(comment?: string | NodeArray<JSDocComment>): string | undefined;
9227    /**
9228     * Gets the effective type parameters. If the node was parsed in a
9229     * JavaScript file, gets the type parameters from the `@template` tag from JSDoc.
9230     *
9231     * This does *not* return type parameters from a jsdoc reference to a generic type, eg
9232     *
9233     * type Id = <T>(x: T) => T
9234     * /** @type {Id} /
9235     * function id(x) { return x }
9236     */
9237    function getEffectiveTypeParameterDeclarations(node: DeclarationWithTypeParameters): readonly TypeParameterDeclaration[];
9238    function getEffectiveConstraintOfTypeParameter(node: TypeParameterDeclaration): TypeNode | undefined;
9239    function isMemberName(node: Node): node is MemberName;
9240    function isPropertyAccessChain(node: Node): node is PropertyAccessChain;
9241    function isElementAccessChain(node: Node): node is ElementAccessChain;
9242    function isCallChain(node: Node): node is CallChain;
9243    function isOptionalChain(node: Node): node is PropertyAccessChain | ElementAccessChain | CallChain | NonNullChain;
9244    function isNullishCoalesce(node: Node): boolean;
9245    function isConstTypeReference(node: Node): boolean;
9246    function skipPartiallyEmittedExpressions(node: Expression): Expression;
9247    function skipPartiallyEmittedExpressions(node: Node): Node;
9248    function isNonNullChain(node: Node): node is NonNullChain;
9249    function isBreakOrContinueStatement(node: Node): node is BreakOrContinueStatement;
9250    function isNamedExportBindings(node: Node): node is NamedExportBindings;
9251    function isUnparsedTextLike(node: Node): node is UnparsedTextLike;
9252    function isUnparsedNode(node: Node): node is UnparsedNode;
9253    function isJSDocPropertyLikeTag(node: Node): node is JSDocPropertyLikeTag;
9254    /**
9255     * True if kind is of some token syntax kind.
9256     * For example, this is true for an IfKeyword but not for an IfStatement.
9257     * Literals are considered tokens, except TemplateLiteral, but does include TemplateHead/Middle/Tail.
9258     */
9259    function isTokenKind(kind: SyntaxKind): boolean;
9260    /**
9261     * True if node is of some token syntax kind.
9262     * For example, this is true for an IfKeyword but not for an IfStatement.
9263     * Literals are considered tokens, except TemplateLiteral, but does include TemplateHead/Middle/Tail.
9264     */
9265    function isToken(n: Node): boolean;
9266    function isLiteralExpression(node: Node): node is LiteralExpression;
9267    function isTemplateLiteralToken(node: Node): node is TemplateLiteralToken;
9268    function isTemplateMiddleOrTemplateTail(node: Node): node is TemplateMiddle | TemplateTail;
9269    function isImportOrExportSpecifier(node: Node): node is ImportSpecifier | ExportSpecifier;
9270    function isTypeOnlyImportOrExportDeclaration(node: Node): node is TypeOnlyAliasDeclaration;
9271    function isAssertionKey(node: Node): node is AssertionKey;
9272    function isStringTextContainingNode(node: Node): node is StringLiteral | TemplateLiteralToken;
9273    function isModifier(node: Node): node is Modifier;
9274    function isEntityName(node: Node): node is EntityName;
9275    function isPropertyName(node: Node): node is PropertyName;
9276    function isBindingName(node: Node): node is BindingName;
9277    function isFunctionLike(node: Node | undefined): node is SignatureDeclaration;
9278    function isAnnotationElement(node: Node): node is AnnotationElement;
9279    function isClassElement(node: Node): node is ClassElement;
9280    function isClassLike(node: Node): node is ClassLikeDeclaration;
9281    function isStruct(node: Node): node is StructDeclaration;
9282    function isAccessor(node: Node): node is AccessorDeclaration;
9283    function isAutoAccessorPropertyDeclaration(node: Node): node is AutoAccessorPropertyDeclaration;
9284    function isModifierLike(node: Node): node is ModifierLike;
9285    function isTypeElement(node: Node): node is TypeElement;
9286    function isClassOrTypeElement(node: Node): node is ClassElement | TypeElement;
9287    function isObjectLiteralElementLike(node: Node): node is ObjectLiteralElementLike;
9288    /**
9289     * Node test that determines whether a node is a valid type node.
9290     * This differs from the `isPartOfTypeNode` function which determines whether a node is *part*
9291     * of a TypeNode.
9292     */
9293    function isTypeNode(node: Node): node is TypeNode;
9294    function isFunctionOrConstructorTypeNode(node: Node): node is FunctionTypeNode | ConstructorTypeNode;
9295    function isPropertyAccessOrQualifiedName(node: Node): node is PropertyAccessExpression | QualifiedName;
9296    function isCallLikeExpression(node: Node): node is CallLikeExpression;
9297    function isCallOrNewExpression(node: Node): node is CallExpression | NewExpression;
9298    function isTemplateLiteral(node: Node): node is TemplateLiteral;
9299    function isAssertionExpression(node: Node): node is AssertionExpression;
9300    function isIterationStatement(node: Node, lookInLabeledStatements: false): node is IterationStatement;
9301    function isIterationStatement(node: Node, lookInLabeledStatements: boolean): node is IterationStatement | LabeledStatement;
9302    function isDeclarationStatement(node: Node): node is DeclarationStatement;
9303    function isJsxOpeningLikeElement(node: Node): node is JsxOpeningLikeElement;
9304    function isCaseOrDefaultClause(node: Node): node is CaseOrDefaultClause;
9305    /** True if node is of a kind that may contain comment text. */
9306    function isJSDocCommentContainingNode(node: Node): boolean;
9307    function isSetAccessor(node: Node): node is SetAccessorDeclaration;
9308    function isGetAccessor(node: Node): node is GetAccessorDeclaration;
9309    /** True if has initializer node attached to it. */
9310    function hasOnlyExpressionInitializer(node: Node): node is HasExpressionInitializer;
9311    function isObjectLiteralElement(node: Node): node is ObjectLiteralElement;
9312    function isStringLiteralLike(node: Node): node is StringLiteralLike;
9313    function isJSDocLinkLike(node: Node): node is JSDocLink | JSDocLinkCode | JSDocLinkPlain;
9314    function hasRestParameter(s: SignatureDeclaration | JSDocSignature): boolean;
9315    function isRestParameter(node: ParameterDeclaration | JSDocParameterTag): boolean;
9316    let unchangedTextChangeRange: TextChangeRange;
9317    type ParameterPropertyDeclaration = ParameterDeclaration & {
9318        parent: ConstructorDeclaration;
9319        name: Identifier;
9320    };
9321    class MemoryUtils {
9322        private static MemoryAfterGC;
9323        private static baseMemorySize;
9324        private static MIN_GC_THRESHOLD;
9325        private static memoryGCThreshold;
9326        static GC_THRESHOLD_RATIO: number;
9327        /**
9328         * Try garbage collection if the memory usage exceeds MEMORY_BASELINE.
9329         */
9330        static tryGC(): void;
9331        static initializeBaseMemory(baseMemorySize?: number): void;
9332        static updateBaseMemory(MemoryBeforeGC: number): void;
9333    }
9334    function isPartOfTypeNode(node: Node): boolean;
9335    function getJSDocCommentsAndTags(hostNode: Node, noCache?: boolean): readonly (JSDoc | JSDocTag)[];
9336    function getLeadingCommentRangesOfNode(node: Node, sourceFileOfNode: SourceFile): ts.CommentRange[] | undefined;
9337    function createTextWriter(newLine: string): EmitTextWriter;
9338    /**
9339     * Bypasses immutability and directly sets the `parent` property of each `Node` recursively.
9340     * @param rootNode The root node from which to start the recursion.
9341     * @param incremental When `true`, only recursively descends through nodes whose `parent` pointers are incorrect.
9342     * This allows us to quickly bail out of setting `parent` for subtrees during incremental parsing.
9343     */
9344    function setParentRecursive<T extends Node>(rootNode: T, incremental: boolean): T;
9345    function setParentRecursive<T extends Node>(rootNode: T | undefined, incremental: boolean): T | undefined;
9346    function createUnparsedSourceFile(text: string): UnparsedSource;
9347    function createUnparsedSourceFile(inputFile: InputFiles, type: "js" | "dts", stripInternal?: boolean): UnparsedSource;
9348    function createUnparsedSourceFile(text: string, mapPath: string | undefined, map: string | undefined): UnparsedSource;
9349    function createInputFiles(javascriptText: string, declarationText: string): InputFiles;
9350    function createInputFiles(readFileText: (path: string) => string | undefined, javascriptPath: string, javascriptMapPath: string | undefined, declarationPath: string, declarationMapPath: string | undefined, buildInfoPath: string | undefined): InputFiles;
9351    function createInputFiles(javascriptText: string, declarationText: string, javascriptMapPath: string | undefined, javascriptMapText: string | undefined, declarationMapPath: string | undefined, declarationMapText: string | undefined): InputFiles;
9352    /**
9353     * Create an external source map source file reference
9354     */
9355    function createSourceMapSource(fileName: string, text: string, skipTrivia?: (pos: number) => number): SourceMapSource;
9356    function setOriginalNode<T extends Node>(node: T, original: Node | undefined): T;
9357    const factory: NodeFactory;
9358    /**
9359     * Clears any `EmitNode` entries from parse-tree nodes.
9360     * @param sourceFile A source file.
9361     */
9362    function disposeEmitNodes(sourceFile: SourceFile | undefined): void;
9363    /**
9364     * Sets flags that control emit behavior of a node.
9365     */
9366    function setEmitFlags<T extends Node>(node: T, emitFlags: EmitFlags): T;
9367    /**
9368     * Gets a custom text range to use when emitting source maps.
9369     */
9370    function getSourceMapRange(node: Node): SourceMapRange;
9371    /**
9372     * Sets a custom text range to use when emitting source maps.
9373     */
9374    function setSourceMapRange<T extends Node>(node: T, range: SourceMapRange | undefined): T;
9375    /**
9376     * Gets the TextRange to use for source maps for a token of a node.
9377     */
9378    function getTokenSourceMapRange(node: Node, token: SyntaxKind): SourceMapRange | undefined;
9379    /**
9380     * Sets the TextRange to use for source maps for a token of a node.
9381     */
9382    function setTokenSourceMapRange<T extends Node>(node: T, token: SyntaxKind, range: SourceMapRange | undefined): T;
9383    /**
9384     * Gets a custom text range to use when emitting comments.
9385     */
9386    function getCommentRange(node: Node): TextRange;
9387    /**
9388     * Sets a custom text range to use when emitting comments.
9389     */
9390    function setCommentRange<T extends Node>(node: T, range: TextRange): T;
9391    function getSyntheticLeadingComments(node: Node): SynthesizedComment[] | undefined;
9392    function setSyntheticLeadingComments<T extends Node>(node: T, comments: SynthesizedComment[] | undefined): T;
9393    function addSyntheticLeadingComment<T extends Node>(node: T, kind: SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia, text: string, hasTrailingNewLine?: boolean): T;
9394    function getSyntheticTrailingComments(node: Node): SynthesizedComment[] | undefined;
9395    function setSyntheticTrailingComments<T extends Node>(node: T, comments: SynthesizedComment[] | undefined): T;
9396    function addSyntheticTrailingComment<T extends Node>(node: T, kind: SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia, text: string, hasTrailingNewLine?: boolean): T;
9397    function moveSyntheticComments<T extends Node>(node: T, original: Node): T;
9398    /**
9399     * Gets the constant value to emit for an expression representing an enum.
9400     */
9401    function getConstantValue(node: AccessExpression): string | number | undefined;
9402    /**
9403     * Sets the constant value to emit for an expression.
9404     */
9405    function setConstantValue(node: AccessExpression, value: string | number): AccessExpression;
9406    /**
9407     * Adds an EmitHelper to a node.
9408     */
9409    function addEmitHelper<T extends Node>(node: T, helper: EmitHelper): T;
9410    /**
9411     * Add EmitHelpers to a node.
9412     */
9413    function addEmitHelpers<T extends Node>(node: T, helpers: EmitHelper[] | undefined): T;
9414    /**
9415     * Removes an EmitHelper from a node.
9416     */
9417    function removeEmitHelper(node: Node, helper: EmitHelper): boolean;
9418    /**
9419     * Gets the EmitHelpers of a node.
9420     */
9421    function getEmitHelpers(node: Node): EmitHelper[] | undefined;
9422    /**
9423     * Moves matching emit helpers from a source node to a target node.
9424     */
9425    function moveEmitHelpers(source: Node, target: Node, predicate: (helper: EmitHelper) => boolean): void;
9426    function isNumericLiteral(node: Node): node is NumericLiteral;
9427    function isBigIntLiteral(node: Node): node is BigIntLiteral;
9428    function isStringLiteral(node: Node): node is StringLiteral;
9429    function isJsxText(node: Node): node is JsxText;
9430    function isRegularExpressionLiteral(node: Node): node is RegularExpressionLiteral;
9431    function isNoSubstitutionTemplateLiteral(node: Node): node is NoSubstitutionTemplateLiteral;
9432    function isTemplateHead(node: Node): node is TemplateHead;
9433    function isTemplateMiddle(node: Node): node is TemplateMiddle;
9434    function isTemplateTail(node: Node): node is TemplateTail;
9435    function isDotDotDotToken(node: Node): node is DotDotDotToken;
9436    function isPlusToken(node: Node): node is PlusToken;
9437    function isMinusToken(node: Node): node is MinusToken;
9438    function isAsteriskToken(node: Node): node is AsteriskToken;
9439    function isIdentifier(node: Node): node is Identifier;
9440    function isPrivateIdentifier(node: Node): node is PrivateIdentifier;
9441    function isQualifiedName(node: Node): node is QualifiedName;
9442    function isComputedPropertyName(node: Node): node is ComputedPropertyName;
9443    function isTypeParameterDeclaration(node: Node): node is TypeParameterDeclaration;
9444    function isParameter(node: Node): node is ParameterDeclaration;
9445    function isDecoratorOrAnnotation(node: Node): node is Decorator;
9446    function isDecorator(node: Node): node is Decorator;
9447    function isAnnotation(node: Node): node is Annotation;
9448    function isPropertySignature(node: Node): node is PropertySignature;
9449    function isPropertyDeclaration(node: Node): node is PropertyDeclaration;
9450    function isAnnotationPropertyDeclaration(node: Node): node is AnnotationPropertyDeclaration;
9451    function isMethodSignature(node: Node): node is MethodSignature;
9452    function isMethodDeclaration(node: Node): node is MethodDeclaration;
9453    function isClassStaticBlockDeclaration(node: Node): node is ClassStaticBlockDeclaration;
9454    function isConstructorDeclaration(node: Node): node is ConstructorDeclaration;
9455    function isGetAccessorDeclaration(node: Node): node is GetAccessorDeclaration;
9456    function isSetAccessorDeclaration(node: Node): node is SetAccessorDeclaration;
9457    function isCallSignatureDeclaration(node: Node): node is CallSignatureDeclaration;
9458    function isConstructSignatureDeclaration(node: Node): node is ConstructSignatureDeclaration;
9459    function isIndexSignatureDeclaration(node: Node): node is IndexSignatureDeclaration;
9460    function isTypePredicateNode(node: Node): node is TypePredicateNode;
9461    function isTypeReferenceNode(node: Node): node is TypeReferenceNode;
9462    function isFunctionTypeNode(node: Node): node is FunctionTypeNode;
9463    function isConstructorTypeNode(node: Node): node is ConstructorTypeNode;
9464    function isTypeQueryNode(node: Node): node is TypeQueryNode;
9465    function isTypeLiteralNode(node: Node): node is TypeLiteralNode;
9466    function isArrayTypeNode(node: Node): node is ArrayTypeNode;
9467    function isTupleTypeNode(node: Node): node is TupleTypeNode;
9468    function isNamedTupleMember(node: Node): node is NamedTupleMember;
9469    function isOptionalTypeNode(node: Node): node is OptionalTypeNode;
9470    function isRestTypeNode(node: Node): node is RestTypeNode;
9471    function isUnionTypeNode(node: Node): node is UnionTypeNode;
9472    function isIntersectionTypeNode(node: Node): node is IntersectionTypeNode;
9473    function isConditionalTypeNode(node: Node): node is ConditionalTypeNode;
9474    function isInferTypeNode(node: Node): node is InferTypeNode;
9475    function isParenthesizedTypeNode(node: Node): node is ParenthesizedTypeNode;
9476    function isThisTypeNode(node: Node): node is ThisTypeNode;
9477    function isTypeOperatorNode(node: Node): node is TypeOperatorNode;
9478    function isIndexedAccessTypeNode(node: Node): node is IndexedAccessTypeNode;
9479    function isMappedTypeNode(node: Node): node is MappedTypeNode;
9480    function isLiteralTypeNode(node: Node): node is LiteralTypeNode;
9481    function isImportTypeNode(node: Node): node is ImportTypeNode;
9482    function isTemplateLiteralTypeSpan(node: Node): node is TemplateLiteralTypeSpan;
9483    function isTemplateLiteralTypeNode(node: Node): node is TemplateLiteralTypeNode;
9484    function isObjectBindingPattern(node: Node): node is ObjectBindingPattern;
9485    function isArrayBindingPattern(node: Node): node is ArrayBindingPattern;
9486    function isBindingElement(node: Node): node is BindingElement;
9487    function isArrayLiteralExpression(node: Node): node is ArrayLiteralExpression;
9488    function isObjectLiteralExpression(node: Node): node is ObjectLiteralExpression;
9489    function isPropertyAccessExpression(node: Node): node is PropertyAccessExpression;
9490    function isElementAccessExpression(node: Node): node is ElementAccessExpression;
9491    function isCallExpression(node: Node): node is CallExpression;
9492    function isNewExpression(node: Node): node is NewExpression;
9493    function isTaggedTemplateExpression(node: Node): node is TaggedTemplateExpression;
9494    function isTypeAssertionExpression(node: Node): node is TypeAssertion;
9495    function isParenthesizedExpression(node: Node): node is ParenthesizedExpression;
9496    function isFunctionExpression(node: Node): node is FunctionExpression;
9497    function isEtsComponentExpression(node: Node): node is EtsComponentExpression;
9498    function isArrowFunction(node: Node): node is ArrowFunction;
9499    function isDeleteExpression(node: Node): node is DeleteExpression;
9500    function isTypeOfExpression(node: Node): node is TypeOfExpression;
9501    function isVoidExpression(node: Node): node is VoidExpression;
9502    function isAwaitExpression(node: Node): node is AwaitExpression;
9503    function isPrefixUnaryExpression(node: Node): node is PrefixUnaryExpression;
9504    function isPostfixUnaryExpression(node: Node): node is PostfixUnaryExpression;
9505    function isBinaryExpression(node: Node): node is BinaryExpression;
9506    function isConditionalExpression(node: Node): node is ConditionalExpression;
9507    function isTemplateExpression(node: Node): node is TemplateExpression;
9508    function isYieldExpression(node: Node): node is YieldExpression;
9509    function isSpreadElement(node: Node): node is SpreadElement;
9510    function isClassExpression(node: Node): node is ClassExpression;
9511    function isOmittedExpression(node: Node): node is OmittedExpression;
9512    function isExpressionWithTypeArguments(node: Node): node is ExpressionWithTypeArguments;
9513    function isAsExpression(node: Node): node is AsExpression;
9514    function isSatisfiesExpression(node: Node): node is SatisfiesExpression;
9515    function isNonNullExpression(node: Node): node is NonNullExpression;
9516    function isMetaProperty(node: Node): node is MetaProperty;
9517    function isSyntheticExpression(node: Node): node is SyntheticExpression;
9518    function isPartiallyEmittedExpression(node: Node): node is PartiallyEmittedExpression;
9519    function isCommaListExpression(node: Node): node is CommaListExpression;
9520    function isTemplateSpan(node: Node): node is TemplateSpan;
9521    function isSemicolonClassElement(node: Node): node is SemicolonClassElement;
9522    function isBlock(node: Node): node is Block;
9523    function isVariableStatement(node: Node): node is VariableStatement;
9524    function isEmptyStatement(node: Node): node is EmptyStatement;
9525    function isExpressionStatement(node: Node): node is ExpressionStatement;
9526    function isIfStatement(node: Node): node is IfStatement;
9527    function isDoStatement(node: Node): node is DoStatement;
9528    function isWhileStatement(node: Node): node is WhileStatement;
9529    function isForStatement(node: Node): node is ForStatement;
9530    function isForInStatement(node: Node): node is ForInStatement;
9531    function isForOfStatement(node: Node): node is ForOfStatement;
9532    function isContinueStatement(node: Node): node is ContinueStatement;
9533    function isBreakStatement(node: Node): node is BreakStatement;
9534    function isReturnStatement(node: Node): node is ReturnStatement;
9535    function isWithStatement(node: Node): node is WithStatement;
9536    function isSwitchStatement(node: Node): node is SwitchStatement;
9537    function isLabeledStatement(node: Node): node is LabeledStatement;
9538    function isThrowStatement(node: Node): node is ThrowStatement;
9539    function isTryStatement(node: Node): node is TryStatement;
9540    function isDebuggerStatement(node: Node): node is DebuggerStatement;
9541    function isVariableDeclaration(node: Node): node is VariableDeclaration;
9542    function isVariableDeclarationList(node: Node): node is VariableDeclarationList;
9543    function isFunctionDeclaration(node: Node): node is FunctionDeclaration;
9544    function isClassDeclaration(node: Node): node is ClassDeclaration;
9545    function isStructDeclaration(node: Node): node is StructDeclaration;
9546    function isAnnotationDeclaration(node: Node): node is AnnotationDeclaration;
9547    function isInterfaceDeclaration(node: Node): node is InterfaceDeclaration;
9548    function isTypeAliasDeclaration(node: Node): node is TypeAliasDeclaration;
9549    function isEnumDeclaration(node: Node): node is EnumDeclaration;
9550    function isModuleDeclaration(node: Node): node is ModuleDeclaration;
9551    function isModuleBlock(node: Node): node is ModuleBlock;
9552    function isCaseBlock(node: Node): node is CaseBlock;
9553    function isNamespaceExportDeclaration(node: Node): node is NamespaceExportDeclaration;
9554    function isImportEqualsDeclaration(node: Node): node is ImportEqualsDeclaration;
9555    function isImportDeclaration(node: Node): node is ImportDeclaration;
9556    function isImportClause(node: Node): node is ImportClause;
9557    function isImportTypeAssertionContainer(node: Node): node is ImportTypeAssertionContainer;
9558    function isAssertClause(node: Node): node is AssertClause;
9559    function isAssertEntry(node: Node): node is AssertEntry;
9560    function isNamespaceImport(node: Node): node is NamespaceImport;
9561    function isNamespaceExport(node: Node): node is NamespaceExport;
9562    function isNamedImports(node: Node): node is NamedImports;
9563    function isImportSpecifier(node: Node): node is ImportSpecifier;
9564    function isExportAssignment(node: Node): node is ExportAssignment;
9565    function isExportDeclaration(node: Node): node is ExportDeclaration;
9566    function isNamedExports(node: Node): node is NamedExports;
9567    function isExportSpecifier(node: Node): node is ExportSpecifier;
9568    function isMissingDeclaration(node: Node): node is MissingDeclaration;
9569    function isNotEmittedStatement(node: Node): node is NotEmittedStatement;
9570    function isExternalModuleReference(node: Node): node is ExternalModuleReference;
9571    function isJsxElement(node: Node): node is JsxElement;
9572    function isJsxSelfClosingElement(node: Node): node is JsxSelfClosingElement;
9573    function isJsxOpeningElement(node: Node): node is JsxOpeningElement;
9574    function isJsxClosingElement(node: Node): node is JsxClosingElement;
9575    function isJsxFragment(node: Node): node is JsxFragment;
9576    function isJsxOpeningFragment(node: Node): node is JsxOpeningFragment;
9577    function isJsxClosingFragment(node: Node): node is JsxClosingFragment;
9578    function isJsxAttribute(node: Node): node is JsxAttribute;
9579    function isJsxAttributes(node: Node): node is JsxAttributes;
9580    function isJsxSpreadAttribute(node: Node): node is JsxSpreadAttribute;
9581    function isJsxExpression(node: Node): node is JsxExpression;
9582    function isCaseClause(node: Node): node is CaseClause;
9583    function isDefaultClause(node: Node): node is DefaultClause;
9584    function isHeritageClause(node: Node): node is HeritageClause;
9585    function isCatchClause(node: Node): node is CatchClause;
9586    function isPropertyAssignment(node: Node): node is PropertyAssignment;
9587    function isShorthandPropertyAssignment(node: Node): node is ShorthandPropertyAssignment;
9588    function isSpreadAssignment(node: Node): node is SpreadAssignment;
9589    function isEnumMember(node: Node): node is EnumMember;
9590    function isUnparsedPrepend(node: Node): node is UnparsedPrepend;
9591    function isSourceFile(node: Node): node is SourceFile;
9592    function isBundle(node: Node): node is Bundle;
9593    function isUnparsedSource(node: Node): node is UnparsedSource;
9594    function isJSDocTypeExpression(node: Node): node is JSDocTypeExpression;
9595    function isJSDocNameReference(node: Node): node is JSDocNameReference;
9596    function isJSDocMemberName(node: Node): node is JSDocMemberName;
9597    function isJSDocLink(node: Node): node is JSDocLink;
9598    function isJSDocLinkCode(node: Node): node is JSDocLinkCode;
9599    function isJSDocLinkPlain(node: Node): node is JSDocLinkPlain;
9600    function isJSDocAllType(node: Node): node is JSDocAllType;
9601    function isJSDocUnknownType(node: Node): node is JSDocUnknownType;
9602    function isJSDocNullableType(node: Node): node is JSDocNullableType;
9603    function isJSDocNonNullableType(node: Node): node is JSDocNonNullableType;
9604    function isJSDocOptionalType(node: Node): node is JSDocOptionalType;
9605    function isJSDocFunctionType(node: Node): node is JSDocFunctionType;
9606    function isJSDocVariadicType(node: Node): node is JSDocVariadicType;
9607    function isJSDocNamepathType(node: Node): node is JSDocNamepathType;
9608    function isJSDoc(node: Node): node is JSDoc;
9609    function isJSDocTypeLiteral(node: Node): node is JSDocTypeLiteral;
9610    function isJSDocSignature(node: Node): node is JSDocSignature;
9611    function isJSDocAugmentsTag(node: Node): node is JSDocAugmentsTag;
9612    function isJSDocAuthorTag(node: Node): node is JSDocAuthorTag;
9613    function isJSDocClassTag(node: Node): node is JSDocClassTag;
9614    function isJSDocCallbackTag(node: Node): node is JSDocCallbackTag;
9615    function isJSDocPublicTag(node: Node): node is JSDocPublicTag;
9616    function isJSDocPrivateTag(node: Node): node is JSDocPrivateTag;
9617    function isJSDocProtectedTag(node: Node): node is JSDocProtectedTag;
9618    function isJSDocReadonlyTag(node: Node): node is JSDocReadonlyTag;
9619    function isJSDocOverrideTag(node: Node): node is JSDocOverrideTag;
9620    function isJSDocDeprecatedTag(node: Node): node is JSDocDeprecatedTag;
9621    function isJSDocSeeTag(node: Node): node is JSDocSeeTag;
9622    function isJSDocEnumTag(node: Node): node is JSDocEnumTag;
9623    function isJSDocParameterTag(node: Node): node is JSDocParameterTag;
9624    function isJSDocReturnTag(node: Node): node is JSDocReturnTag;
9625    function isJSDocThisTag(node: Node): node is JSDocThisTag;
9626    function isJSDocTypeTag(node: Node): node is JSDocTypeTag;
9627    function isJSDocTemplateTag(node: Node): node is JSDocTemplateTag;
9628    function isJSDocTypedefTag(node: Node): node is JSDocTypedefTag;
9629    function isJSDocUnknownTag(node: Node): node is JSDocUnknownTag;
9630    function isJSDocPropertyTag(node: Node): node is JSDocPropertyTag;
9631    function isJSDocImplementsTag(node: Node): node is JSDocImplementsTag;
9632    function setTextRange<T extends TextRange>(range: T, location: TextRange | undefined): T;
9633    function canHaveModifiers(node: Node): node is HasModifiers;
9634    function canHaveDecorators(node: Node): node is HasDecorators;
9635    /**
9636     * Invokes a callback for each child of the given node. The 'cbNode' callback is invoked for all child nodes
9637     * stored in properties. If a 'cbNodes' callback is specified, it is invoked for embedded arrays; otherwise,
9638     * embedded arrays are flattened and the 'cbNode' callback is invoked for each element. If a callback returns
9639     * a truthy value, iteration stops and that value is returned. Otherwise, undefined is returned.
9640     *
9641     * @param node a given node to visit its children
9642     * @param cbNode a callback to be invoked for all child nodes
9643     * @param cbNodes a callback to be invoked for embedded array
9644     *
9645     * @remarks `forEachChild` must visit the children of a node in the order
9646     * that they appear in the source code. The language service depends on this property to locate nodes by position.
9647     */
9648    function forEachChild<T>(node: Node, cbNode: (node: Node) => T | undefined, cbNodes?: (nodes: NodeArray<Node>) => T | undefined): T | undefined;
9649    function createSourceFile(fileName: string, sourceText: string, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, setParentNodes?: boolean, scriptKind?: ScriptKind, options?: CompilerOptions, isArkguardInput?: boolean): SourceFile;
9650    function parseIsolatedEntityName(text: string, languageVersion: ScriptTarget): EntityName | undefined;
9651    /**
9652     * Parse json text into SyntaxTree and return node and parse errors if any
9653     * @param fileName
9654     * @param sourceText
9655     */
9656    function parseJsonText(fileName: string, sourceText: string): JsonSourceFile;
9657    function isExternalModule(file: SourceFile): boolean;
9658    function updateSourceFile(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean, option?: CompilerOptions): SourceFile;
9659    function setLanguageVersionByFilePath(getLanguageVersion: ((filePath: string) => boolean) | undefined): void;
9660    interface CreateSourceFileOptions {
9661        languageVersion: ScriptTarget;
9662        /**
9663         * Controls the format the file is detected as - this can be derived from only the path
9664         * and files on disk, but needs to be done with a module resolution cache in scope to be performant.
9665         * This is usually `undefined` for compilations that do not have `moduleResolution` values of `node16` or `nodenext`.
9666         */
9667        impliedNodeFormat?: ModuleKind.ESNext | ModuleKind.CommonJS;
9668        /**
9669         * Controls how module-y-ness is set for the given file. Usually the result of calling
9670         * `getSetExternalModuleIndicator` on a valid `CompilerOptions` object. If not present, the default
9671         * check specified by `isFileProbablyExternalModule` will be used to set the field.
9672         */
9673        setExternalModuleIndicator?: (file: SourceFile) => void;
9674    }
9675    function parseCommandLine(commandLine: readonly string[], readFile?: (path: string) => string | undefined): ParsedCommandLine;
9676    /**
9677     * Reads the config file, reports errors if any and exits if the config file cannot be found
9678     */
9679    function getParsedCommandLineOfConfigFile(configFileName: string, optionsToExtend: CompilerOptions | undefined, host: ParseConfigFileHost, extendedConfigCache?: Map<ExtendedConfigCacheEntry>, watchOptionsToExtend?: WatchOptions, extraFileExtensions?: readonly FileExtensionInfo[]): ParsedCommandLine | undefined;
9680    /**
9681     * Read tsconfig.json file
9682     * @param fileName The path to the config file
9683     */
9684    function readConfigFile(fileName: string, readFile: (path: string) => string | undefined): {
9685        config?: any;
9686        error?: Diagnostic;
9687    };
9688    /**
9689     * Parse the text of the tsconfig.json file
9690     * @param fileName The path to the config file
9691     * @param jsonText The text of the config file
9692     */
9693    function parseConfigFileTextToJson(fileName: string, jsonText: string): {
9694        config?: any;
9695        error?: Diagnostic;
9696    };
9697    /**
9698     * Read tsconfig.json file
9699     * @param fileName The path to the config file
9700     */
9701    function readJsonConfigFile(fileName: string, readFile: (path: string) => string | undefined): TsConfigSourceFile;
9702    /**
9703     * Convert the json syntax tree into the json value
9704     */
9705    function convertToObject(sourceFile: JsonSourceFile, errors: Push<Diagnostic>): any;
9706    /**
9707     * Parse the contents of a config file (tsconfig.json).
9708     * @param json The contents of the config file to parse
9709     * @param host Instance of ParseConfigHost used to enumerate files in folder.
9710     * @param basePath A root directory to resolve relative path entries in the config
9711     *    file to. e.g. outDir
9712     */
9713    function parseJsonConfigFileContent(json: any, host: ParseConfigHost, basePath: string, existingOptions?: CompilerOptions, configFileName?: string, resolutionStack?: Path[], extraFileExtensions?: readonly FileExtensionInfo[], extendedConfigCache?: Map<ExtendedConfigCacheEntry>, existingWatchOptions?: WatchOptions): ParsedCommandLine;
9714    /**
9715     * Parse the contents of a config file (tsconfig.json).
9716     * @param jsonNode The contents of the config file to parse
9717     * @param host Instance of ParseConfigHost used to enumerate files in folder.
9718     * @param basePath A root directory to resolve relative path entries in the config
9719     *    file to. e.g. outDir
9720     */
9721    function parseJsonSourceFileConfigFileContent(sourceFile: TsConfigSourceFile, host: ParseConfigHost, basePath: string, existingOptions?: CompilerOptions, configFileName?: string, resolutionStack?: Path[], extraFileExtensions?: readonly FileExtensionInfo[], extendedConfigCache?: Map<ExtendedConfigCacheEntry>, existingWatchOptions?: WatchOptions): ParsedCommandLine;
9722    function convertCompilerOptionsFromJson(jsonOptions: any, basePath: string, configFileName?: string): {
9723        options: CompilerOptions;
9724        errors: Diagnostic[];
9725    };
9726    function convertTypeAcquisitionFromJson(jsonOptions: any, basePath: string, configFileName?: string): {
9727        options: TypeAcquisition;
9728        errors: Diagnostic[];
9729    };
9730    type DiagnosticReporter = (diagnostic: Diagnostic) => void;
9731    /**
9732     * Reports config file diagnostics
9733     */
9734    interface ConfigFileDiagnosticsReporter {
9735        /**
9736         * Reports unrecoverable error when parsing config file
9737         */
9738        onUnRecoverableConfigFileDiagnostic: DiagnosticReporter;
9739    }
9740    /**
9741     * Interface extending ParseConfigHost to support ParseConfigFile that reads config file and reports errors
9742     */
9743    interface ParseConfigFileHost extends ParseConfigHost, ConfigFileDiagnosticsReporter {
9744        getCurrentDirectory(): string;
9745    }
9746    interface ParsedTsconfig {
9747        raw: any;
9748        options?: CompilerOptions;
9749        watchOptions?: WatchOptions;
9750        typeAcquisition?: TypeAcquisition;
9751        /**
9752         * Note that the case of the config path has not yet been normalized, as no files have been imported into the project yet
9753         */
9754        extendedConfigPath?: string;
9755    }
9756    interface ExtendedConfigCacheEntry {
9757        extendedResult: TsConfigSourceFile;
9758        extendedConfig: ParsedTsconfig | undefined;
9759    }
9760    function getEffectiveTypeRoots(options: CompilerOptions, host: GetEffectiveTypeRootsHost): string[] | undefined;
9761    /**
9762     * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown.
9763     * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups
9764     * is assumed to be the same as root directory of the project.
9765     */
9766    function resolveTypeReferenceDirective(typeReferenceDirectiveName: string, containingFile: string | undefined, options: CompilerOptions, host: ModuleResolutionHost, redirectedReference?: ResolvedProjectReference, cache?: TypeReferenceDirectiveResolutionCache, resolutionMode?: SourceFile["impliedNodeFormat"]): ResolvedTypeReferenceDirectiveWithFailedLookupLocations;
9767    /**
9768     * Given a set of options, returns the set of type directive names
9769     *   that should be included for this program automatically.
9770     * This list could either come from the config file,
9771     *   or from enumerating the types root + initial secondary types lookup location.
9772     * More type directives might appear in the program later as a result of loading actual source files;
9773     *   this list is only the set of defaults that are implicitly included.
9774     */
9775    function getAutomaticTypeDirectiveNames(options: CompilerOptions, host: ModuleResolutionHost): string[];
9776    function createModuleResolutionCache(currentDirectory: string, getCanonicalFileName: (s: string) => string, options?: CompilerOptions): ModuleResolutionCache;
9777    function createTypeReferenceDirectiveResolutionCache(currentDirectory: string, getCanonicalFileName: (s: string) => string, options?: CompilerOptions, packageJsonInfoCache?: PackageJsonInfoCache): TypeReferenceDirectiveResolutionCache;
9778    function resolveModuleNameFromCache(moduleName: string, containingFile: string, cache: ModuleResolutionCache, mode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations | undefined;
9779    function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache, redirectedReference?: ResolvedProjectReference, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations;
9780    function nodeModuleNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache, redirectedReference?: ResolvedProjectReference): ResolvedModuleWithFailedLookupLocations;
9781    /**
9782     * This will be called on the successfully resolved path from `loadModuleFromFile`.
9783     * (Not needed for `loadModuleFromNodeModules` as that looks up the `package.json` or `oh-package.json5` as part of resolution.)
9784     *
9785     * packageDirectory is the directory of the package itself.
9786     *   For `blah/node_modules/foo/index.d.ts` this is packageDirectory: "foo"
9787     *   For `/node_modules/foo/bar.d.ts` this is packageDirectory: "foo"
9788     *   For `/node_modules/@types/foo/bar/index.d.ts` this is packageDirectory: "@types/foo"
9789     *   For `/node_modules/foo/bar/index.d.ts` this is packageDirectory: "foo"
9790     */
9791    function parseModuleFromPath(resolved: string, packageManagerType?: string): string | undefined;
9792    function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: NonRelativeModuleNameResolutionCache, redirectedReference?: ResolvedProjectReference): ResolvedModuleWithFailedLookupLocations;
9793    interface TypeReferenceDirectiveResolutionCache extends PerDirectoryResolutionCache<ResolvedTypeReferenceDirectiveWithFailedLookupLocations>, PackageJsonInfoCache {
9794    }
9795    interface ModeAwareCache<T> {
9796        get(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): T | undefined;
9797        set(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined, value: T): this;
9798        delete(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): this;
9799        has(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): boolean;
9800        forEach(cb: (elem: T, key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined) => void): void;
9801        size(): number;
9802    }
9803    /**
9804     * Cached resolutions per containing directory.
9805     * This assumes that any module id will have the same resolution for sibling files located in the same folder.
9806     */
9807    interface PerDirectoryResolutionCache<T> {
9808        getOrCreateCacheForDirectory(directoryName: string, redirectedReference?: ResolvedProjectReference): ModeAwareCache<T>;
9809        clear(): void;
9810        /**
9811         *  Updates with the current compilerOptions the cache will operate with.
9812         *  This updates the redirects map as well if needed so module resolutions are cached if they can across the projects
9813         */
9814        update(options: CompilerOptions): void;
9815    }
9816    interface ModuleResolutionCache extends PerDirectoryResolutionCache<ResolvedModuleWithFailedLookupLocations>, NonRelativeModuleNameResolutionCache, PackageJsonInfoCache {
9817        getPackageJsonInfoCache(): PackageJsonInfoCache;
9818    }
9819    /**
9820     * Stored map from non-relative module name to a table: directory -> result of module lookup in this directory
9821     * We support only non-relative module names because resolution of relative module names is usually more deterministic and thus less expensive.
9822     */
9823    interface NonRelativeModuleNameResolutionCache extends PackageJsonInfoCache {
9824        getOrCreateCacheForModuleName(nonRelativeModuleName: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined, redirectedReference?: ResolvedProjectReference): PerModuleNameCache;
9825    }
9826    interface PackageJsonInfoCache {
9827        clear(): void;
9828    }
9829    interface PerModuleNameCache {
9830        get(directory: string): ResolvedModuleWithFailedLookupLocations | undefined;
9831        set(directory: string, result: ResolvedModuleWithFailedLookupLocations): void;
9832    }
9833    function concatenateDecoratorsAndModifiers(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined): readonly ModifierLike[] | undefined;
9834    function isEtsFunctionDecorators(name: string | undefined, options: CompilerOptions): boolean;
9835    function isOhpm(packageManagerType: string | undefined): boolean;
9836    function isOHModules(modulePath: string): boolean;
9837    function isOhpmAndOhModules(packageManagerType: string | undefined, modulePath: string): boolean;
9838    function getModulePathPartByPMType(packageManagerType: string | undefined): string;
9839    function getModuleByPMType(packageManagerType: string | undefined): string;
9840    function getPackageJsonByPMType(packageManagerType: string | undefined): string;
9841    function isOHModulesDirectory(dirPath: Path): boolean;
9842    function isTargetModulesDerectory(dirPath: Path): boolean;
9843    function pathContainsOHModules(path: string): boolean;
9844    function choosePathContainsModules(packageManagerType: string | undefined, fileName: string): boolean;
9845    function getTypeExportImportAndConstEnumTransformer(context: TransformationContext): (node: SourceFile) => SourceFile;
9846    function getAnnotationTransformer(): TransformerFactory<SourceFile>;
9847    function transformAnnotation(context: TransformationContext): (node: SourceFile) => SourceFile;
9848    /**
9849     * Add 'type' flag to import/export when import/export an type member.
9850     * Replace const enum with number and string literal.
9851     */
9852    function transformTypeExportImportAndConstEnumInTypeScript(context: TransformationContext): (node: SourceFile) => SourceFile;
9853    function hasTsNoCheckOrTsIgnoreFlag(node: SourceFile): boolean;
9854    function createObfTextSingleLineWriter(): EmitTextWriter;
9855    function isMixedCompilerSDKPath(compilerOptions: CompilerOptions): boolean;
9856    function cleanKitJsonCache(): void;
9857    function getMaxFlowDepth(compilerOptions: CompilerOptions): number;
9858    function getErrorCode(diagnostic: Diagnostic): ErrorInfo;
9859    function getErrorCodeArea(code: number): ErrorCodeArea;
9860    const ohModulesPathPart: string;
9861    const REQUIRE_DECORATOR = "Require";
9862    const THROWS_TAG = "throws";
9863    const THROWS_CATCH = "catch";
9864    const THROWS_ASYNC_CALLBACK = "AsyncCallback";
9865    const THROWS_ERROR_CALLBACK = "ErrorCallback";
9866    interface MoreInfo {
9867        cn: string;
9868        en: string;
9869    }
9870    class ErrorInfo {
9871        code: string;
9872        description: string;
9873        cause: string;
9874        position: string;
9875        solutions: string[];
9876        moreInfo?: MoreInfo;
9877        getCode(): string;
9878        getDescription(): string;
9879        getCause(): string;
9880        getPosition(): string;
9881        getSolutions(): string[];
9882        getMoreInfo(): MoreInfo | undefined;
9883    }
9884    enum ErrorCodeArea {
9885        TSC = 0,
9886        LINTER = 1,
9887        UI = 2
9888    }
9889    enum CheckMode {
9890        Normal = 0,
9891        Contextual = 1,
9892        Inferential = 2,
9893        SkipContextSensitive = 4,
9894        SkipGenericFunctions = 8,
9895        IsForSignatureHelp = 16,
9896        IsForStringLiteralArgumentCompletions = 32,
9897        RestBindingElement = 64,
9898        SkipEtsComponentBody = 128
9899    }
9900    /**
9901     * Visits a Node using the supplied visitor, possibly returning a new Node in its place.
9902     *
9903     * @param node The Node to visit.
9904     * @param visitor The callback used to visit the Node.
9905     * @param test A callback to execute to verify the Node is valid.
9906     * @param lift An optional callback to execute to lift a NodeArray into a valid Node.
9907     */
9908    function visitNode<T extends Node>(node: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T;
9909    /**
9910     * Visits a Node using the supplied visitor, possibly returning a new Node in its place.
9911     *
9912     * @param node The Node to visit.
9913     * @param visitor The callback used to visit the Node.
9914     * @param test A callback to execute to verify the Node is valid.
9915     * @param lift An optional callback to execute to lift a NodeArray into a valid Node.
9916     */
9917    function visitNode<T extends Node>(node: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined;
9918    /**
9919     * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place.
9920     *
9921     * @param nodes The NodeArray to visit.
9922     * @param visitor The callback used to visit a Node.
9923     * @param test A node test to execute for each node.
9924     * @param start An optional value indicating the starting offset at which to start visiting.
9925     * @param count An optional value indicating the maximum number of nodes to visit.
9926     */
9927    function visitNodes<T extends Node>(nodes: NodeArray<T>, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T>;
9928    /**
9929     * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place.
9930     *
9931     * @param nodes The NodeArray to visit.
9932     * @param visitor The callback used to visit a Node.
9933     * @param test A node test to execute for each node.
9934     * @param start An optional value indicating the starting offset at which to start visiting.
9935     * @param count An optional value indicating the maximum number of nodes to visit.
9936     */
9937    function visitNodes<T extends Node>(nodes: NodeArray<T> | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T> | undefined;
9938    /**
9939     * Starts a new lexical environment and visits a statement list, ending the lexical environment
9940     * and merging hoisted declarations upon completion.
9941     */
9942    function visitLexicalEnvironment(statements: NodeArray<Statement>, visitor: Visitor, context: TransformationContext, start?: number, ensureUseStrict?: boolean, nodesVisitor?: NodesVisitor): NodeArray<Statement>;
9943    /**
9944     * Starts a new lexical environment and visits a parameter list, suspending the lexical
9945     * environment upon completion.
9946     */
9947    function visitParameterList(nodes: NodeArray<ParameterDeclaration>, visitor: Visitor, context: TransformationContext, nodesVisitor?: NodesVisitor): NodeArray<ParameterDeclaration>;
9948    function visitParameterList(nodes: NodeArray<ParameterDeclaration> | undefined, visitor: Visitor, context: TransformationContext, nodesVisitor?: NodesVisitor): NodeArray<ParameterDeclaration> | undefined;
9949    /**
9950     * Resumes a suspended lexical environment and visits a function body, ending the lexical
9951     * environment and merging hoisted declarations upon completion.
9952     */
9953    function visitFunctionBody(node: FunctionBody, visitor: Visitor, context: TransformationContext): FunctionBody;
9954    /**
9955     * Resumes a suspended lexical environment and visits a function body, ending the lexical
9956     * environment and merging hoisted declarations upon completion.
9957     */
9958    function visitFunctionBody(node: FunctionBody | undefined, visitor: Visitor, context: TransformationContext): FunctionBody | undefined;
9959    /**
9960     * Resumes a suspended lexical environment and visits a concise body, ending the lexical
9961     * environment and merging hoisted declarations upon completion.
9962     */
9963    function visitFunctionBody(node: ConciseBody, visitor: Visitor, context: TransformationContext): ConciseBody;
9964    /**
9965     * Visits an iteration body, adding any block-scoped variables required by the transformation.
9966     */
9967    function visitIterationBody(body: Statement, visitor: Visitor, context: TransformationContext): Statement;
9968    /**
9969     * Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place.
9970     *
9971     * @param node The Node whose children will be visited.
9972     * @param visitor The callback used to visit each child.
9973     * @param context A lexical environment context for the visitor.
9974     */
9975    function visitEachChild<T extends Node>(node: T, visitor: Visitor, context: TransformationContext): T;
9976    /**
9977     * Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place.
9978     *
9979     * @param node The Node whose children will be visited.
9980     * @param visitor The callback used to visit each child.
9981     * @param context A lexical environment context for the visitor.
9982     */
9983    function visitEachChild<T extends Node>(node: T | undefined, visitor: Visitor, context: TransformationContext, nodesVisitor?: typeof visitNodes, tokenVisitor?: Visitor): T | undefined;
9984    function createSourceMapGenerator(host: EmitHost, file: string, sourceRoot: string, sourcesDirectoryPath: string, generatorOptions: SourceMapGeneratorOptions): SourceMapGenerator;
9985    interface SourceMapGeneratorOptions {
9986        extendedDiagnostics?: boolean;
9987    }
9988    function isInternalDeclaration(node: Node, currentSourceFile: SourceFile): boolean | 0 | undefined;
9989    const nullTransformationContext: TransformationContext;
9990    function getTsBuildInfoEmitOutputFilePath(options: CompilerOptions): string | undefined;
9991    function getTsBuildInfoEmitOutputFilePathForLinter(tsBuildInfoPath: string): string;
9992    function getOutputFileNames(commandLine: ParsedCommandLine, inputFileName: string, ignoreCase: boolean): readonly string[];
9993    function createPrinter(printerOptions?: PrinterOptions, handlers?: PrintHandlers): Printer;
9994    function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean, configName?: string): string | undefined;
9995    function resolveTripleslashReference(moduleName: string, containingFile: string): string;
9996    function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost;
9997    function getPreEmitDiagnostics(program: Program, sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
9998    function formatDiagnostics(diagnostics: readonly Diagnostic[], host: FormatDiagnosticsHost): string;
9999    function formatDiagnostic(diagnostic: Diagnostic, host: FormatDiagnosticsHost): string;
10000    function formatDiagnosticsWithColorAndContext(diagnostics: readonly Diagnostic[], host: FormatDiagnosticsHost): string;
10001    function flattenDiagnosticMessageText(diag: string | DiagnosticMessageChain | undefined, newLine: string, indent?: number): string;
10002    /**
10003     * Calculates the resulting resolution mode for some reference in some file - this is generally the explicitly
10004     * provided resolution mode in the reference, unless one is not present, in which case it is the mode of the containing file.
10005     */
10006    function getModeForFileReference(ref: FileReference | string, containingFileMode: SourceFile["impliedNodeFormat"]): ts.ModuleKind.CommonJS | ts.ModuleKind.ESNext | undefined;
10007    /**
10008     * Calculates the final resolution mode for an import at some index within a file's imports list. This is generally the explicitly
10009     * 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).
10010     * If you have an actual import node, prefer using getModeForUsageLocation on the reference string node.
10011     * @param file File to fetch the resolution mode within
10012     * @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
10013     */
10014    function getModeForResolutionAtIndex(file: SourceFile, index: number): ModuleKind.CommonJS | ModuleKind.ESNext | undefined;
10015    /**
10016     * Calculates the final resolution mode for a given module reference node. This is generally the explicitly provided resolution mode, if
10017     * one exists, or the mode of the containing source file. (Excepting import=require, which is always commonjs, and dynamic import, which is always esm).
10018     * Notably, this function always returns `undefined` if the containing file has an `undefined` `impliedNodeFormat` - this field is only set when
10019     * `moduleResolution` is `node16`+.
10020     * @param file The file the import or import-like reference is contained within
10021     * @param usage The module reference string
10022     * @returns The final resolution mode of the import
10023     */
10024    function getModeForUsageLocation(file: {
10025        impliedNodeFormat?: SourceFile["impliedNodeFormat"];
10026    }, usage: StringLiteralLike): ts.ModuleKind.CommonJS | ts.ModuleKind.ESNext | undefined;
10027    function getConfigFileParsingDiagnostics(configFileParseResult: ParsedCommandLine): readonly Diagnostic[];
10028    /**
10029     * A function for determining if a given file is esm or cjs format, assuming modern node module resolution rules, as configured by the
10030     * `options` parameter.
10031     *
10032     * @param fileName The normalized absolute path to check the format of (it need not exist on disk)
10033     * @param [packageJsonInfoCache] A cache for package file lookups - it's best to have a cache when this function is called often
10034     * @param host The ModuleResolutionHost which can perform the filesystem lookups for package json data
10035     * @param options The compiler options to perform the analysis under - relevant options are `moduleResolution` and `traceResolution`
10036     * @returns `undefined` if the path has no relevant implied format, `ModuleKind.ESNext` for esm format, and `ModuleKind.CommonJS` for cjs format
10037     */
10038    function getImpliedNodeFormatForFile(fileName: Path, packageJsonInfoCache: PackageJsonInfoCache | undefined, host: ModuleResolutionHost, options: CompilerOptions): ModuleKind.ESNext | ModuleKind.CommonJS | undefined;
10039    /**
10040     * Create a new 'Program' instance. A Program is an immutable collection of 'SourceFile's and a 'CompilerOptions'
10041     * that represent a compilation unit.
10042     *
10043     * Creating a program proceeds from a set of root files, expanding the set of inputs by following imports and
10044     * triple-slash-reference-path directives transitively. '@types' and triple-slash-reference-types are also pulled in.
10045     *
10046     * @param createProgramOptions - The options for creating a program.
10047     * @returns A 'Program' object.
10048     */
10049    function createProgram(createProgramOptions: CreateProgramOptions): Program;
10050    /**
10051     * Create a new 'Program' instance. A Program is an immutable collection of 'SourceFile's and a 'CompilerOptions'
10052     * that represent a compilation unit.
10053     *
10054     * Creating a program proceeds from a set of root files, expanding the set of inputs by following imports and
10055     * triple-slash-reference-path directives transitively. '@types' and triple-slash-reference-types are also pulled in.
10056     *
10057     * @param rootNames - A set of root files.
10058     * @param options - The compiler options which should be used.
10059     * @param host - The host interacts with the underlying file system.
10060     * @param oldProgram - Reuses an old program structure.
10061     * @param configFileParsingDiagnostics - error during config file parsing
10062     * @returns A 'Program' object.
10063     */
10064    function createProgram(rootNames: readonly string[], options: CompilerOptions, host?: CompilerHost, oldProgram?: Program, configFileParsingDiagnostics?: readonly Diagnostic[]): Program;
10065    /**
10066     * Returns the target config filename of a project reference.
10067     * Note: The file might not exist.
10068     */
10069    function resolveProjectReferencePath(ref: ProjectReference): ResolvedConfigFileName;
10070    /** @deprecated */ function resolveProjectReferencePath(host: ResolveProjectReferencePathHost, ref: ProjectReference): ResolvedConfigFileName;
10071    interface FormatDiagnosticsHost {
10072        getCurrentDirectory(): string;
10073        getCanonicalFileName(fileName: string): string;
10074        getNewLine(): string;
10075    }
10076    /** @deprecated */ interface ResolveProjectReferencePathHost {
10077        fileExists(fileName: string): boolean;
10078    }
10079    interface EmitOutput {
10080        outputFiles: OutputFile[];
10081        emitSkipped: boolean;
10082    }
10083    interface OutputFile {
10084        name: string;
10085        writeByteOrderMark: boolean;
10086        text: string;
10087    }
10088    /**
10089     * Create the builder to manage semantic diagnostics and cache them
10090     */
10091    function createSemanticDiagnosticsBuilderProgram(newProgram: Program, host: BuilderProgramHost, oldProgram?: SemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): SemanticDiagnosticsBuilderProgram;
10092    function createSemanticDiagnosticsBuilderProgram(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: SemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): SemanticDiagnosticsBuilderProgram;
10093    /**
10094     * Create the builder that can handle the changes in program and iterate through changed files
10095     * to emit the those files and manage semantic diagnostics cache as well
10096     */
10097    function createEmitAndSemanticDiagnosticsBuilderProgram(newProgram: Program, host: BuilderProgramHost, oldProgram?: EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): EmitAndSemanticDiagnosticsBuilderProgram;
10098    function createEmitAndSemanticDiagnosticsBuilderProgram(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): EmitAndSemanticDiagnosticsBuilderProgram;
10099    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;
10100    /**
10101     * Creates a builder thats just abstraction over program and can be used with watch
10102     */
10103    function createAbstractBuilder(newProgram: Program, host: BuilderProgramHost, oldProgram?: BuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): BuilderProgram;
10104    function createAbstractBuilder(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: BuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): BuilderProgram;
10105    type AffectedFileResult<T> = {
10106        result: T;
10107        affected: SourceFile | Program;
10108    } | undefined;
10109    interface BuilderProgramHost {
10110        /**
10111         * return true if file names are treated with case sensitivity
10112         */
10113        useCaseSensitiveFileNames(): boolean;
10114        /**
10115         * If provided this would be used this hash instead of actual file shape text for detecting changes
10116         */
10117        createHash?: (data: string) => string;
10118        /**
10119         * When emit or emitNextAffectedFile are called without writeFile,
10120         * this callback if present would be used to write files
10121         */
10122        writeFile?: WriteFileCallback;
10123    }
10124    /**
10125     * Builder to manage the program state changes
10126     */
10127    interface BuilderProgram {
10128        /**
10129         * Returns current program
10130         */
10131        getProgram(): Program;
10132        /**
10133         * Get compiler options of the program
10134         */
10135        getCompilerOptions(): CompilerOptions;
10136        /**
10137         * Get the source file in the program with file name
10138         */
10139        getSourceFile(fileName: string): SourceFile | undefined;
10140        /**
10141         * Get a list of files in the program
10142         */
10143        getSourceFiles(): readonly SourceFile[];
10144        /**
10145         * Get the diagnostics for compiler options
10146         */
10147        getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
10148        /**
10149         * Get the diagnostics that dont belong to any file
10150         */
10151        getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
10152        /**
10153         * Get the diagnostics from config file parsing
10154         */
10155        getConfigFileParsingDiagnostics(): readonly Diagnostic[];
10156        /**
10157         * Get the syntax diagnostics, for all source files if source file is not supplied
10158         */
10159        getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
10160        /**
10161         * Get the declaration diagnostics, for all source files if source file is not supplied
10162         */
10163        getDeclarationDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[];
10164        /**
10165         * Get all the dependencies of the file
10166         */
10167        getAllDependencies(sourceFile: SourceFile): readonly string[];
10168        /**
10169         * Gets the semantic diagnostics from the program corresponding to this state of file (if provided) or whole program
10170         * The semantic diagnostics are cached and managed here
10171         * Note that it is assumed that when asked about semantic diagnostics through this API,
10172         * the file has been taken out of affected files so it is safe to use cache or get from program and cache the diagnostics
10173         * In case of SemanticDiagnosticsBuilderProgram if the source file is not provided,
10174         * it will iterate through all the affected files, to ensure that cache stays valid and yet provide a way to get all semantic diagnostics
10175         */
10176        getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
10177        /**
10178         * Emits the JavaScript and declaration files.
10179         * When targetSource file is specified, emits the files corresponding to that source file,
10180         * otherwise for the whole program.
10181         * In case of EmitAndSemanticDiagnosticsBuilderProgram, when targetSourceFile is specified,
10182         * it is assumed that that file is handled from affected file list. If targetSourceFile is not specified,
10183         * it will only emit all the affected files instead of whole program
10184         *
10185         * The first of writeFile if provided, writeFile of BuilderProgramHost if provided, writeFile of compiler host
10186         * in that order would be used to write the files
10187         */
10188        emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult;
10189        /**
10190         * Get the current directory of the program
10191         */
10192        getCurrentDirectory(): string;
10193        isFileUpdateInConstEnumCache?(sourceFile: SourceFile): boolean;
10194        builderProgramForLinter?: EmitAndSemanticDiagnosticsBuilderProgram;
10195    }
10196    /**
10197     * The builder that caches the semantic diagnostics for the program and handles the changed files and affected files
10198     */
10199    interface SemanticDiagnosticsBuilderProgram extends BuilderProgram {
10200        /**
10201         * Gets the semantic diagnostics from the program for the next affected file and caches it
10202         * Returns undefined if the iteration is complete
10203         */
10204        getSemanticDiagnosticsOfNextAffectedFile(cancellationToken?: CancellationToken, ignoreSourceFile?: (sourceFile: SourceFile) => boolean): AffectedFileResult<readonly Diagnostic[]>;
10205    }
10206    /**
10207     * The builder that can handle the changes in program and iterate through changed file to emit the files
10208     * The semantic diagnostics are cached per file and managed by clearing for the changed/affected files
10209     */
10210    interface EmitAndSemanticDiagnosticsBuilderProgram extends SemanticDiagnosticsBuilderProgram {
10211        /**
10212         * Emits the next affected file's emit result (EmitResult and sourceFiles emitted) or returns undefined if iteration is complete
10213         * The first of writeFile if provided, writeFile of BuilderProgramHost if provided, writeFile of compiler host
10214         * in that order would be used to write the files
10215         */
10216        emitNextAffectedFile(writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): AffectedFileResult<EmitResult>;
10217    }
10218    function readBuilderProgram(compilerOptions: CompilerOptions, host: ReadBuildProgramHost, isForLinter?: boolean): ts.EmitAndSemanticDiagnosticsBuilderProgram | undefined;
10219    function createIncrementalCompilerHost(options: CompilerOptions, system?: ts.System): CompilerHost;
10220    function createIncrementalProgram<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>({ rootNames, options, configFileParsingDiagnostics, projectReferences, host, createProgram }: IncrementalProgramOptions<T>): T;
10221    function createIncrementalProgramForArkTs({ rootNames, options, configFileParsingDiagnostics, projectReferences, host }: IncrementalProgramOptions<EmitAndSemanticDiagnosticsBuilderProgram>): EmitAndSemanticDiagnosticsBuilderProgram;
10222    /**
10223     * Create the watch compiler host for either configFile or fileNames and its options
10224     */
10225    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>;
10226    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>;
10227    /**
10228     * Creates the watch from the host for root files and compiler options
10229     */
10230    function createWatchProgram<T extends BuilderProgram>(host: WatchCompilerHostOfFilesAndCompilerOptions<T>): WatchOfFilesAndCompilerOptions<T>;
10231    /**
10232     * Creates the watch from the host for config file
10233     */
10234    function createWatchProgram<T extends BuilderProgram>(host: WatchCompilerHostOfConfigFile<T>): WatchOfConfigFile<T>;
10235    interface ReadBuildProgramHost {
10236        useCaseSensitiveFileNames(): boolean;
10237        getCurrentDirectory(): string;
10238        readFile(fileName: string): string | undefined;
10239        getLastCompiledProgram?(): Program;
10240    }
10241    interface IncrementalProgramOptions<T extends BuilderProgram> {
10242        rootNames: readonly string[];
10243        options: CompilerOptions;
10244        configFileParsingDiagnostics?: readonly Diagnostic[];
10245        projectReferences?: readonly ProjectReference[];
10246        host?: CompilerHost;
10247        createProgram?: CreateProgram<T>;
10248    }
10249    type WatchStatusReporter = (diagnostic: Diagnostic, newLine: string, options: CompilerOptions, errorCount?: number) => void;
10250    /** Create the program with rootNames and options, if they are undefined, oldProgram and new configFile diagnostics create new program */
10251    type CreateProgram<T extends BuilderProgram> = (rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: T, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[] | undefined) => T;
10252    /** Host that has watch functionality used in --watch mode */
10253    interface WatchHost {
10254        /** If provided, called with Diagnostic message that informs about change in watch status */
10255        onWatchStatusChange?(diagnostic: Diagnostic, newLine: string, options: CompilerOptions, errorCount?: number): void;
10256        /** Used to watch changes in source files, missing files needed to update the program or config file */
10257        watchFile(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher;
10258        /** Used to watch resolved module's failed lookup locations, config file specs, type roots where auto type reference directives are added */
10259        watchDirectory(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher;
10260        /** If provided, will be used to set delayed compilation, so that multiple changes in short span are compiled together */
10261        setTimeout?(callback: (...args: any[]) => void, ms: number, ...args: any[]): any;
10262        /** If provided, will be used to reset existing delayed compilation */
10263        clearTimeout?(timeoutId: any): void;
10264    }
10265    interface ProgramHost<T extends BuilderProgram> {
10266        /**
10267         * Used to create the program when need for program creation or recreation detected
10268         */
10269        createProgram: CreateProgram<T>;
10270        useCaseSensitiveFileNames(): boolean;
10271        getNewLine(): string;
10272        getCurrentDirectory(): string;
10273        getDefaultLibFileName(options: CompilerOptions): string;
10274        getDefaultLibLocation?(): string;
10275        createHash?(data: string): string;
10276        /**
10277         * Use to check file presence for source files and
10278         * if resolveModuleNames is not provided (complier is in charge of module resolution) then module files as well
10279         */
10280        fileExists(path: string): boolean;
10281        /**
10282         * Use to read file text for source files and
10283         * if resolveModuleNames is not provided (complier is in charge of module resolution) then module files as well
10284         */
10285        readFile(path: string, encoding?: string): string | undefined;
10286        /** If provided, used for module resolution as well as to handle directory structure */
10287        directoryExists?(path: string): boolean;
10288        /** If provided, used in resolutions as well as handling directory structure */
10289        getDirectories?(path: string): string[];
10290        /** If provided, used to cache and handle directory structure modifications */
10291        readDirectory?(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
10292        /** Symbol links resolution */
10293        realpath?(path: string): string;
10294        /** If provided would be used to write log about compilation */
10295        trace?(s: string): void;
10296        /** If provided is used to get the environment variable */
10297        getEnvironmentVariable?(name: string): string | undefined;
10298        /** If provided, used to resolve the module names, otherwise typescript's default module resolution */
10299        resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[];
10300        /** If provided, used to resolve type reference directives, otherwise typescript's default resolution */
10301        resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[] | readonly FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[];
10302        /** If provided along with custom resolveModuleNames or resolveTypeReferenceDirectives, used to determine if unchanged file path needs to re-resolve modules/type reference directives */
10303        hasInvalidatedResolutions?(filePath: Path): boolean;
10304        /**
10305         * 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
10306         */
10307        getModuleResolutionCache?(): ModuleResolutionCache | undefined;
10308    }
10309    interface WatchCompilerHost<T extends BuilderProgram> extends ProgramHost<T>, WatchHost {
10310        /** Instead of using output d.ts file from project reference, use its source file */
10311        useSourceOfProjectReferenceRedirect?(): boolean;
10312        /** If provided, use this method to get parsed command lines for referenced projects */
10313        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
10314        /** If provided, callback to invoke after every new program creation */
10315        afterProgramCreate?(program: T): void;
10316    }
10317    /**
10318     * Host to create watch with root files and options
10319     */
10320    interface WatchCompilerHostOfFilesAndCompilerOptions<T extends BuilderProgram> extends WatchCompilerHost<T> {
10321        /** root files to use to generate program */
10322        rootFiles: string[];
10323        /** Compiler options */
10324        options: CompilerOptions;
10325        watchOptions?: WatchOptions;
10326        /** Project References */
10327        projectReferences?: readonly ProjectReference[];
10328    }
10329    /**
10330     * Host to create watch with config file
10331     */
10332    interface WatchCompilerHostOfConfigFile<T extends BuilderProgram> extends WatchCompilerHost<T>, ConfigFileDiagnosticsReporter {
10333        /** Name of the config file to compile */
10334        configFileName: string;
10335        /** Options to extend */
10336        optionsToExtend?: CompilerOptions;
10337        watchOptionsToExtend?: WatchOptions;
10338        extraFileExtensions?: readonly FileExtensionInfo[];
10339        /**
10340         * Used to generate source file names from the config file and its include, exclude, files rules
10341         * and also to cache the directory stucture
10342         */
10343        readDirectory(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
10344    }
10345    interface Watch<T> {
10346        /** Synchronize with host and get updated program */
10347        getProgram(): T;
10348        /** Closes the watch */
10349        close(): void;
10350    }
10351    /**
10352     * Creates the watch what generates program using the config file
10353     */
10354    interface WatchOfConfigFile<T> extends Watch<T> {
10355    }
10356    /**
10357     * Creates the watch that generates program using the root files and compiler options
10358     */
10359    interface WatchOfFilesAndCompilerOptions<T> extends Watch<T> {
10360        /** Updates the root files in the program, only if this is not config file compilation */
10361        updateRootFileNames(fileNames: string[]): void;
10362    }
10363    /**
10364     * Create a function that reports watch status by writing to the system and handles the formating of the diagnostic
10365     */
10366    function createBuilderStatusReporter(system: System, pretty?: boolean): DiagnosticReporter;
10367    function createSolutionBuilderHost<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>(system?: ts.System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportSolutionBuilderStatus?: DiagnosticReporter, reportErrorSummary?: ReportEmitErrorSummary): ts.SolutionBuilderHost<T>;
10368    function createSolutionBuilderWithWatchHost<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>(system?: ts.System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportSolutionBuilderStatus?: DiagnosticReporter, reportWatchStatus?: WatchStatusReporter): ts.SolutionBuilderWithWatchHost<T>;
10369    function createSolutionBuilder<T extends BuilderProgram>(host: SolutionBuilderHost<T>, rootNames: readonly string[], defaultOptions: BuildOptions): SolutionBuilder<T>;
10370    function createSolutionBuilderWithWatch<T extends BuilderProgram>(host: SolutionBuilderWithWatchHost<T>, rootNames: readonly string[], defaultOptions: BuildOptions, baseWatchOptions?: WatchOptions): SolutionBuilder<T>;
10371    interface BuildOptions {
10372        dry?: boolean;
10373        force?: boolean;
10374        verbose?: boolean;
10375        incremental?: boolean;
10376        assumeChangesOnlyAffectDirectDependencies?: boolean;
10377        traceResolution?: boolean;
10378        [option: string]: CompilerOptionsValue | undefined;
10379    }
10380    type ReportEmitErrorSummary = (errorCount: number, filesInError: (ReportFileInError | undefined)[]) => void;
10381    interface ReportFileInError {
10382        fileName: string;
10383        line: number;
10384    }
10385    interface SolutionBuilderHostBase<T extends BuilderProgram> extends ProgramHost<T> {
10386        createDirectory?(path: string): void;
10387        /**
10388         * Should provide create directory and writeFile if done of invalidatedProjects is not invoked with
10389         * writeFileCallback
10390         */
10391        writeFile?(path: string, data: string, writeByteOrderMark?: boolean): void;
10392        getCustomTransformers?: (project: string) => CustomTransformers | undefined;
10393        getModifiedTime(fileName: string): Date | undefined;
10394        setModifiedTime(fileName: string, date: Date): void;
10395        deleteFile(fileName: string): void;
10396        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
10397        reportDiagnostic: DiagnosticReporter;
10398        reportSolutionBuilderStatus: DiagnosticReporter;
10399        afterProgramEmitAndDiagnostics?(program: T): void;
10400    }
10401    interface SolutionBuilderHost<T extends BuilderProgram> extends SolutionBuilderHostBase<T> {
10402        reportErrorSummary?: ReportEmitErrorSummary;
10403    }
10404    interface SolutionBuilderWithWatchHost<T extends BuilderProgram> extends SolutionBuilderHostBase<T>, WatchHost {
10405    }
10406    interface SolutionBuilder<T extends BuilderProgram> {
10407        build(project?: string, cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, getCustomTransformers?: (project: string) => CustomTransformers): ExitStatus;
10408        clean(project?: string): ExitStatus;
10409        buildReferences(project: string, cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, getCustomTransformers?: (project: string) => CustomTransformers): ExitStatus;
10410        cleanReferences(project?: string): ExitStatus;
10411        getNextInvalidatedProject(cancellationToken?: CancellationToken): InvalidatedProject<T> | undefined;
10412    }
10413    enum InvalidatedProjectKind {
10414        Build = 0,
10415        UpdateBundle = 1,
10416        UpdateOutputFileStamps = 2
10417    }
10418    interface InvalidatedProjectBase {
10419        readonly kind: InvalidatedProjectKind;
10420        readonly project: ResolvedConfigFileName;
10421        /**
10422         *  To dispose this project and ensure that all the necessary actions are taken and state is updated accordingly
10423         */
10424        done(cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): ExitStatus;
10425        getCompilerOptions(): CompilerOptions;
10426        getCurrentDirectory(): string;
10427    }
10428    interface UpdateOutputFileStampsProject extends InvalidatedProjectBase {
10429        readonly kind: InvalidatedProjectKind.UpdateOutputFileStamps;
10430        updateOutputFileStatmps(): void;
10431    }
10432    interface BuildInvalidedProject<T extends BuilderProgram> extends InvalidatedProjectBase {
10433        readonly kind: InvalidatedProjectKind.Build;
10434        getBuilderProgram(): T | undefined;
10435        getProgram(): Program | undefined;
10436        getSourceFile(fileName: string): SourceFile | undefined;
10437        getSourceFiles(): readonly SourceFile[];
10438        getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
10439        getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
10440        getConfigFileParsingDiagnostics(): readonly Diagnostic[];
10441        getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
10442        getAllDependencies(sourceFile: SourceFile): readonly string[];
10443        getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
10444        getSemanticDiagnosticsOfNextAffectedFile(cancellationToken?: CancellationToken, ignoreSourceFile?: (sourceFile: SourceFile) => boolean): AffectedFileResult<readonly Diagnostic[]>;
10445        emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult | undefined;
10446    }
10447    interface UpdateBundleProject<T extends BuilderProgram> extends InvalidatedProjectBase {
10448        readonly kind: InvalidatedProjectKind.UpdateBundle;
10449        emit(writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): EmitResult | BuildInvalidedProject<T> | undefined;
10450    }
10451    type InvalidatedProject<T extends BuilderProgram> = UpdateOutputFileStampsProject | BuildInvalidedProject<T> | UpdateBundleProject<T>;
10452    function getDefaultFormatCodeSettings(newLineCharacter?: string): FormatCodeSettings;
10453    /**
10454     * Represents an immutable snapshot of a script at a specified time.Once acquired, the
10455     * snapshot is observably immutable. i.e. the same calls with the same parameters will return
10456     * the same values.
10457     */
10458    interface IScriptSnapshot {
10459        /** Gets a portion of the script snapshot specified by [start, end). */
10460        getText(start: number, end: number): string;
10461        /** Gets the length of this script snapshot. */
10462        getLength(): number;
10463        /**
10464         * Gets the TextChangeRange that describe how the text changed between this text and
10465         * an older version.  This information is used by the incremental parser to determine
10466         * what sections of the script need to be re-parsed.  'undefined' can be returned if the
10467         * change range cannot be determined.  However, in that case, incremental parsing will
10468         * not happen and the entire document will be re - parsed.
10469         */
10470        getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange | undefined;
10471        /** Releases all resources held by this script snapshot */
10472        dispose?(): void;
10473    }
10474    namespace ScriptSnapshot {
10475        function fromString(text: string): IScriptSnapshot;
10476    }
10477    interface PreProcessedFileInfo {
10478        referencedFiles: FileReference[];
10479        typeReferenceDirectives: FileReference[];
10480        libReferenceDirectives: FileReference[];
10481        importedFiles: FileReference[];
10482        ambientExternalModules?: string[];
10483        isLibFile: boolean;
10484    }
10485    interface HostCancellationToken {
10486        isCancellationRequested(): boolean;
10487    }
10488    interface InstallPackageOptions {
10489        fileName: Path;
10490        packageName: string;
10491    }
10492    interface PerformanceEvent {
10493        kind: "UpdateGraph" | "CreatePackageJsonAutoImportProvider";
10494        durationMs: number;
10495    }
10496    enum LanguageServiceMode {
10497        Semantic = 0,
10498        PartialSemantic = 1,
10499        Syntactic = 2
10500    }
10501    interface IncompleteCompletionsCache {
10502        get(): CompletionInfo | undefined;
10503        set(response: CompletionInfo): void;
10504        clear(): void;
10505    }
10506    interface LanguageServiceHost extends GetEffectiveTypeRootsHost, MinimalResolutionCacheHost {
10507        getCompilationSettings(): CompilerOptions;
10508        getNewLine?(): string;
10509        getProjectVersion?(): string;
10510        getScriptFileNames(): string[];
10511        getScriptKind?(fileName: string): ScriptKind;
10512        getScriptVersion(fileName: string): string;
10513        getScriptSnapshot(fileName: string): IScriptSnapshot | undefined;
10514        getProjectReferences?(): readonly ProjectReference[] | undefined;
10515        getLocalizedDiagnosticMessages?(): any;
10516        getCancellationToken?(): HostCancellationToken;
10517        getCurrentDirectory(): string;
10518        getDefaultLibFileName(options: CompilerOptions): string;
10519        log?(s: string): void;
10520        trace?(s: string): void;
10521        error?(s: string): void;
10522        useCaseSensitiveFileNames?(): boolean;
10523        readDirectory?(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
10524        realpath?(path: string): string;
10525        readFile(path: string, encoding?: string): string | undefined;
10526        fileExists(path: string): boolean;
10527        getTypeRootsVersion?(): number;
10528        resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[];
10529        getResolvedModuleWithFailedLookupLocationsFromCache?(modulename: string, containingFile: string, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations | undefined;
10530        resolveTypeReferenceDirectives?(typeDirectiveNames: string[] | FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[];
10531        getDirectories?(directoryName: string): string[];
10532        /**
10533         * Gets a set of custom transformers to use during emit.
10534         */
10535        getCustomTransformers?(): CustomTransformers | undefined;
10536        isKnownTypesPackageName?(name: string): boolean;
10537        installPackage?(options: InstallPackageOptions): Promise<ApplyCodeActionCommandResult>;
10538        writeFile?(fileName: string, content: string): void;
10539        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
10540        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
10541        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
10542        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
10543        shouldCompletionSortCustom?: boolean;
10544        uiProps?: Set<string>;
10545        clearProps?(): void;
10546        clearFileCache?(): void;
10547        isStaticSourceFile?(fileName: string): boolean;
10548    }
10549    type WithMetadata<T> = T & {
10550        metadata?: unknown;
10551    };
10552    enum SemanticClassificationFormat {
10553        Original = "original",
10554        TwentyTwenty = "2020"
10555    }
10556    interface LanguageService {
10557        /** This is used as a part of restarting the language service. */
10558        cleanupSemanticCache(): void;
10559        /**
10560         * Gets errors indicating invalid syntax in a file.
10561         *
10562         * In English, "this cdeo have, erorrs" is syntactically invalid because it has typos,
10563         * grammatical errors, and misplaced punctuation. Likewise, examples of syntax
10564         * errors in TypeScript are missing parentheses in an `if` statement, mismatched
10565         * curly braces, and using a reserved keyword as a variable name.
10566         *
10567         * These diagnostics are inexpensive to compute and don't require knowledge of
10568         * other files. Note that a non-empty result increases the likelihood of false positives
10569         * from `getSemanticDiagnostics`.
10570         *
10571         * While these represent the majority of syntax-related diagnostics, there are some
10572         * that require the type system, which will be present in `getSemanticDiagnostics`.
10573         *
10574         * @param fileName A path to the file you want syntactic diagnostics for
10575         */
10576        getSyntacticDiagnostics(fileName: string): DiagnosticWithLocation[];
10577        /**
10578         * Gets warnings or errors indicating type system issues in a given file.
10579         * Requesting semantic diagnostics may start up the type system and
10580         * run deferred work, so the first call may take longer than subsequent calls.
10581         *
10582         * Unlike the other get*Diagnostics functions, these diagnostics can potentially not
10583         * include a reference to a source file. Specifically, the first time this is called,
10584         * it will return global diagnostics with no associated location.
10585         *
10586         * To contrast the differences between semantic and syntactic diagnostics, consider the
10587         * sentence: "The sun is green." is syntactically correct; those are real English words with
10588         * correct sentence structure. However, it is semantically invalid, because it is not true.
10589         *
10590         * @param fileName A path to the file you want semantic diagnostics for
10591         */
10592        getSemanticDiagnostics(fileName: string): Diagnostic[];
10593        /**
10594         * Gets suggestion diagnostics for a specific file. These diagnostics tend to
10595         * proactively suggest refactors, as opposed to diagnostics that indicate
10596         * potentially incorrect runtime behavior.
10597         *
10598         * @param fileName A path to the file you want semantic diagnostics for
10599         */
10600        getSuggestionDiagnostics(fileName: string): DiagnosticWithLocation[];
10601        /**
10602         * Gets global diagnostics related to the program configuration and compiler options.
10603         */
10604        getCompilerOptionsDiagnostics(): Diagnostic[];
10605        /** @deprecated Use getEncodedSyntacticClassifications instead. */
10606        getSyntacticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[];
10607        getSyntacticClassifications(fileName: string, span: TextSpan, format: SemanticClassificationFormat): ClassifiedSpan[] | ClassifiedSpan2020[];
10608        /** @deprecated Use getEncodedSemanticClassifications instead. */
10609        getSemanticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[];
10610        getSemanticClassifications(fileName: string, span: TextSpan, format: SemanticClassificationFormat): ClassifiedSpan[] | ClassifiedSpan2020[];
10611        /** Encoded as triples of [start, length, ClassificationType]. */
10612        getEncodedSyntacticClassifications(fileName: string, span: TextSpan): Classifications;
10613        /**
10614         * Gets semantic highlights information for a particular file. Has two formats, an older
10615         * version used by VS and a format used by VS Code.
10616         *
10617         * @param fileName The path to the file
10618         * @param position A text span to return results within
10619         * @param format Which format to use, defaults to "original"
10620         * @returns a number array encoded as triples of [start, length, ClassificationType, ...].
10621         */
10622        getEncodedSemanticClassifications(fileName: string, span: TextSpan, format?: SemanticClassificationFormat): Classifications;
10623        /**
10624         * Gets completion entries at a particular position in a file.
10625         *
10626         * @param fileName The path to the file
10627         * @param position A zero-based index of the character where you want the entries
10628         * @param options An object describing how the request was triggered and what kinds
10629         * of code actions can be returned with the completions.
10630         * @param formattingSettings settings needed for calling formatting functions.
10631         */
10632        getCompletionsAtPosition(fileName: string, position: number, options: GetCompletionsAtPositionOptions | undefined, formattingSettings?: FormatCodeSettings): WithMetadata<CompletionInfo> | undefined;
10633        /**
10634         * Gets the extended details for a completion entry retrieved from `getCompletionsAtPosition`.
10635         *
10636         * @param fileName The path to the file
10637         * @param position A zero based index of the character where you want the entries
10638         * @param entryName The `name` from an existing completion which came from `getCompletionsAtPosition`
10639         * @param formatOptions How should code samples in the completions be formatted, can be undefined for backwards compatibility
10640         * @param source `source` property from the completion entry
10641         * @param preferences User settings, can be undefined for backwards compatibility
10642         * @param data `data` property from the completion entry
10643         */
10644        getCompletionEntryDetails(fileName: string, position: number, entryName: string, formatOptions: FormatCodeOptions | FormatCodeSettings | undefined, source: string | undefined, preferences: UserPreferences | undefined, data: CompletionEntryData | undefined): CompletionEntryDetails | undefined;
10645        getCompletionEntrySymbol(fileName: string, position: number, name: string, source: string | undefined): Symbol | undefined;
10646        /**
10647         * Gets semantic information about the identifier at a particular position in a
10648         * file. Quick info is what you typically see when you hover in an editor.
10649         *
10650         * @param fileName The path to the file
10651         * @param position A zero-based index of the character where you want the quick info
10652         */
10653        getQuickInfoAtPosition(fileName: string, position: number): QuickInfo | undefined;
10654        getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): TextSpan | undefined;
10655        getBreakpointStatementAtPosition(fileName: string, position: number): TextSpan | undefined;
10656        getSignatureHelpItems(fileName: string, position: number, options: SignatureHelpItemsOptions | undefined): SignatureHelpItems | undefined;
10657        getRenameInfo(fileName: string, position: number, preferences: UserPreferences): RenameInfo;
10658        /** @deprecated Use the signature with `UserPreferences` instead. */
10659        getRenameInfo(fileName: string, position: number, options?: RenameInfoOptions): RenameInfo;
10660        findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean, providePrefixAndSuffixTextForRename?: boolean): readonly RenameLocation[] | undefined;
10661        getSmartSelectionRange(fileName: string, position: number): SelectionRange;
10662        getDefinitionAtPosition(fileName: string, position: number): readonly DefinitionInfo[] | undefined;
10663        getDefinitionAndBoundSpan(fileName: string, position: number): DefinitionInfoAndBoundSpan | undefined;
10664        getTypeDefinitionAtPosition(fileName: string, position: number): readonly DefinitionInfo[] | undefined;
10665        getImplementationAtPosition(fileName: string, position: number): readonly ImplementationLocation[] | undefined;
10666        getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[] | undefined;
10667        findReferences(fileName: string, position: number): ReferencedSymbol[] | undefined;
10668        getDocumentHighlights(fileName: string, position: number, filesToSearch: string[]): DocumentHighlights[] | undefined;
10669        getFileReferences(fileName: string): ReferenceEntry[];
10670        /** @deprecated */
10671        getOccurrencesAtPosition(fileName: string, position: number): readonly ReferenceEntry[] | undefined;
10672        getNavigateToItems(searchValue: string, maxResultCount?: number, fileName?: string, excludeDtsFiles?: boolean): NavigateToItem[];
10673        getNavigationBarItems(fileName: string): NavigationBarItem[];
10674        getNavigationTree(fileName: string): NavigationTree;
10675        prepareCallHierarchy(fileName: string, position: number): CallHierarchyItem | CallHierarchyItem[] | undefined;
10676        provideCallHierarchyIncomingCalls(fileName: string, position: number): CallHierarchyIncomingCall[];
10677        provideCallHierarchyOutgoingCalls(fileName: string, position: number): CallHierarchyOutgoingCall[];
10678        provideInlayHints(fileName: string, span: TextSpan, preferences: UserPreferences | undefined): InlayHint[];
10679        getOutliningSpans(fileName: string): OutliningSpan[];
10680        getTodoComments(fileName: string, descriptors: TodoCommentDescriptor[]): TodoComment[];
10681        getBraceMatchingAtPosition(fileName: string, position: number): TextSpan[];
10682        getIndentationAtPosition(fileName: string, position: number, options: EditorOptions | EditorSettings): number;
10683        getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
10684        getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
10685        getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
10686        getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined;
10687        isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean;
10688        /**
10689         * 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.
10690         * Editors should call this after `>` is typed.
10691         */
10692        getJsxClosingTagAtPosition(fileName: string, position: number): JsxClosingTagInfo | undefined;
10693        getSpanOfEnclosingComment(fileName: string, position: number, onlyMultiLine: boolean): TextSpan | undefined;
10694        toLineColumnOffset?(fileName: string, position: number): LineAndCharacter;
10695        getCodeFixesAtPosition(fileName: string, start: number, end: number, errorCodes: readonly number[], formatOptions: FormatCodeSettings, preferences: UserPreferences): readonly CodeFixAction[];
10696        getCombinedCodeFix(scope: CombinedCodeFixScope, fixId: {}, formatOptions: FormatCodeSettings, preferences: UserPreferences): CombinedCodeActions;
10697        applyCodeActionCommand(action: CodeActionCommand, formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult>;
10698        applyCodeActionCommand(action: CodeActionCommand[], formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult[]>;
10699        applyCodeActionCommand(action: CodeActionCommand | CodeActionCommand[], formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>;
10700        /** @deprecated `fileName` will be ignored */
10701        applyCodeActionCommand(fileName: string, action: CodeActionCommand): Promise<ApplyCodeActionCommandResult>;
10702        /** @deprecated `fileName` will be ignored */
10703        applyCodeActionCommand(fileName: string, action: CodeActionCommand[]): Promise<ApplyCodeActionCommandResult[]>;
10704        /** @deprecated `fileName` will be ignored */
10705        applyCodeActionCommand(fileName: string, action: CodeActionCommand | CodeActionCommand[]): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>;
10706        getApplicableRefactors(fileName: string, positionOrRange: number | TextRange, preferences: UserPreferences | undefined, triggerReason?: RefactorTriggerReason, kind?: string): ApplicableRefactorInfo[];
10707        getEditsForRefactor(fileName: string, formatOptions: FormatCodeSettings, positionOrRange: number | TextRange, refactorName: string, actionName: string, preferences: UserPreferences | undefined): RefactorEditInfo | undefined;
10708        organizeImports(args: OrganizeImportsArgs, formatOptions: FormatCodeSettings, preferences: UserPreferences | undefined): readonly FileTextChanges[];
10709        getEditsForFileRename(oldFilePath: string, newFilePath: string, formatOptions: FormatCodeSettings, preferences: UserPreferences | undefined): readonly FileTextChanges[];
10710        getEmitOutput(fileName: string, emitOnlyDtsFiles?: boolean, forceDtsEmit?: boolean): EmitOutput;
10711        getProgram(): Program | undefined;
10712        getBuilderProgram(): BuilderProgram | undefined;
10713        toggleLineComment(fileName: string, textRange: TextRange): TextChange[];
10714        toggleMultilineComment(fileName: string, textRange: TextRange): TextChange[];
10715        commentSelection(fileName: string, textRange: TextRange): TextChange[];
10716        uncommentSelection(fileName: string, textRange: TextRange): TextChange[];
10717        dispose(): void;
10718        updateRootFiles?(rootFiles: string[]): void;
10719        getProps?(propsSwitch: boolean): string[] | Set<string>;
10720    }
10721    interface JsxClosingTagInfo {
10722        readonly newText: string;
10723    }
10724    interface CombinedCodeFixScope {
10725        type: "file";
10726        fileName: string;
10727    }
10728    enum OrganizeImportsMode {
10729        All = "All",
10730        SortAndCombine = "SortAndCombine",
10731        RemoveUnused = "RemoveUnused"
10732    }
10733    interface OrganizeImportsArgs extends CombinedCodeFixScope {
10734        /** @deprecated Use `mode` instead */
10735        skipDestructiveCodeActions?: boolean;
10736        mode?: OrganizeImportsMode;
10737    }
10738    type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<" | "#" | " ";
10739    enum CompletionTriggerKind {
10740        /** Completion was triggered by typing an identifier, manual invocation (e.g Ctrl+Space) or via API. */
10741        Invoked = 1,
10742        /** Completion was triggered by a trigger character. */
10743        TriggerCharacter = 2,
10744        /** Completion was re-triggered as the current completion list is incomplete. */
10745        TriggerForIncompleteCompletions = 3
10746    }
10747    interface GetCompletionsAtPositionOptions extends UserPreferences {
10748        /**
10749         * If the editor is asking for completions because a certain character was typed
10750         * (as opposed to when the user explicitly requested them) this should be set.
10751         */
10752        triggerCharacter?: CompletionsTriggerCharacter;
10753        triggerKind?: CompletionTriggerKind;
10754        /** @deprecated Use includeCompletionsForModuleExports */
10755        includeExternalModuleExports?: boolean;
10756        /** @deprecated Use includeCompletionsWithInsertText */
10757        includeInsertTextCompletions?: boolean;
10758    }
10759    type SignatureHelpTriggerCharacter = "," | "(" | "<";
10760    type SignatureHelpRetriggerCharacter = SignatureHelpTriggerCharacter | ")";
10761    interface SignatureHelpItemsOptions {
10762        triggerReason?: SignatureHelpTriggerReason;
10763    }
10764    type SignatureHelpTriggerReason = SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason | SignatureHelpRetriggeredReason;
10765    /**
10766     * Signals that the user manually requested signature help.
10767     * The language service will unconditionally attempt to provide a result.
10768     */
10769    interface SignatureHelpInvokedReason {
10770        kind: "invoked";
10771        triggerCharacter?: undefined;
10772    }
10773    /**
10774     * Signals that the signature help request came from a user typing a character.
10775     * Depending on the character and the syntactic context, the request may or may not be served a result.
10776     */
10777    interface SignatureHelpCharacterTypedReason {
10778        kind: "characterTyped";
10779        /**
10780         * Character that was responsible for triggering signature help.
10781         */
10782        triggerCharacter: SignatureHelpTriggerCharacter;
10783    }
10784    /**
10785     * Signals that this signature help request came from typing a character or moving the cursor.
10786     * This should only occur if a signature help session was already active and the editor needs to see if it should adjust.
10787     * The language service will unconditionally attempt to provide a result.
10788     * `triggerCharacter` can be `undefined` for a retrigger caused by a cursor move.
10789     */
10790    interface SignatureHelpRetriggeredReason {
10791        kind: "retrigger";
10792        /**
10793         * Character that was responsible for triggering signature help.
10794         */
10795        triggerCharacter?: SignatureHelpRetriggerCharacter;
10796    }
10797    interface ApplyCodeActionCommandResult {
10798        successMessage: string;
10799    }
10800    interface Classifications {
10801        spans: number[];
10802        endOfLineState: EndOfLineState;
10803    }
10804    interface ClassifiedSpan {
10805        textSpan: TextSpan;
10806        classificationType: ClassificationTypeNames;
10807    }
10808    interface ClassifiedSpan2020 {
10809        textSpan: TextSpan;
10810        classificationType: number;
10811    }
10812    /**
10813     * Navigation bar interface designed for visual studio's dual-column layout.
10814     * This does not form a proper tree.
10815     * The navbar is returned as a list of top-level items, each of which has a list of child items.
10816     * Child items always have an empty array for their `childItems`.
10817     */
10818    interface NavigationBarItem {
10819        text: string;
10820        kind: ScriptElementKind;
10821        kindModifiers: string;
10822        spans: TextSpan[];
10823        childItems: NavigationBarItem[];
10824        indent: number;
10825        bolded: boolean;
10826        grayed: boolean;
10827    }
10828    /**
10829     * Node in a tree of nested declarations in a file.
10830     * The top node is always a script or module node.
10831     */
10832    interface NavigationTree {
10833        /** Name of the declaration, or a short description, e.g. "<class>". */
10834        text: string;
10835        kind: ScriptElementKind;
10836        /** ScriptElementKindModifier separated by commas, e.g. "public,abstract" */
10837        kindModifiers: string;
10838        /**
10839         * Spans of the nodes that generated this declaration.
10840         * There will be more than one if this is the result of merging.
10841         */
10842        spans: TextSpan[];
10843        nameSpan: TextSpan | undefined;
10844        /** Present if non-empty */
10845        childItems?: NavigationTree[];
10846    }
10847    interface CallHierarchyItem {
10848        name: string;
10849        kind: ScriptElementKind;
10850        kindModifiers?: string;
10851        file: string;
10852        span: TextSpan;
10853        selectionSpan: TextSpan;
10854        containerName?: string;
10855    }
10856    interface CallHierarchyIncomingCall {
10857        from: CallHierarchyItem;
10858        fromSpans: TextSpan[];
10859    }
10860    interface CallHierarchyOutgoingCall {
10861        to: CallHierarchyItem;
10862        fromSpans: TextSpan[];
10863    }
10864    enum InlayHintKind {
10865        Type = "Type",
10866        Parameter = "Parameter",
10867        Enum = "Enum"
10868    }
10869    interface InlayHint {
10870        text: string;
10871        position: number;
10872        kind: InlayHintKind;
10873        whitespaceBefore?: boolean;
10874        whitespaceAfter?: boolean;
10875    }
10876    interface TodoCommentDescriptor {
10877        text: string;
10878        priority: number;
10879    }
10880    interface TodoComment {
10881        descriptor: TodoCommentDescriptor;
10882        message: string;
10883        position: number;
10884    }
10885    interface TextChange {
10886        span: TextSpan;
10887        newText: string;
10888    }
10889    interface FileTextChanges {
10890        fileName: string;
10891        textChanges: readonly TextChange[];
10892        isNewFile?: boolean;
10893    }
10894    interface CodeAction {
10895        /** Description of the code action to display in the UI of the editor */
10896        description: string;
10897        /** Text changes to apply to each file as part of the code action */
10898        changes: FileTextChanges[];
10899        /**
10900         * If the user accepts the code fix, the editor should send the action back in a `applyAction` request.
10901         * This allows the language service to have side effects (e.g. installing dependencies) upon a code fix.
10902         */
10903        commands?: CodeActionCommand[];
10904    }
10905    interface CodeFixAction extends CodeAction {
10906        /** Short name to identify the fix, for use by telemetry. */
10907        fixName: string;
10908        /**
10909         * If present, one may call 'getCombinedCodeFix' with this fixId.
10910         * This may be omitted to indicate that the code fix can't be applied in a group.
10911         */
10912        fixId?: {};
10913        fixAllDescription?: string;
10914    }
10915    interface CombinedCodeActions {
10916        changes: readonly FileTextChanges[];
10917        commands?: readonly CodeActionCommand[];
10918    }
10919    type CodeActionCommand = InstallPackageAction;
10920    interface InstallPackageAction {
10921    }
10922    /**
10923     * A set of one or more available refactoring actions, grouped under a parent refactoring.
10924     */
10925    interface ApplicableRefactorInfo {
10926        /**
10927         * The programmatic name of the refactoring
10928         */
10929        name: string;
10930        /**
10931         * A description of this refactoring category to show to the user.
10932         * If the refactoring gets inlined (see below), this text will not be visible.
10933         */
10934        description: string;
10935        /**
10936         * Inlineable refactorings can have their actions hoisted out to the top level
10937         * of a context menu. Non-inlineanable refactorings should always be shown inside
10938         * their parent grouping.
10939         *
10940         * If not specified, this value is assumed to be 'true'
10941         */
10942        inlineable?: boolean;
10943        actions: RefactorActionInfo[];
10944    }
10945    /**
10946     * Represents a single refactoring action - for example, the "Extract Method..." refactor might
10947     * offer several actions, each corresponding to a surround class or closure to extract into.
10948     */
10949    interface RefactorActionInfo {
10950        /**
10951         * The programmatic name of the refactoring action
10952         */
10953        name: string;
10954        /**
10955         * A description of this refactoring action to show to the user.
10956         * If the parent refactoring is inlined away, this will be the only text shown,
10957         * so this description should make sense by itself if the parent is inlineable=true
10958         */
10959        description: string;
10960        /**
10961         * A message to show to the user if the refactoring cannot be applied in
10962         * the current context.
10963         */
10964        notApplicableReason?: string;
10965        /**
10966         * The hierarchical dotted name of the refactor action.
10967         */
10968        kind?: string;
10969    }
10970    /**
10971     * A set of edits to make in response to a refactor action, plus an optional
10972     * location where renaming should be invoked from
10973     */
10974    interface RefactorEditInfo {
10975        edits: FileTextChanges[];
10976        renameFilename?: string;
10977        renameLocation?: number;
10978        commands?: CodeActionCommand[];
10979    }
10980    type RefactorTriggerReason = "implicit" | "invoked";
10981    interface TextInsertion {
10982        newText: string;
10983        /** The position in newText the caret should point to after the insertion. */
10984        caretOffset: number;
10985    }
10986    interface DocumentSpan {
10987        textSpan: TextSpan;
10988        fileName: string;
10989        /**
10990         * If the span represents a location that was remapped (e.g. via a .d.ts.map file),
10991         * then the original filename and span will be specified here
10992         */
10993        originalTextSpan?: TextSpan;
10994        originalFileName?: string;
10995        /**
10996         * If DocumentSpan.textSpan is the span for name of the declaration,
10997         * then this is the span for relevant declaration
10998         */
10999        contextSpan?: TextSpan;
11000        originalContextSpan?: TextSpan;
11001    }
11002    interface RenameLocation extends DocumentSpan {
11003        readonly prefixText?: string;
11004        readonly suffixText?: string;
11005    }
11006    interface ReferenceEntry extends DocumentSpan {
11007        isWriteAccess: boolean;
11008        isInString?: true;
11009    }
11010    interface ImplementationLocation extends DocumentSpan {
11011        kind: ScriptElementKind;
11012        displayParts: SymbolDisplayPart[];
11013    }
11014    enum HighlightSpanKind {
11015        none = "none",
11016        definition = "definition",
11017        reference = "reference",
11018        writtenReference = "writtenReference"
11019    }
11020    interface HighlightSpan {
11021        fileName?: string;
11022        isInString?: true;
11023        textSpan: TextSpan;
11024        contextSpan?: TextSpan;
11025        kind: HighlightSpanKind;
11026    }
11027    interface NavigateToItem {
11028        name: string;
11029        kind: ScriptElementKind;
11030        kindModifiers: string;
11031        matchKind: "exact" | "prefix" | "substring" | "camelCase";
11032        isCaseSensitive: boolean;
11033        fileName: string;
11034        textSpan: TextSpan;
11035        containerName: string;
11036        containerKind: ScriptElementKind;
11037    }
11038    enum IndentStyle {
11039        None = 0,
11040        Block = 1,
11041        Smart = 2
11042    }
11043    enum SemicolonPreference {
11044        Ignore = "ignore",
11045        Insert = "insert",
11046        Remove = "remove"
11047    }
11048    /** @deprecated - consider using EditorSettings instead */
11049    interface EditorOptions {
11050        BaseIndentSize?: number;
11051        IndentSize: number;
11052        TabSize: number;
11053        NewLineCharacter: string;
11054        ConvertTabsToSpaces: boolean;
11055        IndentStyle: IndentStyle;
11056    }
11057    interface EditorSettings {
11058        baseIndentSize?: number;
11059        indentSize?: number;
11060        tabSize?: number;
11061        newLineCharacter?: string;
11062        convertTabsToSpaces?: boolean;
11063        indentStyle?: IndentStyle;
11064        trimTrailingWhitespace?: boolean;
11065    }
11066    /** @deprecated - consider using FormatCodeSettings instead */
11067    interface FormatCodeOptions extends EditorOptions {
11068        InsertSpaceAfterCommaDelimiter: boolean;
11069        InsertSpaceAfterSemicolonInForStatements: boolean;
11070        InsertSpaceBeforeAndAfterBinaryOperators: boolean;
11071        InsertSpaceAfterConstructor?: boolean;
11072        InsertSpaceAfterKeywordsInControlFlowStatements: boolean;
11073        InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean;
11074        InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean;
11075        InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean;
11076        InsertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
11077        InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean;
11078        InsertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
11079        InsertSpaceAfterTypeAssertion?: boolean;
11080        InsertSpaceBeforeFunctionParenthesis?: boolean;
11081        PlaceOpenBraceOnNewLineForFunctions: boolean;
11082        PlaceOpenBraceOnNewLineForControlBlocks: boolean;
11083        insertSpaceBeforeTypeAnnotation?: boolean;
11084    }
11085    interface FormatCodeSettings extends EditorSettings {
11086        readonly insertSpaceAfterCommaDelimiter?: boolean;
11087        readonly insertSpaceAfterSemicolonInForStatements?: boolean;
11088        readonly insertSpaceBeforeAndAfterBinaryOperators?: boolean;
11089        readonly insertSpaceAfterConstructor?: boolean;
11090        readonly insertSpaceAfterKeywordsInControlFlowStatements?: boolean;
11091        readonly insertSpaceAfterFunctionKeywordForAnonymousFunctions?: boolean;
11092        readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean;
11093        readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?: boolean;
11094        readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
11095        readonly insertSpaceAfterOpeningAndBeforeClosingEmptyBraces?: boolean;
11096        readonly insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?: boolean;
11097        readonly insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
11098        readonly insertSpaceAfterTypeAssertion?: boolean;
11099        readonly insertSpaceBeforeFunctionParenthesis?: boolean;
11100        readonly placeOpenBraceOnNewLineForFunctions?: boolean;
11101        readonly placeOpenBraceOnNewLineForControlBlocks?: boolean;
11102        readonly insertSpaceBeforeTypeAnnotation?: boolean;
11103        readonly indentMultiLineObjectLiteralBeginningOnBlankLine?: boolean;
11104        readonly semicolons?: SemicolonPreference;
11105    }
11106    interface DefinitionInfo extends DocumentSpan {
11107        kind: ScriptElementKind;
11108        name: string;
11109        containerKind: ScriptElementKind;
11110        containerName: string;
11111        unverified?: boolean;
11112    }
11113    interface DefinitionInfoAndBoundSpan {
11114        definitions?: readonly DefinitionInfo[];
11115        textSpan: TextSpan;
11116    }
11117    interface ReferencedSymbolDefinitionInfo extends DefinitionInfo {
11118        displayParts: SymbolDisplayPart[];
11119    }
11120    interface ReferencedSymbol {
11121        definition: ReferencedSymbolDefinitionInfo;
11122        references: ReferencedSymbolEntry[];
11123    }
11124    interface ReferencedSymbolEntry extends ReferenceEntry {
11125        isDefinition?: boolean;
11126    }
11127    enum SymbolDisplayPartKind {
11128        aliasName = 0,
11129        className = 1,
11130        enumName = 2,
11131        fieldName = 3,
11132        interfaceName = 4,
11133        keyword = 5,
11134        lineBreak = 6,
11135        numericLiteral = 7,
11136        stringLiteral = 8,
11137        localName = 9,
11138        methodName = 10,
11139        moduleName = 11,
11140        operator = 12,
11141        parameterName = 13,
11142        propertyName = 14,
11143        punctuation = 15,
11144        space = 16,
11145        text = 17,
11146        typeParameterName = 18,
11147        enumMemberName = 19,
11148        functionName = 20,
11149        regularExpressionLiteral = 21,
11150        link = 22,
11151        linkName = 23,
11152        linkText = 24
11153    }
11154    interface JSDocLinkDisplayPart extends SymbolDisplayPart {
11155        target: DocumentSpan;
11156    }
11157    interface JSDocTagInfo {
11158        name: string;
11159        text?: SymbolDisplayPart[] | string;
11160        index?: number;
11161    }
11162    interface QuickInfo {
11163        kind: ScriptElementKind;
11164        kindModifiers: string;
11165        textSpan: TextSpan;
11166        displayParts?: SymbolDisplayPart[];
11167        documentation?: SymbolDisplayPart[];
11168        tags?: JSDocTagInfo[];
11169    }
11170    type RenameInfo = RenameInfoSuccess | RenameInfoFailure;
11171    interface RenameInfoSuccess {
11172        canRename: true;
11173        /**
11174         * File or directory to rename.
11175         * If set, `getEditsForFileRename` should be called instead of `findRenameLocations`.
11176         */
11177        fileToRename?: string;
11178        displayName: string;
11179        fullDisplayName: string;
11180        kind: ScriptElementKind;
11181        kindModifiers: string;
11182        triggerSpan: TextSpan;
11183    }
11184    interface RenameInfoFailure {
11185        canRename: false;
11186        localizedErrorMessage: string;
11187    }
11188    /**
11189     * @deprecated Use `UserPreferences` instead.
11190     */
11191    interface RenameInfoOptions {
11192        readonly allowRenameOfImportPath?: boolean;
11193    }
11194    interface DocCommentTemplateOptions {
11195        readonly generateReturnInDocTemplate?: boolean;
11196    }
11197    interface SignatureHelpParameter {
11198        name: string;
11199        documentation: SymbolDisplayPart[];
11200        displayParts: SymbolDisplayPart[];
11201        isOptional: boolean;
11202        isRest?: boolean;
11203    }
11204    interface SelectionRange {
11205        textSpan: TextSpan;
11206        parent?: SelectionRange;
11207    }
11208    /**
11209     * Represents a single signature to show in signature help.
11210     * The id is used for subsequent calls into the language service to ask questions about the
11211     * signature help item in the context of any documents that have been updated.  i.e. after
11212     * an edit has happened, while signature help is still active, the host can ask important
11213     * questions like 'what parameter is the user currently contained within?'.
11214     */
11215    interface SignatureHelpItem {
11216        isVariadic: boolean;
11217        prefixDisplayParts: SymbolDisplayPart[];
11218        suffixDisplayParts: SymbolDisplayPart[];
11219        separatorDisplayParts: SymbolDisplayPart[];
11220        parameters: SignatureHelpParameter[];
11221        documentation: SymbolDisplayPart[];
11222        tags: JSDocTagInfo[];
11223    }
11224    /**
11225     * Represents a set of signature help items, and the preferred item that should be selected.
11226     */
11227    interface SignatureHelpItems {
11228        items: SignatureHelpItem[];
11229        applicableSpan: TextSpan;
11230        selectedItemIndex: number;
11231        argumentIndex: number;
11232        argumentCount: number;
11233    }
11234    enum CompletionInfoFlags {
11235        None = 0,
11236        MayIncludeAutoImports = 1,
11237        IsImportStatementCompletion = 2,
11238        IsContinuation = 4,
11239        ResolvedModuleSpecifiers = 8,
11240        ResolvedModuleSpecifiersBeyondLimit = 16,
11241        MayIncludeMethodSnippets = 32
11242    }
11243    interface CompletionInfo {
11244        /** For performance telemetry. */
11245        flags?: CompletionInfoFlags;
11246        /** Not true for all global completions. This will be true if the enclosing scope matches a few syntax kinds. See `isSnippetScope`. */
11247        isGlobalCompletion: boolean;
11248        isMemberCompletion: boolean;
11249        /**
11250         * In the absence of `CompletionEntry["replacementSpan"]`, the editor may choose whether to use
11251         * this span or its default one. If `CompletionEntry["replacementSpan"]` is defined, that span
11252         * must be used to commit that completion entry.
11253         */
11254        optionalReplacementSpan?: TextSpan;
11255        /**
11256         * true when the current location also allows for a new identifier
11257         */
11258        isNewIdentifierLocation: boolean;
11259        /**
11260         * Indicates to client to continue requesting completions on subsequent keystrokes.
11261         */
11262        isIncomplete?: true;
11263        entries: CompletionEntry[];
11264    }
11265    interface CompletionEntryDataAutoImport {
11266        /**
11267         * The name of the property or export in the module's symbol table. Differs from the completion name
11268         * in the case of InternalSymbolName.ExportEquals and InternalSymbolName.Default.
11269         */
11270        exportName: string;
11271        moduleSpecifier?: string;
11272        /** The file name declaring the export's module symbol, if it was an external module */
11273        fileName?: string;
11274        /** The module name (with quotes stripped) of the export's module symbol, if it was an ambient module */
11275        ambientModuleName?: string;
11276        /** True if the export was found in the package.json AutoImportProvider */
11277        isPackageJsonImport?: true;
11278    }
11279    interface CompletionEntryDataUnresolved extends CompletionEntryDataAutoImport {
11280        /** The key in the `ExportMapCache` where the completion entry's `SymbolExportInfo[]` is found */
11281        exportMapKey: string;
11282    }
11283    interface CompletionEntryDataResolved extends CompletionEntryDataAutoImport {
11284        moduleSpecifier: string;
11285    }
11286    type CompletionEntryData = CompletionEntryDataUnresolved | CompletionEntryDataResolved;
11287    interface CompletionEntry {
11288        name: string;
11289        kind: ScriptElementKind;
11290        kindModifiers?: string;
11291        sortText: string;
11292        insertText?: string;
11293        isSnippet?: true;
11294        /**
11295         * An optional span that indicates the text to be replaced by this completion item.
11296         * If present, this span should be used instead of the default one.
11297         * It will be set if the required span differs from the one generated by the default replacement behavior.
11298         */
11299        replacementSpan?: TextSpan;
11300        hasAction?: true;
11301        source?: string;
11302        sourceDisplay?: SymbolDisplayPart[];
11303        labelDetails?: CompletionEntryLabelDetails;
11304        isRecommended?: true;
11305        isFromUncheckedFile?: true;
11306        isPackageJsonImport?: true;
11307        isImportStatementCompletion?: true;
11308        /**
11309         * A property to be sent back to TS Server in the CompletionDetailsRequest, along with `name`,
11310         * that allows TS Server to look up the symbol represented by the completion item, disambiguating
11311         * items with the same name. Currently only defined for auto-import completions, but the type is
11312         * `unknown` in the protocol, so it can be changed as needed to support other kinds of completions.
11313         * The presence of this property should generally not be used to assume that this completion entry
11314         * is an auto-import.
11315         */
11316        data?: CompletionEntryData;
11317        jsDoc?: JSDocTagInfo[];
11318        displayParts?: SymbolDisplayPart[];
11319    }
11320    interface CompletionEntryLabelDetails {
11321        detail?: string;
11322        description?: string;
11323    }
11324    interface CompletionEntryDetails {
11325        name: string;
11326        kind: ScriptElementKind;
11327        kindModifiers: string;
11328        displayParts: SymbolDisplayPart[];
11329        documentation?: SymbolDisplayPart[];
11330        tags?: JSDocTagInfo[];
11331        codeActions?: CodeAction[];
11332        /** @deprecated Use `sourceDisplay` instead. */
11333        source?: SymbolDisplayPart[];
11334        sourceDisplay?: SymbolDisplayPart[];
11335    }
11336    interface OutliningSpan {
11337        /** The span of the document to actually collapse. */
11338        textSpan: TextSpan;
11339        /** The span of the document to display when the user hovers over the collapsed span. */
11340        hintSpan: TextSpan;
11341        /** The text to display in the editor for the collapsed region. */
11342        bannerText: string;
11343        /**
11344         * Whether or not this region should be automatically collapsed when
11345         * the 'Collapse to Definitions' command is invoked.
11346         */
11347        autoCollapse: boolean;
11348        /**
11349         * Classification of the contents of the span
11350         */
11351        kind: OutliningSpanKind;
11352    }
11353    enum OutliningSpanKind {
11354        /** Single or multi-line comments */
11355        Comment = "comment",
11356        /** Sections marked by '// #region' and '// #endregion' comments */
11357        Region = "region",
11358        /** Declarations and expressions */
11359        Code = "code",
11360        /** Contiguous blocks of import declarations */
11361        Imports = "imports"
11362    }
11363    enum OutputFileType {
11364        JavaScript = 0,
11365        SourceMap = 1,
11366        Declaration = 2
11367    }
11368    enum EndOfLineState {
11369        None = 0,
11370        InMultiLineCommentTrivia = 1,
11371        InSingleQuoteStringLiteral = 2,
11372        InDoubleQuoteStringLiteral = 3,
11373        InTemplateHeadOrNoSubstitutionTemplate = 4,
11374        InTemplateMiddleOrTail = 5,
11375        InTemplateSubstitutionPosition = 6
11376    }
11377    enum TokenClass {
11378        Punctuation = 0,
11379        Keyword = 1,
11380        Operator = 2,
11381        Comment = 3,
11382        Whitespace = 4,
11383        Identifier = 5,
11384        NumberLiteral = 6,
11385        BigIntLiteral = 7,
11386        StringLiteral = 8,
11387        RegExpLiteral = 9
11388    }
11389    interface ClassificationResult {
11390        finalLexState: EndOfLineState;
11391        entries: ClassificationInfo[];
11392    }
11393    interface ClassificationInfo {
11394        length: number;
11395        classification: TokenClass;
11396    }
11397    interface Classifier {
11398        /**
11399         * Gives lexical classifications of tokens on a line without any syntactic context.
11400         * For instance, a token consisting of the text 'string' can be either an identifier
11401         * named 'string' or the keyword 'string', however, because this classifier is not aware,
11402         * it relies on certain heuristics to give acceptable results. For classifications where
11403         * speed trumps accuracy, this function is preferable; however, for true accuracy, the
11404         * syntactic classifier is ideal. In fact, in certain editing scenarios, combining the
11405         * lexical, syntactic, and semantic classifiers may issue the best user experience.
11406         *
11407         * @param text                      The text of a line to classify.
11408         * @param lexState                  The state of the lexical classifier at the end of the previous line.
11409         * @param syntacticClassifierAbsent Whether the client is *not* using a syntactic classifier.
11410         *                                  If there is no syntactic classifier (syntacticClassifierAbsent=true),
11411         *                                  certain heuristics may be used in its place; however, if there is a
11412         *                                  syntactic classifier (syntacticClassifierAbsent=false), certain
11413         *                                  classifications which may be incorrectly categorized will be given
11414         *                                  back as Identifiers in order to allow the syntactic classifier to
11415         *                                  subsume the classification.
11416         * @deprecated Use getLexicalClassifications instead.
11417         */
11418        getClassificationsForLine(text: string, lexState: EndOfLineState, syntacticClassifierAbsent: boolean): ClassificationResult;
11419        getEncodedLexicalClassifications(text: string, endOfLineState: EndOfLineState, syntacticClassifierAbsent: boolean): Classifications;
11420    }
11421    enum ScriptElementKind {
11422        unknown = "",
11423        warning = "warning",
11424        /** predefined type (void) or keyword (class) */
11425        keyword = "keyword",
11426        /** top level script node */
11427        scriptElement = "script",
11428        /** module foo {} */
11429        moduleElement = "module",
11430        /** class X {} */
11431        classElement = "class",
11432        /** var x = class X {} */
11433        localClassElement = "local class",
11434        /** struct X {} */
11435        structElement = "struct",
11436        /** interface Y {} */
11437        interfaceElement = "interface",
11438        /** type T = ... */
11439        typeElement = "type",
11440        /** enum E */
11441        enumElement = "enum",
11442        enumMemberElement = "enum member",
11443        /**
11444         * Inside module and script only
11445         * const v = ..
11446         */
11447        variableElement = "var",
11448        /** Inside function */
11449        localVariableElement = "local var",
11450        /**
11451         * Inside module and script only
11452         * function f() { }
11453         */
11454        functionElement = "function",
11455        /** Inside function */
11456        localFunctionElement = "local function",
11457        /** class X { [public|private]* foo() {} } */
11458        memberFunctionElement = "method",
11459        /** class X { [public|private]* [get|set] foo:number; } */
11460        memberGetAccessorElement = "getter",
11461        memberSetAccessorElement = "setter",
11462        /**
11463         * class X { [public|private]* foo:number; }
11464         * interface Y { foo:number; }
11465         */
11466        memberVariableElement = "property",
11467        /** class X { [public|private]* accessor foo: number; } */
11468        memberAccessorVariableElement = "accessor",
11469        /**
11470         * class X { constructor() { } }
11471         * class X { static { } }
11472         */
11473        constructorImplementationElement = "constructor",
11474        /** interface Y { ():number; } */
11475        callSignatureElement = "call",
11476        /** interface Y { []:number; } */
11477        indexSignatureElement = "index",
11478        /** interface Y { new():Y; } */
11479        constructSignatureElement = "construct",
11480        /** function foo(*Y*: string) */
11481        parameterElement = "parameter",
11482        typeParameterElement = "type parameter",
11483        primitiveType = "primitive type",
11484        label = "label",
11485        alias = "alias",
11486        constElement = "const",
11487        letElement = "let",
11488        directory = "directory",
11489        externalModuleName = "external module name",
11490        /**
11491         * <JsxTagName attribute1 attribute2={0} />
11492         * @deprecated
11493         */
11494        jsxAttribute = "JSX attribute",
11495        /** String literal */
11496        string = "string",
11497        /** Jsdoc @link: in `{@link C link text}`, the before and after text "{@link " and "}" */
11498        link = "link",
11499        /** Jsdoc @link: in `{@link C link text}`, the entity name "C" */
11500        linkName = "link name",
11501        /** Jsdoc @link: in `{@link C link text}`, the link text "link text" */
11502        linkText = "link text"
11503    }
11504    enum ScriptElementKindModifier {
11505        none = "",
11506        publicMemberModifier = "public",
11507        privateMemberModifier = "private",
11508        protectedMemberModifier = "protected",
11509        exportedModifier = "export",
11510        ambientModifier = "declare",
11511        staticModifier = "static",
11512        abstractModifier = "abstract",
11513        optionalModifier = "optional",
11514        deprecatedModifier = "deprecated",
11515        dtsModifier = ".d.ts",
11516        tsModifier = ".ts",
11517        tsxModifier = ".tsx",
11518        jsModifier = ".js",
11519        jsxModifier = ".jsx",
11520        jsonModifier = ".json",
11521        dmtsModifier = ".d.mts",
11522        mtsModifier = ".mts",
11523        mjsModifier = ".mjs",
11524        dctsModifier = ".d.cts",
11525        ctsModifier = ".cts",
11526        cjsModifier = ".cjs",
11527        etsModifier = ".ets",
11528        detsModifier = ".d.ets"
11529    }
11530    enum ClassificationTypeNames {
11531        comment = "comment",
11532        identifier = "identifier",
11533        keyword = "keyword",
11534        numericLiteral = "number",
11535        bigintLiteral = "bigint",
11536        operator = "operator",
11537        stringLiteral = "string",
11538        whiteSpace = "whitespace",
11539        text = "text",
11540        punctuation = "punctuation",
11541        className = "class name",
11542        enumName = "enum name",
11543        interfaceName = "interface name",
11544        moduleName = "module name",
11545        typeParameterName = "type parameter name",
11546        typeAliasName = "type alias name",
11547        parameterName = "parameter name",
11548        docCommentTagName = "doc comment tag name",
11549        jsxOpenTagName = "jsx open tag name",
11550        jsxCloseTagName = "jsx close tag name",
11551        jsxSelfClosingTagName = "jsx self closing tag name",
11552        jsxAttribute = "jsx attribute",
11553        jsxText = "jsx text",
11554        jsxAttributeStringLiteralValue = "jsx attribute string literal value"
11555    }
11556    enum ClassificationType {
11557        comment = 1,
11558        identifier = 2,
11559        keyword = 3,
11560        numericLiteral = 4,
11561        operator = 5,
11562        stringLiteral = 6,
11563        regularExpressionLiteral = 7,
11564        whiteSpace = 8,
11565        text = 9,
11566        punctuation = 10,
11567        className = 11,
11568        enumName = 12,
11569        interfaceName = 13,
11570        moduleName = 14,
11571        typeParameterName = 15,
11572        typeAliasName = 16,
11573        parameterName = 17,
11574        docCommentTagName = 18,
11575        jsxOpenTagName = 19,
11576        jsxCloseTagName = 20,
11577        jsxSelfClosingTagName = 21,
11578        jsxAttribute = 22,
11579        jsxText = 23,
11580        jsxAttributeStringLiteralValue = 24,
11581        bigintLiteral = 25
11582    }
11583    interface InlayHintsContext {
11584        file: SourceFile;
11585        program: Program;
11586        cancellationToken: CancellationToken;
11587        host: LanguageServiceHost;
11588        span: TextSpan;
11589        preferences: UserPreferences;
11590    }
11591    /** The classifier is used for syntactic highlighting in editors via the TSServer */
11592    function createClassifier(): Classifier;
11593    interface DocumentHighlights {
11594        fileName: string;
11595        highlightSpans: HighlightSpan[];
11596    }
11597    function createDocumentRegistry(useCaseSensitiveFileNames?: boolean, currentDirectory?: string): DocumentRegistry;
11598    /**
11599     * The document registry represents a store of SourceFile objects that can be shared between
11600     * multiple LanguageService instances. A LanguageService instance holds on the SourceFile (AST)
11601     * of files in the context.
11602     * SourceFile objects account for most of the memory usage by the language service. Sharing
11603     * the same DocumentRegistry instance between different instances of LanguageService allow
11604     * for more efficient memory utilization since all projects will share at least the library
11605     * file (lib.d.ts).
11606     *
11607     * A more advanced use of the document registry is to serialize sourceFile objects to disk
11608     * and re-hydrate them when needed.
11609     *
11610     * To create a default DocumentRegistry, use createDocumentRegistry to create one, and pass it
11611     * to all subsequent createLanguageService calls.
11612     */
11613    interface DocumentRegistry {
11614        /**
11615         * Request a stored SourceFile with a given fileName and compilationSettings.
11616         * The first call to acquire will call createLanguageServiceSourceFile to generate
11617         * the SourceFile if was not found in the registry.
11618         *
11619         * @param fileName The name of the file requested
11620         * @param compilationSettingsOrHost Some compilation settings like target affects the
11621         * shape of a the resulting SourceFile. This allows the DocumentRegistry to store
11622         * multiple copies of the same file for different compilation settings. A minimal
11623         * resolution cache is needed to fully define a source file's shape when
11624         * the compilation settings include `module: node16`+, so providing a cache host
11625         * object should be preferred. A common host is a language service `ConfiguredProject`.
11626         * @param scriptSnapshot Text of the file. Only used if the file was not found
11627         * in the registry and a new one was created.
11628         * @param version Current version of the file. Only used if the file was not found
11629         * in the registry and a new one was created.
11630         */
11631        acquireDocument(fileName: string, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
11632        acquireDocumentWithKey(fileName: string, path: Path, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, key: DocumentRegistryBucketKey, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
11633        /**
11634         * Request an updated version of an already existing SourceFile with a given fileName
11635         * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile
11636         * to get an updated SourceFile.
11637         *
11638         * @param fileName The name of the file requested
11639         * @param compilationSettingsOrHost Some compilation settings like target affects the
11640         * shape of a the resulting SourceFile. This allows the DocumentRegistry to store
11641         * multiple copies of the same file for different compilation settings. A minimal
11642         * resolution cache is needed to fully define a source file's shape when
11643         * the compilation settings include `module: node16`+, so providing a cache host
11644         * object should be preferred. A common host is a language service `ConfiguredProject`.
11645         * @param scriptSnapshot Text of the file.
11646         * @param version Current version of the file.
11647         */
11648        updateDocument(fileName: string, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
11649        updateDocumentWithKey(fileName: string, path: Path, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, key: DocumentRegistryBucketKey, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
11650        getKeyForCompilationSettings(settings: CompilerOptions): DocumentRegistryBucketKey;
11651        /**
11652         * Informs the DocumentRegistry that a file is not needed any longer.
11653         *
11654         * Note: It is not allowed to call release on a SourceFile that was not acquired from
11655         * this registry originally.
11656         *
11657         * @param fileName The name of the file to be released
11658         * @param compilationSettings The compilation settings used to acquire the file
11659         * @param scriptKind The script kind of the file to be released
11660         *
11661         * @deprecated pass scriptKind and impliedNodeFormat for correctness
11662         */
11663        releaseDocument(fileName: string, compilationSettings: CompilerOptions, scriptKind?: ScriptKind): void;
11664        /**
11665         * Informs the DocumentRegistry that a file is not needed any longer.
11666         *
11667         * Note: It is not allowed to call release on a SourceFile that was not acquired from
11668         * this registry originally.
11669         *
11670         * @param fileName The name of the file to be released
11671         * @param compilationSettings The compilation settings used to acquire the file
11672         * @param scriptKind The script kind of the file to be released
11673         * @param impliedNodeFormat The implied source file format of the file to be released
11674         */
11675        releaseDocument(fileName: string, compilationSettings: CompilerOptions, scriptKind: ScriptKind, impliedNodeFormat: SourceFile["impliedNodeFormat"]): void;
11676        /**
11677         * @deprecated pass scriptKind for and impliedNodeFormat correctness */
11678        releaseDocumentWithKey(path: Path, key: DocumentRegistryBucketKey, scriptKind?: ScriptKind): void;
11679        releaseDocumentWithKey(path: Path, key: DocumentRegistryBucketKey, scriptKind: ScriptKind, impliedNodeFormat: SourceFile["impliedNodeFormat"]): void;
11680        reportStats(): string;
11681    }
11682    type DocumentRegistryBucketKey = string & {
11683        __bucketKey: any;
11684    };
11685    function preProcessFile(sourceText: string, readImportFiles?: boolean, detectJavaScriptImports?: boolean): PreProcessedFileInfo;
11686    function transpileModule(input: string, transpileOptions: TranspileOptions): TranspileOutput;
11687    function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[], moduleName?: string): string;
11688    interface TranspileOptions {
11689        compilerOptions?: CompilerOptions;
11690        fileName?: string;
11691        reportDiagnostics?: boolean;
11692        moduleName?: string;
11693        renamedDependencies?: MapLike<string>;
11694        transformers?: CustomTransformers;
11695    }
11696    interface TranspileOutput {
11697        outputText: string;
11698        diagnostics?: Diagnostic[];
11699        sourceMapText?: string;
11700    }
11701    function toEditorSettings(options: EditorOptions | EditorSettings): EditorSettings;
11702    function displayPartsToString(displayParts: SymbolDisplayPart[] | undefined): string;
11703    function getDefaultCompilerOptions(): CompilerOptions;
11704    function getSupportedCodeFixes(): string[];
11705    function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTargetOrOptions: ScriptTarget | CreateSourceFileOptions, version: string, setNodeParents: boolean, scriptKind?: ScriptKind, option?: CompilerOptions): SourceFile;
11706    function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange | undefined, aggressiveChecks?: boolean, option?: CompilerOptions): SourceFile;
11707    function createLanguageService(host: LanguageServiceHost, documentRegistry?: DocumentRegistry, syntaxOnlyOrLanguageServiceMode?: boolean | LanguageServiceMode): LanguageService;
11708    /**
11709     * Get the path of the default library files (lib.d.ts) as distributed with the typescript
11710     * node package.
11711     * The functionality is not supported if the ts module is consumed outside of a node module.
11712     */
11713    function getDefaultLibFilePath(options: CompilerOptions): string;
11714    /** The version of the language service API */
11715    const servicesVersion = "0.8";
11716    /**
11717     * Transform one or more nodes using the supplied transformers.
11718     * @param source A single `Node` or an array of `Node` objects.
11719     * @param transformers An array of `TransformerFactory` callbacks used to process the transformation.
11720     * @param compilerOptions Optional compiler options.
11721     */
11722    function transform<T extends Node>(source: T | T[], transformers: TransformerFactory<T>[], compilerOptions?: CompilerOptions): TransformationResult<T>;
11723    /** @deprecated Use `factory.createNodeArray` or the factory supplied by your transformation context instead. */
11724    const createNodeArray: typeof factory.createNodeArray;
11725    /** @deprecated Use `factory.createNumericLiteral` or the factory supplied by your transformation context instead. */
11726    const createNumericLiteral: typeof factory.createNumericLiteral;
11727    /** @deprecated Use `factory.createBigIntLiteral` or the factory supplied by your transformation context instead. */
11728    const createBigIntLiteral: typeof factory.createBigIntLiteral;
11729    /** @deprecated Use `factory.createStringLiteral` or the factory supplied by your transformation context instead. */
11730    const createStringLiteral: typeof factory.createStringLiteral;
11731    /** @deprecated Use `factory.createStringLiteralFromNode` or the factory supplied by your transformation context instead. */
11732    const createStringLiteralFromNode: typeof factory.createStringLiteralFromNode;
11733    /** @deprecated Use `factory.createRegularExpressionLiteral` or the factory supplied by your transformation context instead. */
11734    const createRegularExpressionLiteral: typeof factory.createRegularExpressionLiteral;
11735    /** @deprecated Use `factory.createLoopVariable` or the factory supplied by your transformation context instead. */
11736    const createLoopVariable: typeof factory.createLoopVariable;
11737    /** @deprecated Use `factory.createUniqueName` or the factory supplied by your transformation context instead. */
11738    const createUniqueName: typeof factory.createUniqueName;
11739    /** @deprecated Use `factory.createPrivateIdentifier` or the factory supplied by your transformation context instead. */
11740    const createPrivateIdentifier: typeof factory.createPrivateIdentifier;
11741    /** @deprecated Use `factory.createSuper` or the factory supplied by your transformation context instead. */
11742    const createSuper: typeof factory.createSuper;
11743    /** @deprecated Use `factory.createThis` or the factory supplied by your transformation context instead. */
11744    const createThis: typeof factory.createThis;
11745    /** @deprecated Use `factory.createNull` or the factory supplied by your transformation context instead. */
11746    const createNull: typeof factory.createNull;
11747    /** @deprecated Use `factory.createTrue` or the factory supplied by your transformation context instead. */
11748    const createTrue: typeof factory.createTrue;
11749    /** @deprecated Use `factory.createFalse` or the factory supplied by your transformation context instead. */
11750    const createFalse: typeof factory.createFalse;
11751    /** @deprecated Use `factory.createModifier` or the factory supplied by your transformation context instead. */
11752    const createModifier: typeof factory.createModifier;
11753    /** @deprecated Use `factory.createModifiersFromModifierFlags` or the factory supplied by your transformation context instead. */
11754    const createModifiersFromModifierFlags: typeof factory.createModifiersFromModifierFlags;
11755    /** @deprecated Use `factory.createQualifiedName` or the factory supplied by your transformation context instead. */
11756    const createQualifiedName: typeof factory.createQualifiedName;
11757    /** @deprecated Use `factory.updateQualifiedName` or the factory supplied by your transformation context instead. */
11758    const updateQualifiedName: typeof factory.updateQualifiedName;
11759    /** @deprecated Use `factory.createComputedPropertyName` or the factory supplied by your transformation context instead. */
11760    const createComputedPropertyName: typeof factory.createComputedPropertyName;
11761    /** @deprecated Use `factory.updateComputedPropertyName` or the factory supplied by your transformation context instead. */
11762    const updateComputedPropertyName: typeof factory.updateComputedPropertyName;
11763    /** @deprecated Use `factory.createTypeParameterDeclaration` or the factory supplied by your transformation context instead. */
11764    const createTypeParameterDeclaration: typeof factory.createTypeParameterDeclaration;
11765    /** @deprecated Use `factory.updateTypeParameterDeclaration` or the factory supplied by your transformation context instead. */
11766    const updateTypeParameterDeclaration: typeof factory.updateTypeParameterDeclaration;
11767    /** @deprecated Use `factory.createParameterDeclaration` or the factory supplied by your transformation context instead. */
11768    const createParameter: typeof factory.createParameterDeclaration;
11769    /** @deprecated Use `factory.updateParameterDeclaration` or the factory supplied by your transformation context instead. */
11770    const updateParameter: typeof factory.updateParameterDeclaration;
11771    /** @deprecated Use `factory.createDecorator` or the factory supplied by your transformation context instead. */
11772    const createDecorator: typeof factory.createDecorator;
11773    /** @deprecated Use `factory.updateDecorator` or the factory supplied by your transformation context instead. */
11774    const updateDecorator: typeof factory.updateDecorator;
11775    /** @deprecated Use `factory.createPropertyDeclaration` or the factory supplied by your transformation context instead. */
11776    const createProperty: typeof factory.createPropertyDeclaration;
11777    /** @deprecated Use `factory.updatePropertyDeclaration` or the factory supplied by your transformation context instead. */
11778    const updateProperty: typeof factory.updatePropertyDeclaration;
11779    /** @deprecated Use `factory.createMethodDeclaration` or the factory supplied by your transformation context instead. */
11780    const createMethod: typeof factory.createMethodDeclaration;
11781    /** @deprecated Use `factory.updateMethodDeclaration` or the factory supplied by your transformation context instead. */
11782    const updateMethod: typeof factory.updateMethodDeclaration;
11783    /** @deprecated Use `factory.createConstructorDeclaration` or the factory supplied by your transformation context instead. */
11784    const createConstructor: typeof factory.createConstructorDeclaration;
11785    /** @deprecated Use `factory.updateConstructorDeclaration` or the factory supplied by your transformation context instead. */
11786    const updateConstructor: typeof factory.updateConstructorDeclaration;
11787    /** @deprecated Use `factory.createGetAccessorDeclaration` or the factory supplied by your transformation context instead. */
11788    const createGetAccessor: typeof factory.createGetAccessorDeclaration;
11789    /** @deprecated Use `factory.updateGetAccessorDeclaration` or the factory supplied by your transformation context instead. */
11790    const updateGetAccessor: typeof factory.updateGetAccessorDeclaration;
11791    /** @deprecated Use `factory.createSetAccessorDeclaration` or the factory supplied by your transformation context instead. */
11792    const createSetAccessor: typeof factory.createSetAccessorDeclaration;
11793    /** @deprecated Use `factory.updateSetAccessorDeclaration` or the factory supplied by your transformation context instead. */
11794    const updateSetAccessor: typeof factory.updateSetAccessorDeclaration;
11795    /** @deprecated Use `factory.createCallSignature` or the factory supplied by your transformation context instead. */
11796    const createCallSignature: typeof factory.createCallSignature;
11797    /** @deprecated Use `factory.updateCallSignature` or the factory supplied by your transformation context instead. */
11798    const updateCallSignature: typeof factory.updateCallSignature;
11799    /** @deprecated Use `factory.createConstructSignature` or the factory supplied by your transformation context instead. */
11800    const createConstructSignature: typeof factory.createConstructSignature;
11801    /** @deprecated Use `factory.updateConstructSignature` or the factory supplied by your transformation context instead. */
11802    const updateConstructSignature: typeof factory.updateConstructSignature;
11803    /** @deprecated Use `factory.updateIndexSignature` or the factory supplied by your transformation context instead. */
11804    const updateIndexSignature: typeof factory.updateIndexSignature;
11805    /** @deprecated Use `factory.createKeywordTypeNode` or the factory supplied by your transformation context instead. */
11806    const createKeywordTypeNode: typeof factory.createKeywordTypeNode;
11807    /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */
11808    const createTypePredicateNodeWithModifier: typeof factory.createTypePredicateNode;
11809    /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */
11810    const updateTypePredicateNodeWithModifier: typeof factory.updateTypePredicateNode;
11811    /** @deprecated Use `factory.createTypeReferenceNode` or the factory supplied by your transformation context instead. */
11812    const createTypeReferenceNode: typeof factory.createTypeReferenceNode;
11813    /** @deprecated Use `factory.updateTypeReferenceNode` or the factory supplied by your transformation context instead. */
11814    const updateTypeReferenceNode: typeof factory.updateTypeReferenceNode;
11815    /** @deprecated Use `factory.createFunctionTypeNode` or the factory supplied by your transformation context instead. */
11816    const createFunctionTypeNode: typeof factory.createFunctionTypeNode;
11817    /** @deprecated Use `factory.updateFunctionTypeNode` or the factory supplied by your transformation context instead. */
11818    const updateFunctionTypeNode: typeof factory.updateFunctionTypeNode;
11819    /** @deprecated Use `factory.createConstructorTypeNode` or the factory supplied by your transformation context instead. */
11820    const createConstructorTypeNode: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => ConstructorTypeNode;
11821    /** @deprecated Use `factory.updateConstructorTypeNode` or the factory supplied by your transformation context instead. */
11822    const updateConstructorTypeNode: (node: ConstructorTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode) => ConstructorTypeNode;
11823    /** @deprecated Use `factory.createTypeQueryNode` or the factory supplied by your transformation context instead. */
11824    const createTypeQueryNode: typeof factory.createTypeQueryNode;
11825    /** @deprecated Use `factory.updateTypeQueryNode` or the factory supplied by your transformation context instead. */
11826    const updateTypeQueryNode: typeof factory.updateTypeQueryNode;
11827    /** @deprecated Use `factory.createTypeLiteralNode` or the factory supplied by your transformation context instead. */
11828    const createTypeLiteralNode: typeof factory.createTypeLiteralNode;
11829    /** @deprecated Use `factory.updateTypeLiteralNode` or the factory supplied by your transformation context instead. */
11830    const updateTypeLiteralNode: typeof factory.updateTypeLiteralNode;
11831    /** @deprecated Use `factory.createArrayTypeNode` or the factory supplied by your transformation context instead. */
11832    const createArrayTypeNode: typeof factory.createArrayTypeNode;
11833    /** @deprecated Use `factory.updateArrayTypeNode` or the factory supplied by your transformation context instead. */
11834    const updateArrayTypeNode: typeof factory.updateArrayTypeNode;
11835    /** @deprecated Use `factory.createTupleTypeNode` or the factory supplied by your transformation context instead. */
11836    const createTupleTypeNode: typeof factory.createTupleTypeNode;
11837    /** @deprecated Use `factory.updateTupleTypeNode` or the factory supplied by your transformation context instead. */
11838    const updateTupleTypeNode: typeof factory.updateTupleTypeNode;
11839    /** @deprecated Use `factory.createOptionalTypeNode` or the factory supplied by your transformation context instead. */
11840    const createOptionalTypeNode: typeof factory.createOptionalTypeNode;
11841    /** @deprecated Use `factory.updateOptionalTypeNode` or the factory supplied by your transformation context instead. */
11842    const updateOptionalTypeNode: typeof factory.updateOptionalTypeNode;
11843    /** @deprecated Use `factory.createRestTypeNode` or the factory supplied by your transformation context instead. */
11844    const createRestTypeNode: typeof factory.createRestTypeNode;
11845    /** @deprecated Use `factory.updateRestTypeNode` or the factory supplied by your transformation context instead. */
11846    const updateRestTypeNode: typeof factory.updateRestTypeNode;
11847    /** @deprecated Use `factory.createUnionTypeNode` or the factory supplied by your transformation context instead. */
11848    const createUnionTypeNode: typeof factory.createUnionTypeNode;
11849    /** @deprecated Use `factory.updateUnionTypeNode` or the factory supplied by your transformation context instead. */
11850    const updateUnionTypeNode: typeof factory.updateUnionTypeNode;
11851    /** @deprecated Use `factory.createIntersectionTypeNode` or the factory supplied by your transformation context instead. */
11852    const createIntersectionTypeNode: typeof factory.createIntersectionTypeNode;
11853    /** @deprecated Use `factory.updateIntersectionTypeNode` or the factory supplied by your transformation context instead. */
11854    const updateIntersectionTypeNode: typeof factory.updateIntersectionTypeNode;
11855    /** @deprecated Use `factory.createConditionalTypeNode` or the factory supplied by your transformation context instead. */
11856    const createConditionalTypeNode: typeof factory.createConditionalTypeNode;
11857    /** @deprecated Use `factory.updateConditionalTypeNode` or the factory supplied by your transformation context instead. */
11858    const updateConditionalTypeNode: typeof factory.updateConditionalTypeNode;
11859    /** @deprecated Use `factory.createInferTypeNode` or the factory supplied by your transformation context instead. */
11860    const createInferTypeNode: typeof factory.createInferTypeNode;
11861    /** @deprecated Use `factory.updateInferTypeNode` or the factory supplied by your transformation context instead. */
11862    const updateInferTypeNode: typeof factory.updateInferTypeNode;
11863    /** @deprecated Use `factory.createImportTypeNode` or the factory supplied by your transformation context instead. */
11864    const createImportTypeNode: typeof factory.createImportTypeNode;
11865    /** @deprecated Use `factory.updateImportTypeNode` or the factory supplied by your transformation context instead. */
11866    const updateImportTypeNode: typeof factory.updateImportTypeNode;
11867    /** @deprecated Use `factory.createParenthesizedType` or the factory supplied by your transformation context instead. */
11868    const createParenthesizedType: typeof factory.createParenthesizedType;
11869    /** @deprecated Use `factory.updateParenthesizedType` or the factory supplied by your transformation context instead. */
11870    const updateParenthesizedType: typeof factory.updateParenthesizedType;
11871    /** @deprecated Use `factory.createThisTypeNode` or the factory supplied by your transformation context instead. */
11872    const createThisTypeNode: typeof factory.createThisTypeNode;
11873    /** @deprecated Use `factory.updateTypeOperatorNode` or the factory supplied by your transformation context instead. */
11874    const updateTypeOperatorNode: typeof factory.updateTypeOperatorNode;
11875    /** @deprecated Use `factory.createIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */
11876    const createIndexedAccessTypeNode: typeof factory.createIndexedAccessTypeNode;
11877    /** @deprecated Use `factory.updateIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */
11878    const updateIndexedAccessTypeNode: typeof factory.updateIndexedAccessTypeNode;
11879    /** @deprecated Use `factory.createMappedTypeNode` or the factory supplied by your transformation context instead. */
11880    const createMappedTypeNode: typeof factory.createMappedTypeNode;
11881    /** @deprecated Use `factory.updateMappedTypeNode` or the factory supplied by your transformation context instead. */
11882    const updateMappedTypeNode: typeof factory.updateMappedTypeNode;
11883    /** @deprecated Use `factory.createLiteralTypeNode` or the factory supplied by your transformation context instead. */
11884    const createLiteralTypeNode: typeof factory.createLiteralTypeNode;
11885    /** @deprecated Use `factory.updateLiteralTypeNode` or the factory supplied by your transformation context instead. */
11886    const updateLiteralTypeNode: typeof factory.updateLiteralTypeNode;
11887    /** @deprecated Use `factory.createObjectBindingPattern` or the factory supplied by your transformation context instead. */
11888    const createObjectBindingPattern: typeof factory.createObjectBindingPattern;
11889    /** @deprecated Use `factory.updateObjectBindingPattern` or the factory supplied by your transformation context instead. */
11890    const updateObjectBindingPattern: typeof factory.updateObjectBindingPattern;
11891    /** @deprecated Use `factory.createArrayBindingPattern` or the factory supplied by your transformation context instead. */
11892    const createArrayBindingPattern: typeof factory.createArrayBindingPattern;
11893    /** @deprecated Use `factory.updateArrayBindingPattern` or the factory supplied by your transformation context instead. */
11894    const updateArrayBindingPattern: typeof factory.updateArrayBindingPattern;
11895    /** @deprecated Use `factory.createBindingElement` or the factory supplied by your transformation context instead. */
11896    const createBindingElement: typeof factory.createBindingElement;
11897    /** @deprecated Use `factory.updateBindingElement` or the factory supplied by your transformation context instead. */
11898    const updateBindingElement: typeof factory.updateBindingElement;
11899    /** @deprecated Use `factory.createArrayLiteralExpression` or the factory supplied by your transformation context instead. */
11900    const createArrayLiteral: typeof factory.createArrayLiteralExpression;
11901    /** @deprecated Use `factory.updateArrayLiteralExpression` or the factory supplied by your transformation context instead. */
11902    const updateArrayLiteral: typeof factory.updateArrayLiteralExpression;
11903    /** @deprecated Use `factory.createObjectLiteralExpression` or the factory supplied by your transformation context instead. */
11904    const createObjectLiteral: typeof factory.createObjectLiteralExpression;
11905    /** @deprecated Use `factory.updateObjectLiteralExpression` or the factory supplied by your transformation context instead. */
11906    const updateObjectLiteral: typeof factory.updateObjectLiteralExpression;
11907    /** @deprecated Use `factory.createPropertyAccessExpression` or the factory supplied by your transformation context instead. */
11908    const createPropertyAccess: typeof factory.createPropertyAccessExpression;
11909    /** @deprecated Use `factory.updatePropertyAccessExpression` or the factory supplied by your transformation context instead. */
11910    const updatePropertyAccess: typeof factory.updatePropertyAccessExpression;
11911    /** @deprecated Use `factory.createPropertyAccessChain` or the factory supplied by your transformation context instead. */
11912    const createPropertyAccessChain: typeof factory.createPropertyAccessChain;
11913    /** @deprecated Use `factory.updatePropertyAccessChain` or the factory supplied by your transformation context instead. */
11914    const updatePropertyAccessChain: typeof factory.updatePropertyAccessChain;
11915    /** @deprecated Use `factory.createElementAccessExpression` or the factory supplied by your transformation context instead. */
11916    const createElementAccess: typeof factory.createElementAccessExpression;
11917    /** @deprecated Use `factory.updateElementAccessExpression` or the factory supplied by your transformation context instead. */
11918    const updateElementAccess: typeof factory.updateElementAccessExpression;
11919    /** @deprecated Use `factory.createElementAccessChain` or the factory supplied by your transformation context instead. */
11920    const createElementAccessChain: typeof factory.createElementAccessChain;
11921    /** @deprecated Use `factory.updateElementAccessChain` or the factory supplied by your transformation context instead. */
11922    const updateElementAccessChain: typeof factory.updateElementAccessChain;
11923    /** @deprecated Use `factory.createCallExpression` or the factory supplied by your transformation context instead. */
11924    const createCall: typeof factory.createCallExpression;
11925    /** @deprecated Use `factory.updateCallExpression` or the factory supplied by your transformation context instead. */
11926    const updateCall: typeof factory.updateCallExpression;
11927    /** @deprecated Use `factory.createCallChain` or the factory supplied by your transformation context instead. */
11928    const createCallChain: typeof factory.createCallChain;
11929    /** @deprecated Use `factory.updateCallChain` or the factory supplied by your transformation context instead. */
11930    const updateCallChain: typeof factory.updateCallChain;
11931    /** @deprecated Use `factory.createNewExpression` or the factory supplied by your transformation context instead. */
11932    const createNew: typeof factory.createNewExpression;
11933    /** @deprecated Use `factory.updateNewExpression` or the factory supplied by your transformation context instead. */
11934    const updateNew: typeof factory.updateNewExpression;
11935    /** @deprecated Use `factory.createTypeAssertion` or the factory supplied by your transformation context instead. */
11936    const createTypeAssertion: typeof factory.createTypeAssertion;
11937    /** @deprecated Use `factory.updateTypeAssertion` or the factory supplied by your transformation context instead. */
11938    const updateTypeAssertion: typeof factory.updateTypeAssertion;
11939    /** @deprecated Use `factory.createParenthesizedExpression` or the factory supplied by your transformation context instead. */
11940    const createParen: typeof factory.createParenthesizedExpression;
11941    /** @deprecated Use `factory.updateParenthesizedExpression` or the factory supplied by your transformation context instead. */
11942    const updateParen: typeof factory.updateParenthesizedExpression;
11943    /** @deprecated Use `factory.createFunctionExpression` or the factory supplied by your transformation context instead. */
11944    const createFunctionExpression: typeof factory.createFunctionExpression;
11945    /** @deprecated Use `factory.updateFunctionExpression` or the factory supplied by your transformation context instead. */
11946    const updateFunctionExpression: typeof factory.updateFunctionExpression;
11947    /** @deprecated Use `factory.createDeleteExpression` or the factory supplied by your transformation context instead. */
11948    const createDelete: typeof factory.createDeleteExpression;
11949    /** @deprecated Use `factory.updateDeleteExpression` or the factory supplied by your transformation context instead. */
11950    const updateDelete: typeof factory.updateDeleteExpression;
11951    /** @deprecated Use `factory.createTypeOfExpression` or the factory supplied by your transformation context instead. */
11952    const createTypeOf: typeof factory.createTypeOfExpression;
11953    /** @deprecated Use `factory.updateTypeOfExpression` or the factory supplied by your transformation context instead. */
11954    const updateTypeOf: typeof factory.updateTypeOfExpression;
11955    /** @deprecated Use `factory.createVoidExpression` or the factory supplied by your transformation context instead. */
11956    const createVoid: typeof factory.createVoidExpression;
11957    /** @deprecated Use `factory.updateVoidExpression` or the factory supplied by your transformation context instead. */
11958    const updateVoid: typeof factory.updateVoidExpression;
11959    /** @deprecated Use `factory.createAwaitExpression` or the factory supplied by your transformation context instead. */
11960    const createAwait: typeof factory.createAwaitExpression;
11961    /** @deprecated Use `factory.updateAwaitExpression` or the factory supplied by your transformation context instead. */
11962    const updateAwait: typeof factory.updateAwaitExpression;
11963    /** @deprecated Use `factory.createPrefixExpression` or the factory supplied by your transformation context instead. */
11964    const createPrefix: typeof factory.createPrefixUnaryExpression;
11965    /** @deprecated Use `factory.updatePrefixExpression` or the factory supplied by your transformation context instead. */
11966    const updatePrefix: typeof factory.updatePrefixUnaryExpression;
11967    /** @deprecated Use `factory.createPostfixUnaryExpression` or the factory supplied by your transformation context instead. */
11968    const createPostfix: typeof factory.createPostfixUnaryExpression;
11969    /** @deprecated Use `factory.updatePostfixUnaryExpression` or the factory supplied by your transformation context instead. */
11970    const updatePostfix: typeof factory.updatePostfixUnaryExpression;
11971    /** @deprecated Use `factory.createBinaryExpression` or the factory supplied by your transformation context instead. */
11972    const createBinary: typeof factory.createBinaryExpression;
11973    /** @deprecated Use `factory.updateConditionalExpression` or the factory supplied by your transformation context instead. */
11974    const updateConditional: typeof factory.updateConditionalExpression;
11975    /** @deprecated Use `factory.createTemplateExpression` or the factory supplied by your transformation context instead. */
11976    const createTemplateExpression: typeof factory.createTemplateExpression;
11977    /** @deprecated Use `factory.updateTemplateExpression` or the factory supplied by your transformation context instead. */
11978    const updateTemplateExpression: typeof factory.updateTemplateExpression;
11979    /** @deprecated Use `factory.createTemplateHead` or the factory supplied by your transformation context instead. */
11980    const createTemplateHead: typeof factory.createTemplateHead;
11981    /** @deprecated Use `factory.createTemplateMiddle` or the factory supplied by your transformation context instead. */
11982    const createTemplateMiddle: typeof factory.createTemplateMiddle;
11983    /** @deprecated Use `factory.createTemplateTail` or the factory supplied by your transformation context instead. */
11984    const createTemplateTail: typeof factory.createTemplateTail;
11985    /** @deprecated Use `factory.createNoSubstitutionTemplateLiteral` or the factory supplied by your transformation context instead. */
11986    const createNoSubstitutionTemplateLiteral: typeof factory.createNoSubstitutionTemplateLiteral;
11987    /** @deprecated Use `factory.updateYieldExpression` or the factory supplied by your transformation context instead. */
11988    const updateYield: typeof factory.updateYieldExpression;
11989    /** @deprecated Use `factory.createSpreadExpression` or the factory supplied by your transformation context instead. */
11990    const createSpread: typeof factory.createSpreadElement;
11991    /** @deprecated Use `factory.updateSpreadExpression` or the factory supplied by your transformation context instead. */
11992    const updateSpread: typeof factory.updateSpreadElement;
11993    /** @deprecated Use `factory.createOmittedExpression` or the factory supplied by your transformation context instead. */
11994    const createOmittedExpression: typeof factory.createOmittedExpression;
11995    /** @deprecated Use `factory.createAsExpression` or the factory supplied by your transformation context instead. */
11996    const createAsExpression: typeof factory.createAsExpression;
11997    /** @deprecated Use `factory.updateAsExpression` or the factory supplied by your transformation context instead. */
11998    const updateAsExpression: typeof factory.updateAsExpression;
11999    /** @deprecated Use `factory.createNonNullExpression` or the factory supplied by your transformation context instead. */
12000    const createNonNullExpression: typeof factory.createNonNullExpression;
12001    /** @deprecated Use `factory.updateNonNullExpression` or the factory supplied by your transformation context instead. */
12002    const updateNonNullExpression: typeof factory.updateNonNullExpression;
12003    /** @deprecated Use `factory.createNonNullChain` or the factory supplied by your transformation context instead. */
12004    const createNonNullChain: typeof factory.createNonNullChain;
12005    /** @deprecated Use `factory.updateNonNullChain` or the factory supplied by your transformation context instead. */
12006    const updateNonNullChain: typeof factory.updateNonNullChain;
12007    /** @deprecated Use `factory.createMetaProperty` or the factory supplied by your transformation context instead. */
12008    const createMetaProperty: typeof factory.createMetaProperty;
12009    /** @deprecated Use `factory.updateMetaProperty` or the factory supplied by your transformation context instead. */
12010    const updateMetaProperty: typeof factory.updateMetaProperty;
12011    /** @deprecated Use `factory.createTemplateSpan` or the factory supplied by your transformation context instead. */
12012    const createTemplateSpan: typeof factory.createTemplateSpan;
12013    /** @deprecated Use `factory.updateTemplateSpan` or the factory supplied by your transformation context instead. */
12014    const updateTemplateSpan: typeof factory.updateTemplateSpan;
12015    /** @deprecated Use `factory.createSemicolonClassElement` or the factory supplied by your transformation context instead. */
12016    const createSemicolonClassElement: typeof factory.createSemicolonClassElement;
12017    /** @deprecated Use `factory.createBlock` or the factory supplied by your transformation context instead. */
12018    const createBlock: typeof factory.createBlock;
12019    /** @deprecated Use `factory.updateBlock` or the factory supplied by your transformation context instead. */
12020    const updateBlock: typeof factory.updateBlock;
12021    /** @deprecated Use `factory.createVariableStatement` or the factory supplied by your transformation context instead. */
12022    const createVariableStatement: typeof factory.createVariableStatement;
12023    /** @deprecated Use `factory.updateVariableStatement` or the factory supplied by your transformation context instead. */
12024    const updateVariableStatement: typeof factory.updateVariableStatement;
12025    /** @deprecated Use `factory.createEmptyStatement` or the factory supplied by your transformation context instead. */
12026    const createEmptyStatement: typeof factory.createEmptyStatement;
12027    /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */
12028    const createExpressionStatement: typeof factory.createExpressionStatement;
12029    /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */
12030    const updateExpressionStatement: typeof factory.updateExpressionStatement;
12031    /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */
12032    const createStatement: typeof factory.createExpressionStatement;
12033    /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */
12034    const updateStatement: typeof factory.updateExpressionStatement;
12035    /** @deprecated Use `factory.createIfStatement` or the factory supplied by your transformation context instead. */
12036    const createIf: typeof factory.createIfStatement;
12037    /** @deprecated Use `factory.updateIfStatement` or the factory supplied by your transformation context instead. */
12038    const updateIf: typeof factory.updateIfStatement;
12039    /** @deprecated Use `factory.createDoStatement` or the factory supplied by your transformation context instead. */
12040    const createDo: typeof factory.createDoStatement;
12041    /** @deprecated Use `factory.updateDoStatement` or the factory supplied by your transformation context instead. */
12042    const updateDo: typeof factory.updateDoStatement;
12043    /** @deprecated Use `factory.createWhileStatement` or the factory supplied by your transformation context instead. */
12044    const createWhile: typeof factory.createWhileStatement;
12045    /** @deprecated Use `factory.updateWhileStatement` or the factory supplied by your transformation context instead. */
12046    const updateWhile: typeof factory.updateWhileStatement;
12047    /** @deprecated Use `factory.createForStatement` or the factory supplied by your transformation context instead. */
12048    const createFor: typeof factory.createForStatement;
12049    /** @deprecated Use `factory.updateForStatement` or the factory supplied by your transformation context instead. */
12050    const updateFor: typeof factory.updateForStatement;
12051    /** @deprecated Use `factory.createForInStatement` or the factory supplied by your transformation context instead. */
12052    const createForIn: typeof factory.createForInStatement;
12053    /** @deprecated Use `factory.updateForInStatement` or the factory supplied by your transformation context instead. */
12054    const updateForIn: typeof factory.updateForInStatement;
12055    /** @deprecated Use `factory.createForOfStatement` or the factory supplied by your transformation context instead. */
12056    const createForOf: typeof factory.createForOfStatement;
12057    /** @deprecated Use `factory.updateForOfStatement` or the factory supplied by your transformation context instead. */
12058    const updateForOf: typeof factory.updateForOfStatement;
12059    /** @deprecated Use `factory.createContinueStatement` or the factory supplied by your transformation context instead. */
12060    const createContinue: typeof factory.createContinueStatement;
12061    /** @deprecated Use `factory.updateContinueStatement` or the factory supplied by your transformation context instead. */
12062    const updateContinue: typeof factory.updateContinueStatement;
12063    /** @deprecated Use `factory.createBreakStatement` or the factory supplied by your transformation context instead. */
12064    const createBreak: typeof factory.createBreakStatement;
12065    /** @deprecated Use `factory.updateBreakStatement` or the factory supplied by your transformation context instead. */
12066    const updateBreak: typeof factory.updateBreakStatement;
12067    /** @deprecated Use `factory.createReturnStatement` or the factory supplied by your transformation context instead. */
12068    const createReturn: typeof factory.createReturnStatement;
12069    /** @deprecated Use `factory.updateReturnStatement` or the factory supplied by your transformation context instead. */
12070    const updateReturn: typeof factory.updateReturnStatement;
12071    /** @deprecated Use `factory.createWithStatement` or the factory supplied by your transformation context instead. */
12072    const createWith: typeof factory.createWithStatement;
12073    /** @deprecated Use `factory.updateWithStatement` or the factory supplied by your transformation context instead. */
12074    const updateWith: typeof factory.updateWithStatement;
12075    /** @deprecated Use `factory.createSwitchStatement` or the factory supplied by your transformation context instead. */
12076    const createSwitch: typeof factory.createSwitchStatement;
12077    /** @deprecated Use `factory.updateSwitchStatement` or the factory supplied by your transformation context instead. */
12078    const updateSwitch: typeof factory.updateSwitchStatement;
12079    /** @deprecated Use `factory.createLabelStatement` or the factory supplied by your transformation context instead. */
12080    const createLabel: typeof factory.createLabeledStatement;
12081    /** @deprecated Use `factory.updateLabelStatement` or the factory supplied by your transformation context instead. */
12082    const updateLabel: typeof factory.updateLabeledStatement;
12083    /** @deprecated Use `factory.createThrowStatement` or the factory supplied by your transformation context instead. */
12084    const createThrow: typeof factory.createThrowStatement;
12085    /** @deprecated Use `factory.updateThrowStatement` or the factory supplied by your transformation context instead. */
12086    const updateThrow: typeof factory.updateThrowStatement;
12087    /** @deprecated Use `factory.createTryStatement` or the factory supplied by your transformation context instead. */
12088    const createTry: typeof factory.createTryStatement;
12089    /** @deprecated Use `factory.updateTryStatement` or the factory supplied by your transformation context instead. */
12090    const updateTry: typeof factory.updateTryStatement;
12091    /** @deprecated Use `factory.createDebuggerStatement` or the factory supplied by your transformation context instead. */
12092    const createDebuggerStatement: typeof factory.createDebuggerStatement;
12093    /** @deprecated Use `factory.createVariableDeclarationList` or the factory supplied by your transformation context instead. */
12094    const createVariableDeclarationList: typeof factory.createVariableDeclarationList;
12095    /** @deprecated Use `factory.updateVariableDeclarationList` or the factory supplied by your transformation context instead. */
12096    const updateVariableDeclarationList: typeof factory.updateVariableDeclarationList;
12097    /** @deprecated Use `factory.createFunctionDeclaration` or the factory supplied by your transformation context instead. */
12098    const createFunctionDeclaration: typeof factory.createFunctionDeclaration;
12099    /** @deprecated Use `factory.updateFunctionDeclaration` or the factory supplied by your transformation context instead. */
12100    const updateFunctionDeclaration: typeof factory.updateFunctionDeclaration;
12101    /** @deprecated Use `factory.createClassDeclaration` or the factory supplied by your transformation context instead. */
12102    const createClassDeclaration: typeof factory.createClassDeclaration;
12103    /** @deprecated Use `factory.updateClassDeclaration` or the factory supplied by your transformation context instead. */
12104    const updateClassDeclaration: typeof factory.updateClassDeclaration;
12105    /** @deprecated Use `factory.createInterfaceDeclaration` or the factory supplied by your transformation context instead. */
12106    const createInterfaceDeclaration: typeof factory.createInterfaceDeclaration;
12107    /** @deprecated Use `factory.updateInterfaceDeclaration` or the factory supplied by your transformation context instead. */
12108    const updateInterfaceDeclaration: typeof factory.updateInterfaceDeclaration;
12109    /** @deprecated Use `factory.createTypeAliasDeclaration` or the factory supplied by your transformation context instead. */
12110    const createTypeAliasDeclaration: typeof factory.createTypeAliasDeclaration;
12111    /** @deprecated Use `factory.updateTypeAliasDeclaration` or the factory supplied by your transformation context instead. */
12112    const updateTypeAliasDeclaration: typeof factory.updateTypeAliasDeclaration;
12113    /** @deprecated Use `factory.createEnumDeclaration` or the factory supplied by your transformation context instead. */
12114    const createEnumDeclaration: typeof factory.createEnumDeclaration;
12115    /** @deprecated Use `factory.updateEnumDeclaration` or the factory supplied by your transformation context instead. */
12116    const updateEnumDeclaration: typeof factory.updateEnumDeclaration;
12117    /** @deprecated Use `factory.createModuleDeclaration` or the factory supplied by your transformation context instead. */
12118    const createModuleDeclaration: typeof factory.createModuleDeclaration;
12119    /** @deprecated Use `factory.updateModuleDeclaration` or the factory supplied by your transformation context instead. */
12120    const updateModuleDeclaration: typeof factory.updateModuleDeclaration;
12121    /** @deprecated Use `factory.createModuleBlock` or the factory supplied by your transformation context instead. */
12122    const createModuleBlock: typeof factory.createModuleBlock;
12123    /** @deprecated Use `factory.updateModuleBlock` or the factory supplied by your transformation context instead. */
12124    const updateModuleBlock: typeof factory.updateModuleBlock;
12125    /** @deprecated Use `factory.createCaseBlock` or the factory supplied by your transformation context instead. */
12126    const createCaseBlock: typeof factory.createCaseBlock;
12127    /** @deprecated Use `factory.updateCaseBlock` or the factory supplied by your transformation context instead. */
12128    const updateCaseBlock: typeof factory.updateCaseBlock;
12129    /** @deprecated Use `factory.createNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */
12130    const createNamespaceExportDeclaration: typeof factory.createNamespaceExportDeclaration;
12131    /** @deprecated Use `factory.updateNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */
12132    const updateNamespaceExportDeclaration: typeof factory.updateNamespaceExportDeclaration;
12133    /** @deprecated Use `factory.createImportEqualsDeclaration` or the factory supplied by your transformation context instead. */
12134    const createImportEqualsDeclaration: typeof factory.createImportEqualsDeclaration;
12135    /** @deprecated Use `factory.updateImportEqualsDeclaration` or the factory supplied by your transformation context instead. */
12136    const updateImportEqualsDeclaration: typeof factory.updateImportEqualsDeclaration;
12137    /** @deprecated Use `factory.createImportDeclaration` or the factory supplied by your transformation context instead. */
12138    const createImportDeclaration: typeof factory.createImportDeclaration;
12139    /** @deprecated Use `factory.updateImportDeclaration` or the factory supplied by your transformation context instead. */
12140    const updateImportDeclaration: typeof factory.updateImportDeclaration;
12141    /** @deprecated Use `factory.createNamespaceImport` or the factory supplied by your transformation context instead. */
12142    const createNamespaceImport: typeof factory.createNamespaceImport;
12143    /** @deprecated Use `factory.updateNamespaceImport` or the factory supplied by your transformation context instead. */
12144    const updateNamespaceImport: typeof factory.updateNamespaceImport;
12145    /** @deprecated Use `factory.createNamedImports` or the factory supplied by your transformation context instead. */
12146    const createNamedImports: typeof factory.createNamedImports;
12147    /** @deprecated Use `factory.updateNamedImports` or the factory supplied by your transformation context instead. */
12148    const updateNamedImports: typeof factory.updateNamedImports;
12149    /** @deprecated Use `factory.createImportSpecifier` or the factory supplied by your transformation context instead. */
12150    const createImportSpecifier: typeof factory.createImportSpecifier;
12151    /** @deprecated Use `factory.updateImportSpecifier` or the factory supplied by your transformation context instead. */
12152    const updateImportSpecifier: typeof factory.updateImportSpecifier;
12153    /** @deprecated Use `factory.createExportAssignment` or the factory supplied by your transformation context instead. */
12154    const createExportAssignment: typeof factory.createExportAssignment;
12155    /** @deprecated Use `factory.updateExportAssignment` or the factory supplied by your transformation context instead. */
12156    const updateExportAssignment: typeof factory.updateExportAssignment;
12157    /** @deprecated Use `factory.createNamedExports` or the factory supplied by your transformation context instead. */
12158    const createNamedExports: typeof factory.createNamedExports;
12159    /** @deprecated Use `factory.updateNamedExports` or the factory supplied by your transformation context instead. */
12160    const updateNamedExports: typeof factory.updateNamedExports;
12161    /** @deprecated Use `factory.createExportSpecifier` or the factory supplied by your transformation context instead. */
12162    const createExportSpecifier: typeof factory.createExportSpecifier;
12163    /** @deprecated Use `factory.updateExportSpecifier` or the factory supplied by your transformation context instead. */
12164    const updateExportSpecifier: typeof factory.updateExportSpecifier;
12165    /** @deprecated Use `factory.createExternalModuleReference` or the factory supplied by your transformation context instead. */
12166    const createExternalModuleReference: typeof factory.createExternalModuleReference;
12167    /** @deprecated Use `factory.updateExternalModuleReference` or the factory supplied by your transformation context instead. */
12168    const updateExternalModuleReference: typeof factory.updateExternalModuleReference;
12169    /** @deprecated Use `factory.createJSDocTypeExpression` or the factory supplied by your transformation context instead. */
12170    const createJSDocTypeExpression: typeof factory.createJSDocTypeExpression;
12171    /** @deprecated Use `factory.createJSDocTypeTag` or the factory supplied by your transformation context instead. */
12172    const createJSDocTypeTag: typeof factory.createJSDocTypeTag;
12173    /** @deprecated Use `factory.createJSDocReturnTag` or the factory supplied by your transformation context instead. */
12174    const createJSDocReturnTag: typeof factory.createJSDocReturnTag;
12175    /** @deprecated Use `factory.createJSDocThisTag` or the factory supplied by your transformation context instead. */
12176    const createJSDocThisTag: typeof factory.createJSDocThisTag;
12177    /** @deprecated Use `factory.createJSDocComment` or the factory supplied by your transformation context instead. */
12178    const createJSDocComment: typeof factory.createJSDocComment;
12179    /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */
12180    const createJSDocParameterTag: typeof factory.createJSDocParameterTag;
12181    /** @deprecated Use `factory.createJSDocClassTag` or the factory supplied by your transformation context instead. */
12182    const createJSDocClassTag: typeof factory.createJSDocClassTag;
12183    /** @deprecated Use `factory.createJSDocAugmentsTag` or the factory supplied by your transformation context instead. */
12184    const createJSDocAugmentsTag: typeof factory.createJSDocAugmentsTag;
12185    /** @deprecated Use `factory.createJSDocEnumTag` or the factory supplied by your transformation context instead. */
12186    const createJSDocEnumTag: typeof factory.createJSDocEnumTag;
12187    /** @deprecated Use `factory.createJSDocTemplateTag` or the factory supplied by your transformation context instead. */
12188    const createJSDocTemplateTag: typeof factory.createJSDocTemplateTag;
12189    /** @deprecated Use `factory.createJSDocTypedefTag` or the factory supplied by your transformation context instead. */
12190    const createJSDocTypedefTag: typeof factory.createJSDocTypedefTag;
12191    /** @deprecated Use `factory.createJSDocCallbackTag` or the factory supplied by your transformation context instead. */
12192    const createJSDocCallbackTag: typeof factory.createJSDocCallbackTag;
12193    /** @deprecated Use `factory.createJSDocSignature` or the factory supplied by your transformation context instead. */
12194    const createJSDocSignature: typeof factory.createJSDocSignature;
12195    /** @deprecated Use `factory.createJSDocPropertyTag` or the factory supplied by your transformation context instead. */
12196    const createJSDocPropertyTag: typeof factory.createJSDocPropertyTag;
12197    /** @deprecated Use `factory.createJSDocTypeLiteral` or the factory supplied by your transformation context instead. */
12198    const createJSDocTypeLiteral: typeof factory.createJSDocTypeLiteral;
12199    /** @deprecated Use `factory.createJSDocImplementsTag` or the factory supplied by your transformation context instead. */
12200    const createJSDocImplementsTag: typeof factory.createJSDocImplementsTag;
12201    /** @deprecated Use `factory.createJSDocAuthorTag` or the factory supplied by your transformation context instead. */
12202    const createJSDocAuthorTag: typeof factory.createJSDocAuthorTag;
12203    /** @deprecated Use `factory.createJSDocPublicTag` or the factory supplied by your transformation context instead. */
12204    const createJSDocPublicTag: typeof factory.createJSDocPublicTag;
12205    /** @deprecated Use `factory.createJSDocPrivateTag` or the factory supplied by your transformation context instead. */
12206    const createJSDocPrivateTag: typeof factory.createJSDocPrivateTag;
12207    /** @deprecated Use `factory.createJSDocProtectedTag` or the factory supplied by your transformation context instead. */
12208    const createJSDocProtectedTag: typeof factory.createJSDocProtectedTag;
12209    /** @deprecated Use `factory.createJSDocReadonlyTag` or the factory supplied by your transformation context instead. */
12210    const createJSDocReadonlyTag: typeof factory.createJSDocReadonlyTag;
12211    /** @deprecated Use `factory.createJSDocUnknownTag` or the factory supplied by your transformation context instead. */
12212    const createJSDocTag: typeof factory.createJSDocUnknownTag;
12213    /** @deprecated Use `factory.createJsxElement` or the factory supplied by your transformation context instead. */
12214    const createJsxElement: typeof factory.createJsxElement;
12215    /** @deprecated Use `factory.updateJsxElement` or the factory supplied by your transformation context instead. */
12216    const updateJsxElement: typeof factory.updateJsxElement;
12217    /** @deprecated Use `factory.createJsxSelfClosingElement` or the factory supplied by your transformation context instead. */
12218    const createJsxSelfClosingElement: typeof factory.createJsxSelfClosingElement;
12219    /** @deprecated Use `factory.updateJsxSelfClosingElement` or the factory supplied by your transformation context instead. */
12220    const updateJsxSelfClosingElement: typeof factory.updateJsxSelfClosingElement;
12221    /** @deprecated Use `factory.createJsxOpeningElement` or the factory supplied by your transformation context instead. */
12222    const createJsxOpeningElement: typeof factory.createJsxOpeningElement;
12223    /** @deprecated Use `factory.updateJsxOpeningElement` or the factory supplied by your transformation context instead. */
12224    const updateJsxOpeningElement: typeof factory.updateJsxOpeningElement;
12225    /** @deprecated Use `factory.createJsxClosingElement` or the factory supplied by your transformation context instead. */
12226    const createJsxClosingElement: typeof factory.createJsxClosingElement;
12227    /** @deprecated Use `factory.updateJsxClosingElement` or the factory supplied by your transformation context instead. */
12228    const updateJsxClosingElement: typeof factory.updateJsxClosingElement;
12229    /** @deprecated Use `factory.createJsxFragment` or the factory supplied by your transformation context instead. */
12230    const createJsxFragment: typeof factory.createJsxFragment;
12231    /** @deprecated Use `factory.createJsxText` or the factory supplied by your transformation context instead. */
12232    const createJsxText: typeof factory.createJsxText;
12233    /** @deprecated Use `factory.updateJsxText` or the factory supplied by your transformation context instead. */
12234    const updateJsxText: typeof factory.updateJsxText;
12235    /** @deprecated Use `factory.createJsxOpeningFragment` or the factory supplied by your transformation context instead. */
12236    const createJsxOpeningFragment: typeof factory.createJsxOpeningFragment;
12237    /** @deprecated Use `factory.createJsxJsxClosingFragment` or the factory supplied by your transformation context instead. */
12238    const createJsxJsxClosingFragment: typeof factory.createJsxJsxClosingFragment;
12239    /** @deprecated Use `factory.updateJsxFragment` or the factory supplied by your transformation context instead. */
12240    const updateJsxFragment: typeof factory.updateJsxFragment;
12241    /** @deprecated Use `factory.createJsxAttribute` or the factory supplied by your transformation context instead. */
12242    const createJsxAttribute: typeof factory.createJsxAttribute;
12243    /** @deprecated Use `factory.updateJsxAttribute` or the factory supplied by your transformation context instead. */
12244    const updateJsxAttribute: typeof factory.updateJsxAttribute;
12245    /** @deprecated Use `factory.createJsxAttributes` or the factory supplied by your transformation context instead. */
12246    const createJsxAttributes: typeof factory.createJsxAttributes;
12247    /** @deprecated Use `factory.updateJsxAttributes` or the factory supplied by your transformation context instead. */
12248    const updateJsxAttributes: typeof factory.updateJsxAttributes;
12249    /** @deprecated Use `factory.createJsxSpreadAttribute` or the factory supplied by your transformation context instead. */
12250    const createJsxSpreadAttribute: typeof factory.createJsxSpreadAttribute;
12251    /** @deprecated Use `factory.updateJsxSpreadAttribute` or the factory supplied by your transformation context instead. */
12252    const updateJsxSpreadAttribute: typeof factory.updateJsxSpreadAttribute;
12253    /** @deprecated Use `factory.createJsxExpression` or the factory supplied by your transformation context instead. */
12254    const createJsxExpression: typeof factory.createJsxExpression;
12255    /** @deprecated Use `factory.updateJsxExpression` or the factory supplied by your transformation context instead. */
12256    const updateJsxExpression: typeof factory.updateJsxExpression;
12257    /** @deprecated Use `factory.createCaseClause` or the factory supplied by your transformation context instead. */
12258    const createCaseClause: typeof factory.createCaseClause;
12259    /** @deprecated Use `factory.updateCaseClause` or the factory supplied by your transformation context instead. */
12260    const updateCaseClause: typeof factory.updateCaseClause;
12261    /** @deprecated Use `factory.createDefaultClause` or the factory supplied by your transformation context instead. */
12262    const createDefaultClause: typeof factory.createDefaultClause;
12263    /** @deprecated Use `factory.updateDefaultClause` or the factory supplied by your transformation context instead. */
12264    const updateDefaultClause: typeof factory.updateDefaultClause;
12265    /** @deprecated Use `factory.createHeritageClause` or the factory supplied by your transformation context instead. */
12266    const createHeritageClause: typeof factory.createHeritageClause;
12267    /** @deprecated Use `factory.updateHeritageClause` or the factory supplied by your transformation context instead. */
12268    const updateHeritageClause: typeof factory.updateHeritageClause;
12269    /** @deprecated Use `factory.createCatchClause` or the factory supplied by your transformation context instead. */
12270    const createCatchClause: typeof factory.createCatchClause;
12271    /** @deprecated Use `factory.updateCatchClause` or the factory supplied by your transformation context instead. */
12272    const updateCatchClause: typeof factory.updateCatchClause;
12273    /** @deprecated Use `factory.createPropertyAssignment` or the factory supplied by your transformation context instead. */
12274    const createPropertyAssignment: typeof factory.createPropertyAssignment;
12275    /** @deprecated Use `factory.updatePropertyAssignment` or the factory supplied by your transformation context instead. */
12276    const updatePropertyAssignment: typeof factory.updatePropertyAssignment;
12277    /** @deprecated Use `factory.createShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */
12278    const createShorthandPropertyAssignment: typeof factory.createShorthandPropertyAssignment;
12279    /** @deprecated Use `factory.updateShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */
12280    const updateShorthandPropertyAssignment: typeof factory.updateShorthandPropertyAssignment;
12281    /** @deprecated Use `factory.createSpreadAssignment` or the factory supplied by your transformation context instead. */
12282    const createSpreadAssignment: typeof factory.createSpreadAssignment;
12283    /** @deprecated Use `factory.updateSpreadAssignment` or the factory supplied by your transformation context instead. */
12284    const updateSpreadAssignment: typeof factory.updateSpreadAssignment;
12285    /** @deprecated Use `factory.createEnumMember` or the factory supplied by your transformation context instead. */
12286    const createEnumMember: typeof factory.createEnumMember;
12287    /** @deprecated Use `factory.updateEnumMember` or the factory supplied by your transformation context instead. */
12288    const updateEnumMember: typeof factory.updateEnumMember;
12289    /** @deprecated Use `factory.updateSourceFile` or the factory supplied by your transformation context instead. */
12290    const updateSourceFileNode: typeof factory.updateSourceFile;
12291    /** @deprecated Use `factory.createNotEmittedStatement` or the factory supplied by your transformation context instead. */
12292    const createNotEmittedStatement: typeof factory.createNotEmittedStatement;
12293    /** @deprecated Use `factory.createPartiallyEmittedExpression` or the factory supplied by your transformation context instead. */
12294    const createPartiallyEmittedExpression: typeof factory.createPartiallyEmittedExpression;
12295    /** @deprecated Use `factory.updatePartiallyEmittedExpression` or the factory supplied by your transformation context instead. */
12296    const updatePartiallyEmittedExpression: typeof factory.updatePartiallyEmittedExpression;
12297    /** @deprecated Use `factory.createCommaListExpression` or the factory supplied by your transformation context instead. */
12298    const createCommaList: typeof factory.createCommaListExpression;
12299    /** @deprecated Use `factory.updateCommaListExpression` or the factory supplied by your transformation context instead. */
12300    const updateCommaList: typeof factory.updateCommaListExpression;
12301    /** @deprecated Use `factory.createBundle` or the factory supplied by your transformation context instead. */
12302    const createBundle: typeof factory.createBundle;
12303    /** @deprecated Use `factory.updateBundle` or the factory supplied by your transformation context instead. */
12304    const updateBundle: typeof factory.updateBundle;
12305    /** @deprecated Use `factory.createImmediatelyInvokedFunctionExpression` or the factory supplied by your transformation context instead. */
12306    const createImmediatelyInvokedFunctionExpression: typeof factory.createImmediatelyInvokedFunctionExpression;
12307    /** @deprecated Use `factory.createImmediatelyInvokedArrowFunction` or the factory supplied by your transformation context instead. */
12308    const createImmediatelyInvokedArrowFunction: typeof factory.createImmediatelyInvokedArrowFunction;
12309    /** @deprecated Use `factory.createVoidZero` or the factory supplied by your transformation context instead. */
12310    const createVoidZero: typeof factory.createVoidZero;
12311    /** @deprecated Use `factory.createExportDefault` or the factory supplied by your transformation context instead. */
12312    const createExportDefault: typeof factory.createExportDefault;
12313    /** @deprecated Use `factory.createExternalModuleExport` or the factory supplied by your transformation context instead. */
12314    const createExternalModuleExport: typeof factory.createExternalModuleExport;
12315    /** @deprecated Use `factory.createNamespaceExport` or the factory supplied by your transformation context instead. */
12316    const createNamespaceExport: typeof factory.createNamespaceExport;
12317    /** @deprecated Use `factory.updateNamespaceExport` or the factory supplied by your transformation context instead. */
12318    const updateNamespaceExport: typeof factory.updateNamespaceExport;
12319    /** @deprecated Use `factory.createToken` or the factory supplied by your transformation context instead. */
12320    const createToken: <TKind extends SyntaxKind>(kind: TKind) => Token<TKind>;
12321    /** @deprecated Use `factory.createIdentifier` or the factory supplied by your transformation context instead. */
12322    const createIdentifier: (text: string) => Identifier;
12323    /** @deprecated Use `factory.createTempVariable` or the factory supplied by your transformation context instead. */
12324    const createTempVariable: (recordTempVariable: ((node: Identifier) => void) | undefined) => Identifier;
12325    /** @deprecated Use `factory.getGeneratedNameForNode` or the factory supplied by your transformation context instead. */
12326    const getGeneratedNameForNode: (node: Node | undefined) => Identifier;
12327    /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic)` or the factory supplied by your transformation context instead. */
12328    const createOptimisticUniqueName: (text: string) => Identifier;
12329    /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic | GeneratedIdentifierFlags.FileLevel)` or the factory supplied by your transformation context instead. */
12330    const createFileLevelUniqueName: (text: string) => Identifier;
12331    /** @deprecated Use `factory.createIndexSignature` or the factory supplied by your transformation context instead. */
12332    const createIndexSignature: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => IndexSignatureDeclaration;
12333    /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */
12334    const createTypePredicateNode: (parameterName: Identifier | ThisTypeNode | string, type: TypeNode) => TypePredicateNode;
12335    /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */
12336    const updateTypePredicateNode: (node: TypePredicateNode, parameterName: Identifier | ThisTypeNode, type: TypeNode) => TypePredicateNode;
12337    /** @deprecated Use `factory.createStringLiteral`, `factory.createStringLiteralFromNode`, `factory.createNumericLiteral`, `factory.createBigIntLiteral`, `factory.createTrue`, `factory.createFalse`, or the factory supplied by your transformation context instead. */
12338    const createLiteral: {
12339        (value: string | StringLiteral | NoSubstitutionTemplateLiteral | NumericLiteral | Identifier): StringLiteral;
12340        (value: number | PseudoBigInt): NumericLiteral;
12341        (value: boolean): BooleanLiteral;
12342        (value: string | number | PseudoBigInt | boolean): PrimaryExpression;
12343    };
12344    /** @deprecated Use `factory.createMethodSignature` or the factory supplied by your transformation context instead. */
12345    const createMethodSignature: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined) => MethodSignature;
12346    /** @deprecated Use `factory.updateMethodSignature` or the factory supplied by your transformation context instead. */
12347    const updateMethodSignature: (node: MethodSignature, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined, name: PropertyName, questionToken: QuestionToken | undefined) => MethodSignature;
12348    /** @deprecated Use `factory.createTypeOperatorNode` or the factory supplied by your transformation context instead. */
12349    const createTypeOperatorNode: {
12350        (type: TypeNode): TypeOperatorNode;
12351        (operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode;
12352    };
12353    /** @deprecated Use `factory.createTaggedTemplate` or the factory supplied by your transformation context instead. */
12354    const createTaggedTemplate: {
12355        (tag: Expression, template: TemplateLiteral): TaggedTemplateExpression;
12356        (tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
12357    };
12358    /** @deprecated Use `factory.updateTaggedTemplate` or the factory supplied by your transformation context instead. */
12359    const updateTaggedTemplate: {
12360        (node: TaggedTemplateExpression, tag: Expression, template: TemplateLiteral): TaggedTemplateExpression;
12361        (node: TaggedTemplateExpression, tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
12362    };
12363    /** @deprecated Use `factory.updateBinary` or the factory supplied by your transformation context instead. */
12364    const updateBinary: (node: BinaryExpression, left: Expression, right: Expression, operator?: BinaryOperator | BinaryOperatorToken) => BinaryExpression;
12365    /** @deprecated Use `factory.createConditional` or the factory supplied by your transformation context instead. */
12366    const createConditional: {
12367        (condition: Expression, whenTrue: Expression, whenFalse: Expression): ConditionalExpression;
12368        (condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression): ConditionalExpression;
12369    };
12370    /** @deprecated Use `factory.createYield` or the factory supplied by your transformation context instead. */
12371    const createYield: {
12372        (expression?: Expression | undefined): YieldExpression;
12373        (asteriskToken: AsteriskToken | undefined, expression: Expression): YieldExpression;
12374    };
12375    /** @deprecated Use `factory.createClassExpression` or the factory supplied by your transformation context instead. */
12376    const createClassExpression: (modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression;
12377    /** @deprecated Use `factory.updateClassExpression` or the factory supplied by your transformation context instead. */
12378    const updateClassExpression: (node: ClassExpression, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression;
12379    /** @deprecated Use `factory.createPropertySignature` or the factory supplied by your transformation context instead. */
12380    const createPropertySignature: (modifiers: readonly Modifier[] | undefined, name: PropertyName | string, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer?: Expression | undefined) => PropertySignature;
12381    /** @deprecated Use `factory.updatePropertySignature` or the factory supplied by your transformation context instead. */
12382    const updatePropertySignature: (node: PropertySignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined) => PropertySignature;
12383    /** @deprecated Use `factory.createExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */
12384    const createExpressionWithTypeArguments: (typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments;
12385    /** @deprecated Use `factory.updateExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */
12386    const updateExpressionWithTypeArguments: (node: ExpressionWithTypeArguments, typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments;
12387    /** @deprecated Use `factory.createArrowFunction` or the factory supplied by your transformation context instead. */
12388    const createArrowFunction: {
12389        (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken | undefined, body: ConciseBody): ArrowFunction;
12390        (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction;
12391    };
12392    /** @deprecated Use `factory.updateArrowFunction` or the factory supplied by your transformation context instead. */
12393    const updateArrowFunction: {
12394        (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken, body: ConciseBody): ArrowFunction;
12395        (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction;
12396    };
12397    /** @deprecated Use `factory.createVariableDeclaration` or the factory supplied by your transformation context instead. */
12398    const createVariableDeclaration: {
12399        (name: string | BindingName, type?: TypeNode | undefined, initializer?: Expression | undefined): VariableDeclaration;
12400        (name: string | BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
12401    };
12402    /** @deprecated Use `factory.updateVariableDeclaration` or the factory supplied by your transformation context instead. */
12403    const updateVariableDeclaration: {
12404        (node: VariableDeclaration, name: BindingName, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
12405        (node: VariableDeclaration, name: BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
12406    };
12407    /** @deprecated Use `factory.createImportClause` or the factory supplied by your transformation context instead. */
12408    const createImportClause: (name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: any) => ImportClause;
12409    /** @deprecated Use `factory.updateImportClause` or the factory supplied by your transformation context instead. */
12410    const updateImportClause: (node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly: boolean) => ImportClause;
12411    /** @deprecated Use `factory.createExportDeclaration` or the factory supplied by your transformation context instead. */
12412    const createExportDeclaration: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression | undefined, isTypeOnly?: any) => ExportDeclaration;
12413    /** @deprecated Use `factory.updateExportDeclaration` or the factory supplied by your transformation context instead. */
12414    const updateExportDeclaration: (node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean) => ExportDeclaration;
12415    /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */
12416    const createJSDocParamTag: (name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression | undefined, comment?: string | undefined) => JSDocParameterTag;
12417    /** @deprecated Use `factory.createComma` or the factory supplied by your transformation context instead. */
12418    const createComma: (left: Expression, right: Expression) => Expression;
12419    /** @deprecated Use `factory.createLessThan` or the factory supplied by your transformation context instead. */
12420    const createLessThan: (left: Expression, right: Expression) => Expression;
12421    /** @deprecated Use `factory.createAssignment` or the factory supplied by your transformation context instead. */
12422    const createAssignment: (left: Expression, right: Expression) => BinaryExpression;
12423    /** @deprecated Use `factory.createStrictEquality` or the factory supplied by your transformation context instead. */
12424    const createStrictEquality: (left: Expression, right: Expression) => BinaryExpression;
12425    /** @deprecated Use `factory.createStrictInequality` or the factory supplied by your transformation context instead. */
12426    const createStrictInequality: (left: Expression, right: Expression) => BinaryExpression;
12427    /** @deprecated Use `factory.createAdd` or the factory supplied by your transformation context instead. */
12428    const createAdd: (left: Expression, right: Expression) => BinaryExpression;
12429    /** @deprecated Use `factory.createSubtract` or the factory supplied by your transformation context instead. */
12430    const createSubtract: (left: Expression, right: Expression) => BinaryExpression;
12431    /** @deprecated Use `factory.createLogicalAnd` or the factory supplied by your transformation context instead. */
12432    const createLogicalAnd: (left: Expression, right: Expression) => BinaryExpression;
12433    /** @deprecated Use `factory.createLogicalOr` or the factory supplied by your transformation context instead. */
12434    const createLogicalOr: (left: Expression, right: Expression) => BinaryExpression;
12435    /** @deprecated Use `factory.createPostfixIncrement` or the factory supplied by your transformation context instead. */
12436    const createPostfixIncrement: (operand: Expression) => PostfixUnaryExpression;
12437    /** @deprecated Use `factory.createLogicalNot` or the factory supplied by your transformation context instead. */
12438    const createLogicalNot: (operand: Expression) => PrefixUnaryExpression;
12439    /** @deprecated Use an appropriate `factory` method instead. */
12440    const createNode: (kind: SyntaxKind, pos?: any, end?: any) => Node;
12441    /**
12442     * Creates a shallow, memberwise clone of a node ~for mutation~ with its `pos`, `end`, and `parent` set.
12443     *
12444     * NOTE: It is unsafe to change any properties of a `Node` that relate to its AST children, as those changes won't be
12445     * captured with respect to transformations.
12446     *
12447     * @deprecated Use an appropriate `factory.update...` method instead, use `setCommentRange` or `setSourceMapRange`, and avoid setting `parent`.
12448     */
12449    const getMutableClone: <T extends Node>(node: T) => T;
12450    /** @deprecated Use `isTypeAssertionExpression` instead. */
12451    const isTypeAssertion: (node: Node) => node is TypeAssertion;
12452    /**
12453     * @deprecated Use `isMemberName` instead.
12454     */
12455    const isIdentifierOrPrivateIdentifier: (node: Node) => node is MemberName;
12456    namespace ArkTSLinter_1_0 {
12457        interface AutofixInfo {
12458            problemID: string;
12459            start: number;
12460            end: number;
12461        }
12462        interface CommandLineOptions {
12463            strictMode?: boolean;
12464            ideMode?: boolean;
12465            logTscErrors?: boolean;
12466            warningsAsErrors: boolean;
12467            parsedConfigFile?: ParsedCommandLine;
12468            inputFiles: string[];
12469            autofixInfo?: AutofixInfo[];
12470        }
12471        interface LintOptions {
12472            cmdOptions: CommandLineOptions;
12473            tsProgram?: Program;
12474            [key: string]: any;
12475        }
12476        const cookBookMsg: string[];
12477        const cookBookTag: string[];
12478        interface DiagnosticChecker {
12479            checkDiagnosticMessage(msgText: string | DiagnosticMessageChain): boolean;
12480        }
12481        const TYPE_0_IS_NOT_ASSIGNABLE_TO_TYPE_1_ERROR_CODE = 2322;
12482        const TYPE_UNKNOWN_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
12483        const TYPE_NULL_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
12484        const TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
12485        const ARGUMENT_OF_TYPE_0_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_ERROR_CODE = 2345;
12486        const ARGUMENT_OF_TYPE_NULL_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
12487        const ARGUMENT_OF_TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
12488        const NO_OVERLOAD_MATCHES_THIS_CALL_ERROR_CODE = 2769;
12489        class LibraryTypeCallDiagnosticChecker implements DiagnosticChecker {
12490            inLibCall: boolean;
12491            diagnosticMessages: Array<DiagnosticMessageChain> | undefined;
12492            filteredDiagnosticMessages: DiagnosticMessageChain[];
12493            constructor(filteredDiagnosticMessages: DiagnosticMessageChain[]);
12494            configure(inLibCall: boolean, diagnosticMessages: Array<DiagnosticMessageChain>): void;
12495            checkMessageText(msg: string): boolean;
12496            checkMessageChain(chain: DiagnosticMessageChain): boolean;
12497            checkFilteredDiagnosticMessages(msgText: DiagnosticMessageChain | string): boolean;
12498            checkDiagnosticMessage(msgText: string | DiagnosticMessageChain): boolean;
12499        }
12500        function setTypeChecker(tsTypeChecker: TypeChecker): void;
12501        function clearTypeChecker(): void;
12502        function setTestMode(tsTestMode: boolean): void;
12503        function getStartPos(nodeOrComment: Node | CommentRange): number;
12504        function getEndPos(nodeOrComment: Node | CommentRange): number;
12505        function isAssignmentOperator(tsBinOp: BinaryOperatorToken): boolean;
12506        function isTypedArray(tsType: TypeNode | undefined): boolean;
12507        function isType(tsType: TypeNode | undefined, checkType: string): boolean;
12508        function entityNameToString(name: EntityName): string;
12509        function isNumberType(tsType: Type): boolean;
12510        function isBooleanType(tsType: Type): boolean;
12511        function isStringLikeType(tsType: Type): boolean;
12512        function isStringType(type: Type): boolean;
12513        function isPrimitiveEnumType(type: Type, primitiveType: TypeFlags): boolean;
12514        function isPrimitiveEnumMemberType(type: Type, primitiveType: TypeFlags): boolean;
12515        function unwrapParenthesizedType(tsType: TypeNode): TypeNode;
12516        function findParentIf(asExpr: AsExpression): IfStatement | null;
12517        function isDestructuringAssignmentLHS(tsExpr: ArrayLiteralExpression | ObjectLiteralExpression): boolean;
12518        function isEnumType(tsType: Type): boolean;
12519        function isEnumMemberType(tsType: Type): boolean;
12520        function isObjectLiteralType(tsType: Type): boolean;
12521        function isNumberLikeType(tsType: Type): boolean;
12522        function hasModifier(tsModifiers: readonly Modifier[] | undefined, tsModifierKind: number): boolean;
12523        function unwrapParenthesized(tsExpr: Expression): Expression;
12524        function followIfAliased(sym: Symbol): Symbol;
12525        function trueSymbolAtLocation(node: Node): Symbol | undefined;
12526        function clearTrueSymbolAtLocationCache(): void;
12527        function isTypeDeclSyntaxKind(kind: SyntaxKind): boolean;
12528        function symbolHasDuplicateName(symbol: Symbol, tsDeclKind: SyntaxKind): boolean;
12529        function isReferenceType(tsType: Type): boolean;
12530        function isPrimitiveType(type: Type): boolean;
12531        function isTypeSymbol(symbol: Symbol | undefined): boolean;
12532        function isGenericArrayType(tsType: Type): tsType is TypeReference;
12533        function isDerivedFrom(tsType: Type, checkType: CheckType): tsType is TypeReference;
12534        function isTypeReference(tsType: Type): tsType is TypeReference;
12535        function isNullType(tsTypeNode: TypeNode): boolean;
12536        function isThisOrSuperExpr(tsExpr: Expression): boolean;
12537        function isPrototypeSymbol(symbol: Symbol | undefined): boolean;
12538        function isFunctionSymbol(symbol: Symbol | undefined): boolean;
12539        function isInterfaceType(tsType: Type | undefined): boolean;
12540        function isAnyType(tsType: Type): tsType is TypeReference;
12541        function isUnknownType(tsType: Type): boolean;
12542        function isUnsupportedType(tsType: Type): boolean;
12543        function isUnsupportedUnionType(tsType: Type): boolean;
12544        function isFunctionOrMethod(tsSymbol: Symbol | undefined): boolean;
12545        function isMethodAssignment(tsSymbol: Symbol | undefined): boolean;
12546        function getDeclaration(tsSymbol: Symbol | undefined): Declaration | undefined;
12547        function isValidEnumMemberInit(tsExpr: Expression): boolean;
12548        function isCompileTimeExpression(tsExpr: Expression): boolean;
12549        function isConst(tsNode: Node): boolean;
12550        function isNumberConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
12551        function isIntegerConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
12552        function isStringConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression): boolean;
12553        function relatedByInheritanceOrIdentical(typeA: Type, typeB: Type): boolean;
12554        function needToDeduceStructuralIdentity(typeFrom: Type, typeTo: Type, allowPromotion?: boolean): boolean;
12555        function hasPredecessor(node: Node, predicate: (node: Node) => boolean): boolean;
12556        function processParentTypes(parentTypes: NodeArray<ExpressionWithTypeArguments>, typeB: Type, processInterfaces: boolean): boolean;
12557        function processParentTypesCheck(parentTypes: NodeArray<ExpressionWithTypeArguments>, checkType: CheckType): boolean;
12558        function isObjectType(tsType: Type): boolean;
12559        function logTscDiagnostic(diagnostics: readonly Diagnostic[], log: (message: any, ...args: any[]) => void): void;
12560        function encodeProblemInfo(problem: ProblemInfo): string;
12561        function decodeAutofixInfo(info: string): AutofixInfo;
12562        function isCallToFunctionWithOmittedReturnType(tsExpr: Expression): boolean;
12563        function validateObjectLiteralType(type: Type | undefined): boolean;
12564        function isStructDeclarationKind(kind: SyntaxKind): boolean;
12565        function isStructDeclaration(node: Node): boolean;
12566        function isStructObjectInitializer(objectLiteral: ObjectLiteralExpression): boolean;
12567        function hasMethods(type: Type): boolean;
12568        function isExpressionAssignableToType(lhsType: Type | undefined, rhsExpr: Expression): boolean;
12569        function isLiteralType(type: Type): boolean;
12570        function validateFields(type: Type, objectLiteral: ObjectLiteralExpression): boolean;
12571        function isSupportedType(typeNode: TypeNode): boolean;
12572        function isStruct(symbol: Symbol): boolean;
12573        function getParentSymbolName(symbol: Symbol): string | undefined;
12574        function isGlobalSymbol(symbol: Symbol): boolean;
12575        function isSymbolAPI(symbol: Symbol): boolean;
12576        function isStdSymbol(symbol: Symbol): boolean;
12577        function isSymbolIterator(symbol: Symbol): boolean;
12578        function isDefaultImport(importSpec: ImportSpecifier): boolean;
12579        function hasAccessModifier(decl: Declaration): boolean;
12580        function getModifier(modifiers: readonly Modifier[] | undefined, modifierKind: SyntaxKind): Modifier | undefined;
12581        function getAccessModifier(modifiers: readonly Modifier[] | undefined): Modifier | undefined;
12582        function isStdRecordType(type: Type): boolean;
12583        function isStdPartialType(type: Type): boolean;
12584        function isStdRequiredType(type: Type): boolean;
12585        function isStdReadonlyType(type: Type): boolean;
12586        function isLibraryType(type: Type): boolean;
12587        function hasLibraryType(node: Node): boolean;
12588        function isLibrarySymbol(sym: Symbol | undefined): boolean;
12589        function pathContainsDirectory(targetPath: string, dir: string): boolean;
12590        function getScriptKind(srcFile: SourceFile): ScriptKind;
12591        function isStdLibraryType(type: Type): boolean;
12592        function isStdLibrarySymbol(sym: Symbol | undefined): boolean;
12593        function isIntrinsicObjectType(type: Type): boolean;
12594        function isDynamicType(type: Type | undefined): boolean | undefined;
12595        function isDynamicLiteralInitializer(expr: Expression): boolean;
12596        function isEsObjectType(typeNode: TypeNode): boolean;
12597        function isInsideBlock(node: Node): boolean;
12598        function isEsObjectPossiblyAllowed(typeRef: TypeReferenceNode): boolean;
12599        function isValueAssignableToESObject(node: Node): boolean;
12600        function getVariableDeclarationTypeNode(node: Node): TypeNode | undefined;
12601        function getSymbolDeclarationTypeNode(sym: Symbol): TypeNode | undefined;
12602        function hasEsObjectType(node: Node): boolean;
12603        function symbolHasEsObjectType(sym: Symbol): boolean;
12604        function isEsObjectSymbol(sym: Symbol): boolean;
12605        function isAnonymousType(type: Type): boolean;
12606        function getSymbolOfCallExpression(callExpr: CallExpression): Symbol | undefined;
12607        function typeIsRecursive(topType: Type, type?: Type | undefined): boolean;
12608        const PROPERTY_HAS_NO_INITIALIZER_ERROR_CODE = 2564;
12609        const NON_INITIALIZABLE_PROPERTY_DECORATORS: string[];
12610        const NON_INITIALIZABLE_PROPERTY_ClASS_DECORATORS: string[];
12611        const LIMITED_STANDARD_UTILITY_TYPES: string[];
12612        const ALLOWED_STD_SYMBOL_API: string[];
12613        enum ProblemSeverity {
12614            WARNING = 1,
12615            ERROR = 2
12616        }
12617        const ARKTS_IGNORE_DIRS: string[];
12618        const ARKTS_IGNORE_FILES: string[];
12619        enum CheckType {
12620            Array = 0,
12621            String = "String",
12622            Set = "Set",
12623            Map = "Map",
12624            Error = "Error"
12625        }
12626        const ES_OBJECT = "ESObject";
12627        const LIMITED_STD_GLOBAL_FUNC: string[];
12628        const LIMITED_STD_OBJECT_API: string[];
12629        const LIMITED_STD_REFLECT_API: string[];
12630        const LIMITED_STD_PROXYHANDLER_API: string[];
12631        const ARKUI_DECORATORS: string[];
12632        const FUNCTION_HAS_NO_RETURN_ERROR_CODE = 2366;
12633        const NON_RETURN_FUNCTION_DECORATORS: string[];
12634        const STANDARD_LIBRARIES: string[];
12635        const TYPED_ARRAYS: string[];
12636        enum FaultID {
12637            AnyType = 0,
12638            SymbolType = 1,
12639            ObjectLiteralNoContextType = 2,
12640            ArrayLiteralNoContextType = 3,
12641            ComputedPropertyName = 4,
12642            LiteralAsPropertyName = 5,
12643            TypeQuery = 6,
12644            RegexLiteral = 7,
12645            IsOperator = 8,
12646            DestructuringParameter = 9,
12647            YieldExpression = 10,
12648            InterfaceMerging = 11,
12649            EnumMerging = 12,
12650            InterfaceExtendsClass = 13,
12651            IndexMember = 14,
12652            WithStatement = 15,
12653            ThrowStatement = 16,
12654            IndexedAccessType = 17,
12655            UnknownType = 18,
12656            ForInStatement = 19,
12657            InOperator = 20,
12658            ImportFromPath = 21,
12659            FunctionExpression = 22,
12660            IntersectionType = 23,
12661            ObjectTypeLiteral = 24,
12662            CommaOperator = 25,
12663            LimitedReturnTypeInference = 26,
12664            LambdaWithTypeParameters = 27,
12665            ClassExpression = 28,
12666            DestructuringAssignment = 29,
12667            DestructuringDeclaration = 30,
12668            VarDeclaration = 31,
12669            CatchWithUnsupportedType = 32,
12670            DeleteOperator = 33,
12671            DeclWithDuplicateName = 34,
12672            UnaryArithmNotNumber = 35,
12673            ConstructorType = 36,
12674            ConstructorIface = 37,
12675            ConstructorFuncs = 38,
12676            CallSignature = 39,
12677            TypeAssertion = 40,
12678            PrivateIdentifier = 41,
12679            LocalFunction = 42,
12680            ConditionalType = 43,
12681            MappedType = 44,
12682            NamespaceAsObject = 45,
12683            ClassAsObject = 46,
12684            NonDeclarationInNamespace = 47,
12685            GeneratorFunction = 48,
12686            FunctionContainsThis = 49,
12687            PropertyAccessByIndex = 50,
12688            JsxElement = 51,
12689            EnumMemberNonConstInit = 52,
12690            ImplementsClass = 53,
12691            NoUndefinedPropAccess = 54,
12692            MultipleStaticBlocks = 55,
12693            ThisType = 56,
12694            IntefaceExtendDifProps = 57,
12695            StructuralIdentity = 58,
12696            DefaultImport = 59,
12697            ExportAssignment = 60,
12698            ImportAssignment = 61,
12699            GenericCallNoTypeArgs = 62,
12700            ParameterProperties = 63,
12701            InstanceofUnsupported = 64,
12702            ShorthandAmbientModuleDecl = 65,
12703            WildcardsInModuleName = 66,
12704            UMDModuleDefinition = 67,
12705            NewTarget = 68,
12706            DefiniteAssignment = 69,
12707            Prototype = 70,
12708            GlobalThis = 71,
12709            UtilityType = 72,
12710            PropertyDeclOnFunction = 73,
12711            FunctionApplyBindCall = 74,
12712            ConstAssertion = 75,
12713            ImportAssertion = 76,
12714            SpreadOperator = 77,
12715            LimitedStdLibApi = 78,
12716            ErrorSuppression = 79,
12717            StrictDiagnostic = 80,
12718            UnsupportedDecorators = 81,
12719            ImportAfterStatement = 82,
12720            EsObjectType = 83,
12721            LAST_ID = 84
12722        }
12723        class FaultAttributs {
12724            migratable?: boolean;
12725            warning?: boolean;
12726            cookBookRef: string;
12727        }
12728        const faultsAttrs: FaultAttributs[];
12729        function shouldAutofix(node: Node, faultID: FaultID): boolean;
12730        function fixLiteralAsPropertyName(node: Node): Autofix[] | undefined;
12731        function fixPropertyAccessByIndex(node: Node): Autofix[] | undefined;
12732        function fixFunctionExpression(funcExpr: FunctionExpression, params?: NodeArray<ParameterDeclaration>, retType?: TypeNode | undefined): Autofix;
12733        function fixReturnType(funcLikeDecl: FunctionLikeDeclaration, typeNode: TypeNode): Autofix;
12734        function fixCtorParameterProperties(ctorDecl: ConstructorDeclaration, paramTypes: TypeNode[]): Autofix[] | undefined;
12735        const AUTOFIX_ALL: AutofixInfo;
12736        const autofixInfo: AutofixInfo[];
12737        interface Autofix {
12738            replacementText: string;
12739            start: number;
12740            end: number;
12741        }
12742        class LinterConfig {
12743            static nodeDesc: string[];
12744            static tsSyntaxKindNames: string[];
12745            static initStatic(): void;
12746            static terminalTokens: Set<SyntaxKind>;
12747            static incrementOnlyTokens: ESMap<SyntaxKind, FaultID>;
12748        }
12749        interface ProblemInfo {
12750            line: number;
12751            column: number;
12752            start: number;
12753            end: number;
12754            type: string;
12755            severity: number;
12756            problem: string;
12757            suggest: string;
12758            rule: string;
12759            ruleTag: number;
12760            autofixable: boolean;
12761            autofix?: Autofix[];
12762        }
12763        class TypeScriptLinter {
12764            private sourceFile;
12765            private tscStrictDiagnostics?;
12766            static ideMode: boolean;
12767            static strictMode: boolean;
12768            static logTscErrors: boolean;
12769            static warningsAsErrors: boolean;
12770            static lintEtsOnly: boolean;
12771            static totalVisitedNodes: number;
12772            static nodeCounters: number[];
12773            static lineCounters: number[];
12774            static totalErrorLines: number;
12775            static errorLineNumbersString: string;
12776            static totalWarningLines: number;
12777            static warningLineNumbersString: string;
12778            static reportDiagnostics: boolean;
12779            static problemsInfos: ProblemInfo[];
12780            static filteredDiagnosticMessages: DiagnosticMessageChain[];
12781            static initGlobals(): void;
12782            static initStatic(): void;
12783            static tsTypeChecker: TypeChecker;
12784            currentErrorLine: number;
12785            currentWarningLine: number;
12786            staticBlocks: Set<string>;
12787            libraryTypeCallDiagnosticChecker: LibraryTypeCallDiagnosticChecker;
12788            skipArkTSStaticBlocksCheck: boolean;
12789            constructor(sourceFile: SourceFile, tsProgram: Program, tscStrictDiagnostics?: ts.Map<ts.Diagnostic[]> | undefined);
12790            static clearTsTypeChecker(): void;
12791            static clearQualifiedNameCache(): void;
12792            readonly handlersMap: ts.ESMap<SyntaxKind, (node: Node) => void>;
12793            incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void;
12794            visitTSNode(node: Node): void;
12795            private countInterfaceExtendsDifferentPropertyTypes;
12796            private countDeclarationsWithDuplicateName;
12797            private countClassMembersWithDuplicateName;
12798            private functionContainsThis;
12799            private isPrototypePropertyAccess;
12800            private interfaceInheritanceLint;
12801            private lintForInterfaceExtendsDifferentPorpertyTypes;
12802            private handleObjectLiteralExpression;
12803            private handleArrayLiteralExpression;
12804            private handleParameter;
12805            private handleEnumDeclaration;
12806            private handleInterfaceDeclaration;
12807            private handleThrowStatement;
12808            private handleForStatement;
12809            private handleForInStatement;
12810            private handleForOfStatement;
12811            private handleImportDeclaration;
12812            private handlePropertyAccessExpression;
12813            private handlePropertyAssignmentOrDeclaration;
12814            private filterOutDecoratorsDiagnostics;
12815            private checkInRange;
12816            private filterStrictDiagnostics;
12817            private handleFunctionExpression;
12818            private handleArrowFunction;
12819            private handleClassExpression;
12820            private handleFunctionDeclaration;
12821            private handleMissingReturnType;
12822            private hasLimitedTypeInferenceFromReturnExpr;
12823            private handlePrefixUnaryExpression;
12824            private handleBinaryExpression;
12825            private handleVariableDeclarationList;
12826            private handleVariableDeclaration;
12827            private handleEsObjectDelaration;
12828            private handleEsObjectAssignment;
12829            private handleCatchClause;
12830            private handleClassDeclaration;
12831            private handleModuleDeclaration;
12832            private handleTypeAliasDeclaration;
12833            private handleImportClause;
12834            private handleImportSpecifier;
12835            private handleNamespaceImport;
12836            private handleTypeAssertionExpression;
12837            private handleMethodDeclaration;
12838            private handleIdentifier;
12839            private isAllowedClassValueContext;
12840            private handleRestrictedValues;
12841            private identiferUseInValueContext;
12842            private isEnumPropAccess;
12843            private handleElementAccessExpression;
12844            private handleEnumMember;
12845            private handleExportAssignment;
12846            private handleCallExpression;
12847            private handleImportCall;
12848            private handleRequireCall;
12849            private handleGenericCallWithNoTypeArgs;
12850            private static listApplyBindCallApis;
12851            private handleFunctionApplyBindPropCall;
12852            private handleStructIdentAndUndefinedInArgs;
12853            private static LimitedApis;
12854            private handleStdlibAPICall;
12855            private findNonFilteringRangesFunctionCalls;
12856            private handleLibraryTypeCall;
12857            private handleNewExpression;
12858            private handleAsExpression;
12859            private handleTypeReference;
12860            private handleMetaProperty;
12861            private handleStructDeclaration;
12862            private handleSpreadOp;
12863            private handleConstructSignature;
12864            private handleComments;
12865            private handleExpressionWithTypeArguments;
12866            private handleComputedPropertyName;
12867            private checkErrorSuppressingAnnotation;
12868            private handleDecorators;
12869            private handleGetAccessor;
12870            private handleSetAccessor;
12871            private handleDeclarationInferredType;
12872            private handleDefiniteAssignmentAssertion;
12873            private validatedTypesSet;
12874            private checkAnyOrUnknownChildNode;
12875            private handleInferredObjectreference;
12876            private validateDeclInferredType;
12877            private handleClassStaticBlockDeclaration;
12878            lint(): void;
12879        }
12880        class TSCCompiledProgram {
12881            private diagnosticsExtractor;
12882            constructor(program: BuilderProgram);
12883            getProgram(): Program;
12884            getBuilderProgram(): BuilderProgram;
12885            getStrictDiagnostics(fileName: string): Diagnostic[];
12886            doAllGetDiagnostics(): void;
12887        }
12888        function translateDiag(srcFile: SourceFile, problemInfo: ProblemInfo): Diagnostic;
12889        function runArkTSLinter(tsBuilderProgram: BuilderProgram, srcFile?: SourceFile, buildInfoWriteFile?: WriteFileCallback, arkTSVersion?: string): Diagnostic[];
12890    }
12891    namespace ArkTSLinter_1_1 {
12892        interface AutofixInfo {
12893            problemID: string;
12894            start: number;
12895            end: number;
12896        }
12897        interface CommandLineOptions {
12898            strictMode?: boolean;
12899            ideMode?: boolean;
12900            logTscErrors?: boolean;
12901            warningsAsErrors: boolean;
12902            parsedConfigFile?: ParsedCommandLine;
12903            inputFiles: string[];
12904            autofixInfo?: AutofixInfo[];
12905        }
12906        interface LintOptions {
12907            cmdOptions: CommandLineOptions;
12908            tsProgram?: Program;
12909            [key: string]: any;
12910        }
12911        enum ProblemSeverity {
12912            WARNING = 1,
12913            ERROR = 2
12914        }
12915        const cookBookMsg: string[];
12916        const cookBookTag: string[];
12917        interface DiagnosticChecker {
12918            checkDiagnosticMessage(msgText: string | DiagnosticMessageChain): boolean;
12919        }
12920        const TYPE_0_IS_NOT_ASSIGNABLE_TO_TYPE_1_ERROR_CODE = 2322;
12921        const TYPE_UNKNOWN_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
12922        const TYPE_NULL_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
12923        const TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
12924        const ARGUMENT_OF_TYPE_0_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_ERROR_CODE = 2345;
12925        const OBJECT_IS_POSSIBLY_UNDEFINED_ERROR_CODE = 2532;
12926        const ARGUMENT_OF_TYPE_NULL_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
12927        const ARGUMENT_OF_TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
12928        const NO_OVERLOAD_MATCHES_THIS_CALL_ERROR_CODE = 2769;
12929        const TYPE = "Type";
12930        const IS_NOT_ASSIGNABLE_TO_TYPE = "is not assignable to type";
12931        const ARGUMENT_OF_TYPE = "Argument of type";
12932        const IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE = "is not assignable to parameter of type";
12933        enum ErrorType {
12934            NO_ERROR = 0,
12935            UNKNOW = 1,
12936            NULL = 2,
12937            POSSIBLY_UNDEFINED = 3
12938        }
12939        class LibraryTypeCallDiagnosticChecker {
12940            private static _instance;
12941            static get instance(): LibraryTypeCallDiagnosticChecker;
12942            private _diagnosticErrorTypeMap;
12943            private constructor();
12944            clear(): void;
12945            rebuildTscDiagnostics(tscStrictDiagnostics: ESMap<string, ts.Diagnostic[]>): void;
12946            filterDiagnostics(tscDiagnostics: readonly ts.Diagnostic[], expr: ts.CallExpression | ts.NewExpression, isLibCall: boolean, filterHandle: (diagnositc: ts.Diagnostic, errorType: ErrorType) => void): void;
12947            private getErrorType;
12948            private static isValidErrorType;
12949            private static isValidDiagnosticRange;
12950        }
12951        enum FaultID {
12952            AnyType = 0,
12953            SymbolType = 1,
12954            ObjectLiteralNoContextType = 2,
12955            ArrayLiteralNoContextType = 3,
12956            ComputedPropertyName = 4,
12957            LiteralAsPropertyName = 5,
12958            TypeQuery = 6,
12959            IsOperator = 7,
12960            DestructuringParameter = 8,
12961            YieldExpression = 9,
12962            InterfaceMerging = 10,
12963            EnumMerging = 11,
12964            InterfaceExtendsClass = 12,
12965            IndexMember = 13,
12966            WithStatement = 14,
12967            ThrowStatement = 15,
12968            IndexedAccessType = 16,
12969            UnknownType = 17,
12970            ForInStatement = 18,
12971            InOperator = 19,
12972            FunctionExpression = 20,
12973            IntersectionType = 21,
12974            ObjectTypeLiteral = 22,
12975            CommaOperator = 23,
12976            LimitedReturnTypeInference = 24,
12977            ClassExpression = 25,
12978            DestructuringAssignment = 26,
12979            DestructuringDeclaration = 27,
12980            VarDeclaration = 28,
12981            CatchWithUnsupportedType = 29,
12982            DeleteOperator = 30,
12983            DeclWithDuplicateName = 31,
12984            UnaryArithmNotNumber = 32,
12985            ConstructorType = 33,
12986            ConstructorIface = 34,
12987            ConstructorFuncs = 35,
12988            CallSignature = 36,
12989            TypeAssertion = 37,
12990            PrivateIdentifier = 38,
12991            LocalFunction = 39,
12992            ConditionalType = 40,
12993            MappedType = 41,
12994            NamespaceAsObject = 42,
12995            ClassAsObject = 43,
12996            NonDeclarationInNamespace = 44,
12997            GeneratorFunction = 45,
12998            FunctionContainsThis = 46,
12999            PropertyAccessByIndex = 47,
13000            JsxElement = 48,
13001            EnumMemberNonConstInit = 49,
13002            ImplementsClass = 50,
13003            MethodReassignment = 51,
13004            MultipleStaticBlocks = 52,
13005            ThisType = 53,
13006            IntefaceExtendDifProps = 54,
13007            StructuralIdentity = 55,
13008            ExportAssignment = 56,
13009            ImportAssignment = 57,
13010            GenericCallNoTypeArgs = 58,
13011            ParameterProperties = 59,
13012            InstanceofUnsupported = 60,
13013            ShorthandAmbientModuleDecl = 61,
13014            WildcardsInModuleName = 62,
13015            UMDModuleDefinition = 63,
13016            NewTarget = 64,
13017            DefiniteAssignment = 65,
13018            Prototype = 66,
13019            GlobalThis = 67,
13020            UtilityType = 68,
13021            PropertyDeclOnFunction = 69,
13022            FunctionApplyCall = 70,
13023            FunctionBind = 71,
13024            ConstAssertion = 72,
13025            ImportAssertion = 73,
13026            SpreadOperator = 74,
13027            LimitedStdLibApi = 75,
13028            ErrorSuppression = 76,
13029            StrictDiagnostic = 77,
13030            ImportAfterStatement = 78,
13031            EsObjectType = 79,
13032            SendableClassInheritance = 80,
13033            SendablePropType = 81,
13034            SendableDefiniteAssignment = 82,
13035            SendableGenericTypes = 83,
13036            SendableCapturedVars = 84,
13037            SendableClassDecorator = 85,
13038            SendableObjectInitialization = 86,
13039            SendableComputedPropName = 87,
13040            SendableAsExpr = 88,
13041            SharedNoSideEffectImport = 89,
13042            SharedModuleExports = 90,
13043            SharedModuleNoWildcardExport = 91,
13044            NoTsImportEts = 92,
13045            SendableTypeInheritance = 93,
13046            SendableTypeExported = 94,
13047            NoTsReExportEts = 95,
13048            NoNamespaceImportEtsToTs = 96,
13049            NoSideEffectImportEtsToTs = 97,
13050            SendableExplicitFieldType = 98,
13051            SendableFunctionImportedVariables = 99,
13052            SendableFunctionDecorator = 100,
13053            SendableTypeAliasDecorator = 101,
13054            SendableTypeAliasDeclaration = 102,
13055            SendableFunctionAssignment = 103,
13056            SendableFunctionOverloadDecorator = 104,
13057            SendableFunctionProperty = 105,
13058            SendableFunctionAsExpr = 106,
13059            SendableDecoratorLimited = 107,
13060            SharedModuleExportsWarning = 108,
13061            SendableBetaCompatible = 109,
13062            SendablePropTypeWarning = 110,
13063            TaskpoolFunctionArg = 111,
13064            ObjectLiteralAmbiguity = 112,
13065            LAST_ID = 113
13066        }
13067        class FaultAttributes {
13068            cookBookRef: number;
13069            migratable: boolean;
13070            severity: ProblemSeverity;
13071            constructor(cookBookRef: number, migratable?: boolean, severity?: ProblemSeverity);
13072        }
13073        const faultsAttrs: FaultAttributes[];
13074        function setTypeChecker(tsTypeChecker: TypeChecker): void;
13075        function clearTypeChecker(): void;
13076        function setTestMode(tsTestMode: boolean): void;
13077        function setMixCompile(isMixCompile: boolean): void;
13078        function getStartPos(nodeOrComment: Node | CommentRange): number;
13079        function getEndPos(nodeOrComment: Node | CommentRange): number;
13080        function getHighlightRange(nodeOrComment: Node | CommentRange, faultId: number): [
13081            number,
13082            number
13083        ];
13084        function getVarDeclarationHighlightRange(nodeOrComment: Node | CommentRange): [
13085            number,
13086            number
13087        ] | undefined;
13088        function getCatchWithUnsupportedTypeHighlightRange(nodeOrComment: Node | CommentRange): [
13089            number,
13090            number
13091        ] | undefined;
13092        function getForInStatementHighlightRange(nodeOrComment: Node | CommentRange): [
13093            number,
13094            number
13095        ] | undefined;
13096        function getWithStatementHighlightRange(nodeOrComment: Node | CommentRange): [
13097            number,
13098            number
13099        ] | undefined;
13100        function getDeleteOperatorHighlightRange(nodeOrComment: Node | CommentRange): [
13101            number,
13102            number
13103        ] | undefined;
13104        function getTypeQueryHighlightRange(nodeOrComment: Node | CommentRange): [
13105            number,
13106            number
13107        ] | undefined;
13108        function getInstanceofUnsupportedHighlightRange(nodeOrComment: Node | CommentRange): [
13109            number,
13110            number
13111        ] | undefined;
13112        function getConstAssertionHighlightRange(nodeOrComment: Node | CommentRange): [
13113            number,
13114            number
13115        ] | undefined;
13116        function getLimitedReturnTypeInferenceHighlightRange(nodeOrComment: Node | CommentRange): [
13117            number,
13118            number
13119        ] | undefined;
13120        function getLocalFunctionHighlightRange(nodeOrComment: Node | CommentRange): [
13121            number,
13122            number
13123        ] | undefined;
13124        function getFunctionApplyCallHighlightRange(nodeOrComment: Node | CommentRange): [
13125            number,
13126            number
13127        ] | undefined;
13128        function getDeclWithDuplicateNameHighlightRange(nodeOrComment: Node | CommentRange): [
13129            number,
13130            number
13131        ] | undefined;
13132        function getObjectLiteralNoContextTypeHighlightRange(nodeOrComment: Node | CommentRange): [
13133            number,
13134            number
13135        ] | undefined;
13136        function getClassExpressionHighlightRange(nodeOrComment: Node | CommentRange): [
13137            number,
13138            number
13139        ] | undefined;
13140        function getMultipleStaticBlocksHighlightRange(nodeOrComment: Node | CommentRange): [
13141            number,
13142            number
13143        ] | undefined;
13144        function getSendableDefiniteAssignmentHighlightRange(nodeOrComment: Node | CommentRange): [
13145            number,
13146            number
13147        ] | undefined;
13148        function getKeywordHighlightRange(nodeOrComment: Node | CommentRange, keyword: string): [
13149            number,
13150            number
13151        ];
13152        function isAssignmentOperator(tsBinOp: BinaryOperatorToken): boolean;
13153        function isType(tsType: TypeNode | undefined, checkType: string): boolean;
13154        function entityNameToString(name: EntityName): string;
13155        function isNumberLikeType(tsType: Type): boolean;
13156        function isBooleanLikeType(tsType: Type): boolean;
13157        function isStringLikeType(tsType: Type): boolean;
13158        function isStringType(tsType: Type): boolean;
13159        function isPrimitiveEnumMemberType(type: Type, primitiveType: TypeFlags): boolean;
13160        function unwrapParenthesizedType(tsType: TypeNode): TypeNode;
13161        function findParentIf(asExpr: AsExpression): IfStatement | null;
13162        function isDestructuringAssignmentLHS(tsExpr: ArrayLiteralExpression | ObjectLiteralExpression): boolean;
13163        function isEnumType(tsType: Type): boolean;
13164        function isEnum(tsSymbol: Symbol): boolean;
13165        function isEnumMemberType(tsType: Type): boolean;
13166        function isObjectLiteralType(tsType: Type): boolean;
13167        function hasModifier(tsModifiers: readonly Modifier[] | undefined, tsModifierKind: number): boolean;
13168        function unwrapParenthesized(tsExpr: Expression): Expression;
13169        function followIfAliased(sym: Symbol): Symbol;
13170        function trueSymbolAtLocation(node: Node): Symbol | undefined;
13171        function clearTrueSymbolAtLocationCache(): void;
13172        function isTypeDeclSyntaxKind(kind: SyntaxKind): boolean;
13173        function symbolHasDuplicateName(symbol: Symbol, tsDeclKind: SyntaxKind): boolean;
13174        function isReferenceType(tsType: Type): boolean;
13175        function isPrimitiveType(type: Type): boolean;
13176        function isPrimitiveLiteralType(type: Type): boolean;
13177        function isPurePrimitiveLiteralType(type: Type): boolean;
13178        function isTypeSymbol(symbol: Symbol | undefined): boolean;
13179        function isGenericArrayType(tsType: Type): tsType is TypeReference;
13180        function isReadonlyArrayType(tsType: Type): boolean;
13181        function isConcatArrayType(tsType: Type): boolean;
13182        function isArrayLikeType(tsType: Type): boolean;
13183        function isTypedArray(tsType: Type, allowTypeArrays: string[]): boolean;
13184        function isArray(tsType: Type): boolean;
13185        function isCollectionArrayType(tsType: Type): boolean;
13186        function isIndexableArray(tsType: Type): boolean;
13187        function isTuple(tsType: Type): boolean;
13188        function isOrDerivedFrom(tsType: Type, checkType: CheckType, checkedBaseTypes?: Set<Type>): boolean;
13189        function isTypeReference(tsType: Type): tsType is TypeReference;
13190        function isNullType(tsTypeNode: TypeNode): boolean;
13191        function isThisOrSuperExpr(tsExpr: Expression): boolean;
13192        function isPrototypeSymbol(symbol: Symbol | undefined): boolean;
13193        function isFunctionSymbol(symbol: Symbol | undefined): boolean;
13194        function isInterfaceType(tsType: Type | undefined): boolean;
13195        function isAnyType(tsType: Type): tsType is TypeReference;
13196        function isUnknownType(tsType: Type): boolean;
13197        function isUnsupportedType(tsType: Type): boolean;
13198        function isUnsupportedUnionType(tsType: Type): boolean;
13199        function isFunctionOrMethod(tsSymbol: Symbol | undefined): boolean;
13200        function isMethodAssignment(tsSymbol: Symbol | undefined): boolean;
13201        function getDeclaration(tsSymbol: Symbol | undefined): Declaration | undefined;
13202        function isValidEnumMemberInit(tsExpr: Expression): boolean;
13203        function isCompileTimeExpression(tsExpr: Expression): boolean;
13204        function isConst(tsNode: Node): boolean;
13205        function isNumberConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
13206        function isIntegerConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
13207        function isStringConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression): boolean;
13208        function relatedByInheritanceOrIdentical(typeA: Type, typeB: Type): boolean;
13209        function reduceReference(t: Type): Type;
13210        function needToDeduceStructuralIdentity(lhsType: Type, rhsType: Type, rhsExpr: Expression, isStrict?: boolean): boolean;
13211        function needStrictMatchType(lhsType: Type, rhsType: Type): boolean;
13212        function hasPredecessor(node: Node, predicate: (node: Node) => boolean): boolean;
13213        function processParentTypes(parentTypes: NodeArray<ExpressionWithTypeArguments>, typeB: Type, processInterfaces: boolean): boolean;
13214        function isObject(tsType: Type): boolean;
13215        function logTscDiagnostic(diagnostics: readonly Diagnostic[], log: (message: any, ...args: any[]) => void): void;
13216        function encodeProblemInfo(problem: ProblemInfo): string;
13217        function decodeAutofixInfo(info: string): AutofixInfo;
13218        function isCallToFunctionWithOmittedReturnType(tsExpr: Expression): boolean;
13219        function validateObjectLiteralType(type: Type | undefined): boolean;
13220        function isStructDeclarationKind(kind: SyntaxKind): boolean;
13221        function isStructDeclaration(node: Node): boolean;
13222        function isStructObjectInitializer(objectLiteral: ObjectLiteralExpression): boolean;
13223        function hasMethods(type: Type): boolean;
13224        function checkTypeSet(typeSet: Type, predicate: CheckType): boolean;
13225        function getNonNullableType(t: Type): Type;
13226        function isObjectLiteralAssignable(lhsType: Type | undefined, rhsExpr: ObjectLiteralExpression): boolean;
13227        function isLiteralType(type: Type): boolean;
13228        function validateFields(objectType: Type, objectLiteral: ObjectLiteralExpression): boolean;
13229        function isSupportedType(typeNode: TypeNode): boolean;
13230        function isStruct(symbol: Symbol): boolean;
13231        function getParentSymbolName(symbol: Symbol): string | undefined;
13232        function isGlobalSymbol(symbol: Symbol): boolean;
13233        function isSymbolAPI(symbol: Symbol): boolean;
13234        function isStdSymbol(symbol: Symbol): boolean;
13235        function isSymbolIterator(symbol: Symbol): boolean;
13236        function isSymbolIteratorExpression(expr: Expression): boolean;
13237        function isDefaultImport(importSpec: ImportSpecifier): boolean;
13238        function hasAccessModifier(decl: Declaration): boolean;
13239        function getModifier(modifiers: readonly Modifier[] | undefined, modifierKind: SyntaxKind): Modifier | undefined;
13240        function getAccessModifier(modifiers: readonly Modifier[] | undefined): Modifier | undefined;
13241        function isStdRecordType(type: Type): boolean;
13242        function isStdMapType(type: Type): boolean;
13243        function isStdErrorType(type: Type): boolean;
13244        function isStdPartialType(type: Type): boolean;
13245        function isStdRequiredType(type: Type): boolean;
13246        function isStdReadonlyType(type: Type): boolean;
13247        function isLibraryType(type: Type): boolean;
13248        function hasLibraryType(node: Node): boolean;
13249        function isLibrarySymbol(sym: Symbol | undefined): boolean;
13250        function srcFilePathContainsDirectory(srcFile: SourceFile, dir: string): boolean;
13251        function pathContainsDirectory(targetPath: string, dir: string): boolean;
13252        function getScriptKind(srcFile: SourceFile): ScriptKind;
13253        function isStdLibraryType(type: Type): boolean;
13254        function isStdLibrarySymbol(sym: Symbol | undefined): boolean;
13255        function isIntrinsicObjectType(type: Type): boolean;
13256        function isOhModulesEtsSymbol(sym: Symbol | undefined): boolean;
13257        function isDynamicType(type: Type | undefined): boolean | undefined;
13258        function isObjectType(type: Type): type is ObjectType;
13259        function isAnonymous(type: Type): boolean;
13260        function isDynamicLiteralInitializer(expr: Expression): boolean;
13261        function isEsObjectType(typeNode: TypeNode | undefined): boolean;
13262        function isInsideBlock(node: Node): boolean;
13263        function isValueAssignableToESObject(node: Node): boolean;
13264        function getVariableDeclarationTypeNode(node: Node): TypeNode | undefined;
13265        function getSymbolDeclarationTypeNode(sym: Symbol): TypeNode | undefined;
13266        function hasEsObjectType(node: Node): boolean;
13267        function symbolHasEsObjectType(sym: Symbol): boolean;
13268        function isEsObjectSymbol(sym: Symbol): boolean;
13269        function isAnonymousType(type: Type): boolean;
13270        function getSymbolOfCallExpression(callExpr: CallExpression): Symbol | undefined;
13271        function typeIsRecursive(topType: Type, type?: Type | undefined): boolean;
13272        function getTypeOrTypeConstraintAtLocation(expr: Expression): Type;
13273        function isStdBigIntType(type: Type): boolean;
13274        function isStdNumberType(type: Type): boolean;
13275        function isStdBooleanType(type: Type): boolean;
13276        function isEnumStringLiteral(expr: Expression): boolean;
13277        function isValidComputedPropertyName(computedProperty: ComputedPropertyName, isRecordObjectInitializer?: boolean): boolean;
13278        function isAllowedIndexSignature(node: IndexSignatureDeclaration): boolean;
13279        function isArkTSCollectionsArrayLikeType(type: Type): boolean;
13280        function isArkTSCollectionsClassOrInterfaceDeclaration(decl: Node): boolean;
13281        function getDecoratorName(decorator: Decorator): string;
13282        function unwrapParenthesizedTypeNode(typeNode: TypeNode): TypeNode;
13283        function isSendableTypeNode(typeNode: TypeNode, isShared?: boolean): boolean;
13284        function isSendableType(type: Type): boolean;
13285        function isShareableType(tsType: Type): boolean;
13286        function isSendableClassOrInterface(type: Type): boolean;
13287        function typeContainsSendableClassOrInterface(type: Type): boolean;
13288        function typeContainsNonSendableClassOrInterface(type: Type): boolean;
13289        function isConstEnum(sym: Symbol | undefined): boolean;
13290        function isSendableUnionType(type: UnionType): boolean;
13291        function hasSendableDecorator(decl: ClassDeclaration | FunctionDeclaration | TypeAliasDeclaration): boolean;
13292        function getNonSendableDecorators(decl: ClassDeclaration | FunctionDeclaration | TypeAliasDeclaration): Decorator[] | undefined;
13293        function getSendableDecorator(decl: ClassDeclaration | FunctionDeclaration | TypeAliasDeclaration): Decorator | undefined;
13294        function getDecoratorsIfInSendableClass(declaration: HasDecorators): readonly Decorator[] | undefined;
13295        function isISendableInterface(type: Type): boolean;
13296        function isSharedModule(sourceFile: SourceFile): boolean;
13297        function getDeclarationNode(node: Node): Declaration | undefined;
13298        function isShareableEntity(node: Node): boolean;
13299        function isSendableClassOrInterfaceEntity(node: Node): boolean;
13300        function isInImportWhiteList(resolvedModule: ResolvedModuleFull): boolean;
13301        function hasSendableDecoratorFunctionOverload(decl: FunctionDeclaration): boolean;
13302        function isSendableFunction(type: Type): boolean;
13303        function isSendableTypeAlias(type: Type): boolean;
13304        function hasSendableTypeAlias(type: Type): boolean;
13305        function isNonSendableFunctionTypeAlias(type: Type): boolean;
13306        function isWrongSendableFunctionAssignment(lhsType: Type, rhsType: Type): boolean;
13307        function searchFileExportDecl(sourceFile: SourceFile, targetDecls?: SyntaxKind[]): Set<Node>;
13308        function clearUtilsGlobalvariables(): void;
13309        function isTaskPoolApi(exprSym: Symbol | undefined, node: Node): boolean;
13310        function isConcurrentFunction(type: Type): boolean;
13311        function hasConcurrentDecoratorFunctionOverload(decl: FunctionDeclaration): boolean;
13312        function hasUseConcurrentDirective(decl: FunctionDeclaration): boolean;
13313        function isDeclarationSymbol(sym: Symbol | undefined): boolean;
13314        function checkTaskpoolFunction(arg: Expression, argType: Type, argSym: Symbol | undefined): boolean;
13315        function getTypeAtLocationForLinter(node: Node): Type;
13316        const PROPERTY_HAS_NO_INITIALIZER_ERROR_CODE = 2564;
13317        const NON_INITIALIZABLE_PROPERTY_DECORATORS: string[];
13318        const NON_INITIALIZABLE_PROPERTY_CLASS_DECORATORS: string[];
13319        const LIMITED_STANDARD_UTILITY_TYPES: string[];
13320        const ALLOWED_STD_SYMBOL_API: string[];
13321        const ARKTS_IGNORE_DIRS: string[];
13322        const ARKTS_IGNORE_FILES: string[];
13323        const ARKTS_IGNORE_DIRS_OH_MODULES = "oh_modules";
13324        const SENDABLE_DECORATOR = "Sendable";
13325        const SENDABLE_INTERFACE = "ISendable";
13326        const PROMISE = "Promise";
13327        const SENDABLE_DECORATOR_NODES: SyntaxKind[];
13328        const SENDABLE_CLOSURE_DECLS: SyntaxKind[];
13329        const ARKTS_COLLECTIONS_D_ETS = "@arkts.collections.d.ets";
13330        const COLLECTIONS_NAMESPACE = "collections";
13331        const ARKTS_LANG_D_ETS = "@arkts.lang.d.ets";
13332        const LANG_NAMESPACE = "lang";
13333        const ISENDABLE_TYPE = "ISendable";
13334        const USE_SHARED = "use shared";
13335        const D_TS = ".d.ts";
13336        const TASKPOOL = "taskpool";
13337        const TASKGROUP = "TaskGroup";
13338        const TASKPOOL_API: string[];
13339        const TASK_LIST: string[];
13340        const CONCURRENT_DECORATOR = "Concurrent";
13341        const USE_CONCURRENT = "use concurrent";
13342        type CheckType = ((t: Type) => boolean);
13343        const ES_OBJECT = "ESObject";
13344        const LIMITED_STD_GLOBAL_FUNC: string[];
13345        const LIMITED_STD_OBJECT_API: string[];
13346        const LIMITED_STD_REFLECT_API: string[];
13347        const LIMITED_STD_PROXYHANDLER_API: string[];
13348        const FUNCTION_HAS_NO_RETURN_ERROR_CODE = 2366;
13349        const NON_RETURN_FUNCTION_DECORATORS: string[];
13350        const STANDARD_LIBRARIES: string[];
13351        const TYPED_ARRAYS: string[];
13352        const TYPED_COLLECTIONS: string[];
13353        function shouldAutofix(node: Node, faultID: FaultID): boolean;
13354        function fixLiteralAsPropertyName(node: Node): Autofix[] | undefined;
13355        function fixPropertyAccessByIndex(node: Node): Autofix[] | undefined;
13356        function fixFunctionExpression(funcExpr: FunctionExpression, params?: NodeArray<ParameterDeclaration>, retType?: TypeNode | undefined): Autofix;
13357        function fixReturnType(funcLikeDecl: FunctionLikeDeclaration, typeNode: TypeNode): Autofix;
13358        function fixCtorParameterProperties(ctorDecl: ConstructorDeclaration, paramTypes: TypeNode[]): Autofix[] | undefined;
13359        const AUTOFIX_ALL: AutofixInfo;
13360        const autofixInfo: AutofixInfo[];
13361        interface Autofix {
13362            replacementText: string;
13363            start: number;
13364            end: number;
13365        }
13366        class LinterConfig {
13367            static nodeDesc: string[];
13368            static tsSyntaxKindNames: string[];
13369            static initStatic(): void;
13370            static terminalTokens: Set<SyntaxKind>;
13371            static incrementOnlyTokens: ESMap<SyntaxKind, FaultID>;
13372        }
13373        interface ProblemInfo {
13374            line: number;
13375            column: number;
13376            start: number;
13377            end: number;
13378            type: string;
13379            severity: number;
13380            problem: string;
13381            suggest: string;
13382            rule: string;
13383            ruleTag: number;
13384            autofixable: boolean;
13385            autofix?: Autofix[];
13386        }
13387        class TypeScriptLinter {
13388            private sourceFile;
13389            private tscStrictDiagnostics?;
13390            static ideMode: boolean;
13391            static strictMode: boolean;
13392            static logTscErrors: boolean;
13393            static warningsAsErrors: boolean;
13394            static lintEtsOnly: boolean;
13395            static totalVisitedNodes: number;
13396            static nodeCounters: number[];
13397            static lineCounters: number[];
13398            static totalErrorLines: number;
13399            static errorLineNumbersString: string;
13400            static totalWarningLines: number;
13401            static warningLineNumbersString: string;
13402            static reportDiagnostics: boolean;
13403            static problemsInfos: ProblemInfo[];
13404            static filteredDiagnosticMessages: DiagnosticMessageChain[];
13405            static sharedModulesCache: ESMap<string, boolean>;
13406            static strictDiagnosticCache: Set<Diagnostic>;
13407            static unknowDiagnosticCache: Set<Diagnostic>;
13408            static initGlobals(): void;
13409            static initStatic(): void;
13410            static tsTypeChecker: TypeChecker;
13411            currentErrorLine: number;
13412            currentWarningLine: number;
13413            staticBlocks: Set<string>;
13414            skipArkTSStaticBlocksCheck: boolean;
13415            private fileExportDeclCaches?;
13416            private compatibleSdkVersionStage;
13417            private compatibleSdkVersion;
13418            private mixCompile;
13419            constructor(sourceFile: SourceFile, tsProgram: Program, tscStrictDiagnostics?: ts.Map<ts.Diagnostic[]> | undefined);
13420            static clearTsTypeChecker(): void;
13421            static clearQualifiedNameCache(): void;
13422            readonly handlersMap: ts.ESMap<ts.SyntaxKind, {
13423                handler: (node: Node) => void;
13424                name: string;
13425            }>;
13426            incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void;
13427            private forEachNodeInSubtree;
13428            private visitSourceFile;
13429            private countInterfaceExtendsDifferentPropertyTypes;
13430            private countDeclarationsWithDuplicateName;
13431            private countClassMembersWithDuplicateName;
13432            private static scopeContainsThis;
13433            private isPrototypePropertyAccess;
13434            private interfaceInheritanceLint;
13435            private lintForInterfaceExtendsDifferentPorpertyTypes;
13436            private handleObjectLiteralExpression;
13437            private handleUnionTypeObjectLiteral;
13438            private getSourceFileFromType;
13439            private handleArrayLiteralExpression;
13440            private handleParameter;
13441            private handleEnumDeclaration;
13442            private handleInterfaceDeclaration;
13443            private handleThrowStatement;
13444            private handleForStatement;
13445            private handleForInStatement;
13446            private handleForOfStatement;
13447            private handleImportDeclaration;
13448            private handleSharedModuleNoSideEffectImport;
13449            private static inSharedModule;
13450            private handlePropertyAccessExpression;
13451            private handleTaskpooApiForNewExpression;
13452            private handlePropertyDeclaration;
13453            private handleSendableClassProperty;
13454            private checkTypeAliasInSendableScope;
13455            private isNoneSendableTypeAlias;
13456            private handlePropertyAssignment;
13457            private handlePropertySignature;
13458            private handleSendableInterfaceProperty;
13459            private filterOutDecoratorsDiagnostics;
13460            private static isClassLikeOrIface;
13461            private handleFunctionExpression;
13462            private handleArrowFunction;
13463            private handleFunctionDeclaration;
13464            private handleMissingReturnType;
13465            private hasLimitedTypeInferenceFromReturnExpr;
13466            private checkReturnExpression;
13467            private isValidTypeForUnaryArithmeticOperator;
13468            private handlePrefixUnaryExpression;
13469            private handleBinaryExpression;
13470            private handleVariableDeclarationList;
13471            private handleVariableDeclaration;
13472            private handleEsObjectAssignment;
13473            private handleCatchClause;
13474            private handleClassDeclaration;
13475            private scanCapturedVarsInSendableScope;
13476            private checkLocalDecl;
13477            private checkLocalDeclWithSendableClosure;
13478            private checkIsTopClosure;
13479            private checkNamespaceImportVar;
13480            isFileExportDecl(decl: Declaration): boolean;
13481            private checkClassDeclarationHeritageClause;
13482            private isValidSendableClassExtends;
13483            private checkSendableTypeParameter;
13484            private processClassStaticBlocks;
13485            private handleModuleDeclaration;
13486            private handleTypeAliasDeclaration;
13487            private handleImportClause;
13488            private handleImportSpecifier;
13489            private handleNamespaceImport;
13490            private handleTypeAssertionExpression;
13491            private handleMethodDeclaration;
13492            private handleMethodSignature;
13493            private handleIdentifier;
13494            private isAllowedClassValueContext;
13495            private handleRestrictedValues;
13496            private identiferUseInValueContext;
13497            private isEnumPropAccess;
13498            private isElementAcessAllowed;
13499            private handleElementAccessExpression;
13500            private handleEnumMember;
13501            private handleExportAssignment;
13502            private handleCallExpression;
13503            private handleTaskpoolApiForCallExpression;
13504            private handleEtsComponentExpression;
13505            private handleImportCall;
13506            private handleRequireCall;
13507            private handleGenericCallWithNoTypeArgs;
13508            private static readonly listFunctionApplyCallApis;
13509            private static readonly listFunctionBindApis;
13510            private handleFunctionApplyBindPropCall;
13511            private handleStructIdentAndUndefinedInArgs;
13512            private static LimitedApis;
13513            private handleStdlibAPICall;
13514            private handleLibraryTypeCall;
13515            private handleNewExpression;
13516            private handleSendableGenericTypes;
13517            private handleAsExpression;
13518            isEsObjectPossiblyAllowed(typeRef: TypeReferenceNode): boolean;
13519            isObjectLiteralFromFunc(node: Node, isPromise?: boolean): boolean;
13520            private handleTypeReference;
13521            private checkSendableTypeArguments;
13522            private handleMetaProperty;
13523            private handleSpreadOp;
13524            private handleConstructSignature;
13525            private handleExpressionWithTypeArguments;
13526            private handleComputedPropertyName;
13527            private isSendableCompPropName;
13528            private handleGetAccessor;
13529            private handleSetAccessor;
13530            private handleDeclarationInferredType;
13531            private handleDefiniteAssignmentAssertion;
13532            private validatedTypesSet;
13533            private checkAnyOrUnknownChildNode;
13534            private handleInferredObjectreference;
13535            private validateDeclInferredType;
13536            private processNoCheckEntry;
13537            private reportThisKeywordsInScope;
13538            private handleCommentDirectives;
13539            private handleClassStaticBlockDeclaration;
13540            private handleIndexSignature;
13541            lint(): void;
13542            private handleExportKeyword;
13543            private handleExportDeclaration;
13544            private handleReturnStatement;
13545            /**
13546            * 'arkts-no-structural-typing' check was missing in some scenarios,
13547            * in order not to cause incompatibility,
13548            * only need to strictly match the type of filling the check again
13549            */
13550            private checkAssignmentMatching;
13551            private handleDecorator;
13552            private isSendableDecoratorValid;
13553        }
13554        interface KitSymbol {
13555            source: string;
13556            bindings: string;
13557        }
13558        type KitSymbols = Record<string, KitSymbol>;
13559        interface KitInfo {
13560            symbols?: KitSymbols;
13561        }
13562        class InteropTypescriptLinter {
13563            private sourceFile;
13564            private isInSdk;
13565            static strictMode: boolean;
13566            static totalVisitedNodes: number;
13567            static nodeCounters: number[];
13568            static lineCounters: number[];
13569            static totalErrorLines: number;
13570            static errorLineNumbersString: string;
13571            static totalWarningLines: number;
13572            static warningLineNumbersString: string;
13573            static reportDiagnostics: boolean;
13574            static problemsInfos: ProblemInfo[];
13575            static initGlobals(): void;
13576            static initStatic(): void;
13577            static tsTypeChecker: TypeChecker;
13578            static etsLoaderPath?: string;
13579            static kitInfos: Map<KitInfo>;
13580            private KIT;
13581            private D_TS;
13582            private D_ETS;
13583            private ETS;
13584            private SDK_PATH;
13585            currentErrorLine: number;
13586            currentWarningLine: number;
13587            constructor(sourceFile: SourceFile, tsProgram: Program, isInSdk: boolean);
13588            static clearTsTypeChecker(): void;
13589            readonly handlersMap: ts.ESMap<SyntaxKind, (node: Node) => void>;
13590            incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void;
13591            private forEachNodeInSubtree;
13592            private visitSourceFile;
13593            private handleImportDeclaration;
13594            private checkSendableClassorISendable;
13595            private checkKitImportClause;
13596            private checkImportClause;
13597            private allowInSdkImportSendable;
13598            private handleClassDeclaration;
13599            private checkClassOrInterfaceDeclarationHeritageClause;
13600            private handleInterfaceDeclaration;
13601            private handleNewExpression;
13602            private handleSendableGenericTypes;
13603            private handleObjectLiteralExpression;
13604            private handleArrayLiteralExpression;
13605            private handleAsExpression;
13606            private handleExportDeclaration;
13607            private handleExportAssignment;
13608            private initKitInfos;
13609            private getKitModuleFileNames;
13610            lint(): void;
13611        }
13612        class TSCCompiledProgram {
13613            private diagnosticsExtractor;
13614            constructor(program: BuilderProgram);
13615            getProgram(): Program;
13616            getBuilderProgram(): BuilderProgram;
13617            getStrictDiagnostics(sourceFile: SourceFile): Diagnostic[];
13618            doAllGetDiagnostics(): void;
13619        }
13620        function translateDiag(srcFile: SourceFile, problemInfo: ProblemInfo): Diagnostic;
13621        function runArkTSLinter(tsBuilderProgram: BuilderProgram, srcFile?: SourceFile, buildInfoWriteFile?: WriteFileCallback, arkTSVersion?: string): Diagnostic[];
13622    }
13623    enum TimePhase {
13624        START = "start",
13625        GET_PROGRAM = "getProgram(not ArkTSLinter)",
13626        UPDATE_ERROR_FILE = "updateErrorFile",
13627        INIT = "init",
13628        STRICT_PROGRAM_GET_SEMANTIC_DIAGNOSTICS = "strictProgramGetSemanticDiagnostics",
13629        NON_STRICT_PROGRAM_GET_SEMANTIC_DIAGNOSTICS = "nonStrictProgramGetSemanticDiagnostics",
13630        NON_STRICT_PROGRAM_GET_SYNTACTIC_DIAGNOSTICS = "nonStrictProgramGetSyntacticDiagnostics",
13631        GET_TSC_DIAGNOSTICS = "getTscDiagnostics",
13632        EMIT_BUILD_INFO = "emitBuildInfo",
13633        LINT = "lint"
13634    }
13635    class ArkTSLinterTimePrinter {
13636        private static instance?;
13637        private arkTSTimePrintSwitch;
13638        private timeMap;
13639        private constructor();
13640        static getInstance(): ArkTSLinterTimePrinter;
13641        static destroyInstance(): void;
13642        setArkTSTimePrintSwitch(arkTSTimePrintSwitch: boolean): void;
13643        appendTime(key: string): void;
13644        private formatMapAsTable;
13645        printTimes(): void;
13646    }
13647}
13648export = ts;