touchdesigner-mcp-server 1.4.9 → 1.4.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/api/customInstance.d.ts +5 -0
  2. package/dist/cli.d.ts +50 -0
  3. package/dist/core/compatibility.d.ts +102 -0
  4. package/dist/core/constants.d.ts +29 -0
  5. package/dist/core/errorHandling.d.ts +18 -0
  6. package/dist/core/logger.d.ts +24 -0
  7. package/dist/core/result.d.ts +25 -0
  8. package/dist/core/version.d.ts +21 -0
  9. package/dist/features/prompts/handlers/td_prompts.d.ts +6 -0
  10. package/dist/features/prompts/index.d.ts +1 -0
  11. package/dist/features/prompts/register.d.ts +6 -0
  12. package/dist/features/tools/handlers/tdTools.d.ts +4 -0
  13. package/dist/features/tools/index.d.ts +3 -0
  14. package/dist/features/tools/metadata/touchDesignerToolMetadata.d.ts +29 -0
  15. package/dist/features/tools/presenter/classListFormatter.d.ts +29 -0
  16. package/dist/features/tools/presenter/index.d.ts +18 -0
  17. package/dist/features/tools/presenter/markdownRenderer.d.ts +3 -0
  18. package/dist/features/tools/presenter/moduleHelpFormatter.d.ts +12 -0
  19. package/dist/features/tools/presenter/nodeDetailsFormatter.d.ts +16 -0
  20. package/dist/features/tools/presenter/nodeErrorsFormatter.d.ts +4 -0
  21. package/dist/features/tools/presenter/nodeListFormatter.d.ts +22 -0
  22. package/dist/features/tools/presenter/operationFormatter.d.ts +16 -0
  23. package/dist/features/tools/presenter/presenter.d.ts +10 -0
  24. package/dist/features/tools/presenter/responseFormatter.d.ts +83 -0
  25. package/dist/features/tools/presenter/scriptResultFormatter.d.ts +23 -0
  26. package/dist/features/tools/presenter/toolMetadataFormatter.d.ts +7 -0
  27. package/dist/features/tools/register.d.ts +7 -0
  28. package/dist/features/tools/toolDefinitions.d.ts +38 -0
  29. package/dist/features/tools/types.d.ts +43 -0
  30. package/dist/features/tools/utils/toolUtils.d.ts +0 -0
  31. package/dist/gen/endpoints/TouchDesignerAPI.d.ts +510 -0
  32. package/dist/gen/mcp/touchDesignerAPI.zod.d.ts +253 -0
  33. package/dist/index.d.ts +3 -0
  34. package/dist/server/connectionManager.d.ts +25 -0
  35. package/dist/server/touchDesignerServer.d.ts +59 -0
  36. package/dist/tdClient/index.d.ts +7 -0
  37. package/dist/tdClient/touchDesignerClient.d.ts +167 -0
  38. package/dist/transport/config.d.ts +96 -0
  39. package/dist/transport/expressHttpManager.d.ts +86 -0
  40. package/dist/transport/factory.d.ts +81 -0
  41. package/dist/transport/index.d.ts +15 -0
  42. package/dist/transport/sessionManager.d.ts +180 -0
  43. package/dist/transport/transportRegistry.d.ts +92 -0
  44. package/dist/transport/validator.d.ts +43 -0
  45. package/package.json +1 -1
@@ -0,0 +1,43 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Shared Zod schemas for MCP tool formatting parameters.
4
+ * These stay on the TypeScript side only and are not sent to TouchDesigner.
5
+ */
6
+ export declare const detailLevelSchema: z.ZodEnum<{
7
+ detailed: "detailed";
8
+ minimal: "minimal";
9
+ summary: "summary";
10
+ }>;
11
+ export declare const limitSchema: z.ZodNumber;
12
+ export declare const presenterFormatSchema: z.ZodEnum<{
13
+ json: "json";
14
+ yaml: "yaml";
15
+ markdown: "markdown";
16
+ }>;
17
+ export declare const detailOnlyFormattingSchema: z.ZodObject<{
18
+ detailLevel: z.ZodOptional<z.ZodEnum<{
19
+ detailed: "detailed";
20
+ minimal: "minimal";
21
+ summary: "summary";
22
+ }>>;
23
+ responseFormat: z.ZodOptional<z.ZodEnum<{
24
+ json: "json";
25
+ yaml: "yaml";
26
+ markdown: "markdown";
27
+ }>>;
28
+ }, z.core.$strip>;
29
+ export declare const formattingOptionsSchema: z.ZodObject<{
30
+ detailLevel: z.ZodOptional<z.ZodEnum<{
31
+ detailed: "detailed";
32
+ minimal: "minimal";
33
+ summary: "summary";
34
+ }>>;
35
+ limit: z.ZodOptional<z.ZodNumber>;
36
+ responseFormat: z.ZodOptional<z.ZodEnum<{
37
+ json: "json";
38
+ yaml: "yaml";
39
+ markdown: "markdown";
40
+ }>>;
41
+ }, z.core.$strip>;
42
+ export type DetailOnlyFormattingParams = z.input<typeof detailOnlyFormattingSchema>;
43
+ export type FormattingOptionsParams = z.input<typeof formattingOptionsSchema>;
File without changes
@@ -0,0 +1,510 @@
1
+ /**
2
+ * Generated by orval v8.17.0 🍺
3
+ * Do not edit manually.
4
+ * TouchDesigner API
5
+ * OpenAPI schema for generating TouchDesigner API client code
6
+ * OpenAPI spec version: 1.4.3
7
+ */
8
+ import { customInstance } from '../../api/customInstance.js';
9
+ import type { BodyType } from '../../api/customInstance.js';
10
+ export type TdNodeProperties = {
11
+ [key: string]: unknown;
12
+ };
13
+ /**
14
+ * Information about a TouchDesigner node
15
+ */
16
+ export interface TdNode {
17
+ id: number;
18
+ opType: string;
19
+ name: string;
20
+ path: string;
21
+ properties: TdNodeProperties;
22
+ }
23
+ export type TdNodeFamilyType = typeof TdNodeFamilyType[keyof typeof TdNodeFamilyType];
24
+ export declare const TdNodeFamilyType: {
25
+ readonly COMP: "COMP";
26
+ readonly CHOP: "CHOP";
27
+ readonly TOP: "TOP";
28
+ readonly SOP: "SOP";
29
+ readonly DAT: "DAT";
30
+ readonly MAT: "MAT";
31
+ readonly CUSTOM: "CUSTOM";
32
+ };
33
+ /**
34
+ * Single node error entry
35
+ */
36
+ export interface TdNodeError {
37
+ /** Absolute operator path that reported the error */
38
+ nodePath: string;
39
+ /** Name of the operator */
40
+ nodeName: string;
41
+ /** TouchDesigner operator type */
42
+ opType: string;
43
+ /** Error message reported by TouchDesigner */
44
+ message: string;
45
+ }
46
+ /**
47
+ * Aggregated node error report
48
+ */
49
+ export interface TdNodeErrorReport {
50
+ /** Path that was inspected for errors */
51
+ nodePath: string;
52
+ /** Name of the inspected node */
53
+ nodeName: string;
54
+ /** Operator type of the inspected node */
55
+ opType: string;
56
+ /** Number of errors that were discovered */
57
+ errorCount: number;
58
+ /** Convenience flag indicating if any errors were found */
59
+ hasErrors: boolean;
60
+ /** Collection of raw node errors */
61
+ errors: TdNodeError[];
62
+ }
63
+ /**
64
+ * Type of the Python entity
65
+ */
66
+ export type TdPythonClassDetailsType = typeof TdPythonClassDetailsType[keyof typeof TdPythonClassDetailsType];
67
+ export declare const TdPythonClassDetailsType: {
68
+ readonly class: "class";
69
+ readonly module: "module";
70
+ readonly function: "function";
71
+ readonly object: "object";
72
+ };
73
+ /**
74
+ * Information about a Python method
75
+ */
76
+ export interface TdPythonMethodInfo {
77
+ /** Method name */
78
+ name: string;
79
+ /** Method signature including parameters */
80
+ signature?: string;
81
+ /** Description of the method */
82
+ description?: string;
83
+ }
84
+ /**
85
+ * Current value of the property (if serializable)
86
+ * @nullable
87
+ */
88
+ export type TdPythonPropertyInfoValue = {
89
+ [key: string]: unknown;
90
+ } | null;
91
+ /**
92
+ * Information about a Python property
93
+ */
94
+ export interface TdPythonPropertyInfo {
95
+ /** Property name */
96
+ name: string;
97
+ /** Type of the property */
98
+ type: string;
99
+ /**
100
+ * Current value of the property (if serializable)
101
+ * @nullable
102
+ */
103
+ value?: TdPythonPropertyInfoValue;
104
+ }
105
+ /**
106
+ * Detailed information about a Python class or module
107
+ */
108
+ export interface TdPythonClassDetails {
109
+ /** Name of the class or module */
110
+ name: string;
111
+ /** Type of the Python entity */
112
+ type: TdPythonClassDetailsType;
113
+ /** Description of the class or module */
114
+ description?: string;
115
+ /** List of methods available in the class or module */
116
+ methods: TdPythonMethodInfo[];
117
+ /** List of properties available in the class or module */
118
+ properties: TdPythonPropertyInfo[];
119
+ }
120
+ /**
121
+ * Type of the Python entity
122
+ */
123
+ export type TdPythonClassInfoType = typeof TdPythonClassInfoType[keyof typeof TdPythonClassInfoType];
124
+ export declare const TdPythonClassInfoType: {
125
+ readonly class: "class";
126
+ readonly module: "module";
127
+ readonly function: "function";
128
+ readonly object: "object";
129
+ };
130
+ /**
131
+ * Information about a Python class or module available in TouchDesigner
132
+ */
133
+ export interface TdPythonClassInfo {
134
+ /** Name of the class or module */
135
+ name: string;
136
+ /** Type of the Python entity */
137
+ type: TdPythonClassInfoType;
138
+ /** Description of the class or module */
139
+ description?: string;
140
+ }
141
+ /**
142
+ * Raw Python help() output for a TouchDesigner module or class
143
+ */
144
+ export interface ModuleHelp {
145
+ /** Normalized module/class name the help text was generated for */
146
+ moduleName: string;
147
+ /** Captured output from Python's help() function */
148
+ helpText: string;
149
+ }
150
+ export type GetNodesParams = {
151
+ /**
152
+ * e.g., "/project1"
153
+ */
154
+ parentPath: string;
155
+ /**
156
+ * e.g., "null*"
157
+ */
158
+ pattern?: string;
159
+ /**
160
+ * Include node properties in response
161
+ */
162
+ includeProperties?: boolean;
163
+ };
164
+ /**
165
+ * @nullable
166
+ */
167
+ export type GetNodes200Data = {
168
+ /** Result of the execution */
169
+ nodes?: TdNode[];
170
+ } | null;
171
+ export type GetNodes200 = {
172
+ /** Whether the operation was successful */
173
+ success: boolean;
174
+ /** @nullable */
175
+ data: GetNodes200Data;
176
+ /**
177
+ * Error message if the operation was not successful
178
+ * @nullable
179
+ */
180
+ error: string | null;
181
+ };
182
+ export type CreateNodeBody = {
183
+ /** Path to the parent node (e.g., /project1) */
184
+ parentPath: string;
185
+ /** Type of the node to create (e.g., textTop) */
186
+ nodeType: string;
187
+ /** Name of the new node (optional) */
188
+ nodeName?: string;
189
+ };
190
+ /**
191
+ * @nullable
192
+ */
193
+ export type CreateNode200Data = {
194
+ /** Result of the execution */
195
+ result?: TdNode;
196
+ } | null;
197
+ export type CreateNode200 = {
198
+ /** Whether the operation was successful */
199
+ success: boolean;
200
+ /** @nullable */
201
+ data: CreateNode200Data;
202
+ /**
203
+ * Error message if the operation was not successful
204
+ * @nullable
205
+ */
206
+ error: string | null;
207
+ };
208
+ export type DeleteNodeParams = {
209
+ /**
210
+ * e.g., "/project1/geo1"
211
+ */
212
+ nodePath: string;
213
+ };
214
+ /**
215
+ * @nullable
216
+ */
217
+ export type DeleteNode200Data = {
218
+ /** Whether the node was successfully deleted */
219
+ deleted?: boolean;
220
+ /** Information about the deleted node */
221
+ node?: TdNode;
222
+ } | null;
223
+ export type DeleteNode200 = {
224
+ /** Whether the operation was successful */
225
+ success: boolean;
226
+ /** @nullable */
227
+ data: DeleteNode200Data;
228
+ /**
229
+ * Error message if the operation was not successful
230
+ * @nullable
231
+ */
232
+ error: string | null;
233
+ };
234
+ export type GetNodeDetailParams = {
235
+ /**
236
+ * e.g., "/project1/textTOP"
237
+ */
238
+ nodePath: string;
239
+ };
240
+ export type GetNodeDetail200 = {
241
+ /** Whether the operation was successful */
242
+ success: boolean;
243
+ data: TdNode | null;
244
+ /**
245
+ * Error message if the operation was not successful
246
+ * @nullable
247
+ */
248
+ error: string | null;
249
+ };
250
+ export type UpdateNodeBodyProperties = {
251
+ [key: string]: unknown;
252
+ };
253
+ export type UpdateNodeBody = {
254
+ /** Path to the node (e.g., /project1/null1) */
255
+ nodePath: string;
256
+ properties: UpdateNodeBodyProperties;
257
+ };
258
+ export type UpdateNode200DataFailedItem = {
259
+ /** Name of the property that failed to update */
260
+ name?: string;
261
+ /** Reason for the failure */
262
+ reason?: string;
263
+ };
264
+ /**
265
+ * @nullable
266
+ */
267
+ export type UpdateNode200Data = {
268
+ /** Path of the node that was updated */
269
+ path?: string;
270
+ /** List of property names that were successfully updated */
271
+ updated?: string[];
272
+ /** List of properties that failed to update */
273
+ failed?: UpdateNode200DataFailedItem[];
274
+ /** Summary message about the update operation */
275
+ message?: string;
276
+ } | null;
277
+ export type UpdateNode200 = {
278
+ /** Whether the update operation was successful */
279
+ success: boolean;
280
+ /** @nullable */
281
+ data: UpdateNode200Data;
282
+ /**
283
+ * Error message if the operation was not successful
284
+ * @nullable
285
+ */
286
+ error: string | null;
287
+ };
288
+ export type GetNodeErrorsParams = {
289
+ /**
290
+ * Absolute path to the node to inspect. e.g., "/project1/text1"
291
+ */
292
+ nodePath: string;
293
+ };
294
+ export type GetNodeErrors200 = {
295
+ /** Whether the operation was successful */
296
+ success: boolean;
297
+ data: TdNodeErrorReport;
298
+ /**
299
+ * Error message if the operation was not successful
300
+ * @nullable
301
+ */
302
+ error: string | null;
303
+ };
304
+ /**
305
+ * @nullable
306
+ */
307
+ export type GetTdPythonClasses200Data = {
308
+ classes?: TdPythonClassInfo[];
309
+ } | null;
310
+ export type GetTdPythonClasses200 = {
311
+ /** Whether the operation was successful */
312
+ success: boolean;
313
+ /** @nullable */
314
+ data: GetTdPythonClasses200Data;
315
+ /**
316
+ * Error message if the operation was not successful
317
+ * @nullable
318
+ */
319
+ error: string | null;
320
+ };
321
+ export type GetTdPythonClassDetails200 = {
322
+ /** Whether the operation was successful */
323
+ success: boolean;
324
+ data: TdPythonClassDetails | null;
325
+ /**
326
+ * Error message if the operation was not successful
327
+ * @nullable
328
+ */
329
+ error: string | null;
330
+ };
331
+ export type GetModuleHelpParams = {
332
+ /**
333
+ * Module or class name (e.g., "noiseCHOP", "td.noiseCHOP", "tdu").
334
+ */
335
+ moduleName: string;
336
+ };
337
+ export type GetModuleHelp200 = {
338
+ /** Whether the operation was successful */
339
+ success: boolean;
340
+ data: ModuleHelp | null;
341
+ /**
342
+ * Error message if the operation was not successful
343
+ * @nullable
344
+ */
345
+ error: string | null;
346
+ };
347
+ /**
348
+ * Keyword arguments for the method call
349
+ */
350
+ export type ExecNodeMethodBodyKwargs = {
351
+ [key: string]: unknown;
352
+ };
353
+ export type ExecNodeMethodBody = {
354
+ /** Path to the node (e.g., /project1/null1) */
355
+ nodePath: string;
356
+ /** Name of the method to call */
357
+ method: string;
358
+ /** List of arguments for the method call */
359
+ args?: (string | number | boolean)[];
360
+ /** Keyword arguments for the method call */
361
+ kwargs?: ExecNodeMethodBodyKwargs;
362
+ };
363
+ /**
364
+ * @nullable
365
+ */
366
+ export type ExecNodeMethod200Data = {
367
+ /** Result of the method call. Can be any type (equivalent to unknown in TypeScript). */
368
+ result: unknown;
369
+ } | null;
370
+ export type ExecNodeMethod200 = {
371
+ /** Whether the operation was successful */
372
+ success: boolean;
373
+ /** @nullable */
374
+ data: ExecNodeMethod200Data;
375
+ /**
376
+ * Error message if the operation was not successful
377
+ * @nullable
378
+ */
379
+ error: string | null;
380
+ };
381
+ export type ExecPythonScriptBody = {
382
+ /** e.g., "op('/project1/text_over_image').outputConnectors[0].connect(op('/project1/out1'))" */
383
+ script: string;
384
+ };
385
+ /**
386
+ * Result of the executed script
387
+ */
388
+ export type ExecPythonScript200DataResult = {
389
+ /** Return value of the executed script, can be any serializable value */
390
+ value?: unknown;
391
+ };
392
+ /**
393
+ * @nullable
394
+ */
395
+ export type ExecPythonScript200Data = {
396
+ /** Result of the executed script */
397
+ result: ExecPythonScript200DataResult;
398
+ } | null;
399
+ export type ExecPythonScript200 = {
400
+ /** Whether the operation was successful */
401
+ success: boolean;
402
+ /** @nullable */
403
+ data: ExecPythonScript200Data;
404
+ /**
405
+ * Error message if the operation was not successful
406
+ * @nullable
407
+ */
408
+ error: string | null;
409
+ };
410
+ /**
411
+ * @nullable
412
+ */
413
+ export type GetTdInfo200Data = {
414
+ /** Version of the TouchDesigner MCP API server */
415
+ mcpApiVersion: string;
416
+ /** Operating system name */
417
+ osName: string;
418
+ /** Operating system version */
419
+ osVersion: string;
420
+ /** Server name (typically "TouchDesigner") */
421
+ server: string;
422
+ /** TouchDesigner version number */
423
+ version: string;
424
+ } | null;
425
+ export type GetTdInfo200 = {
426
+ /** Whether the operation was successful */
427
+ success: boolean;
428
+ /** @nullable */
429
+ data: GetTdInfo200Data;
430
+ /**
431
+ * Error message if the operation was not successful
432
+ * @nullable
433
+ */
434
+ error: string | null;
435
+ };
436
+ type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
437
+ /**
438
+ * @summary Get nodes in the path
439
+ */
440
+ export declare const getNodes: (params: GetNodesParams, options?: SecondParameter<typeof customInstance<GetNodes200>>) => Promise<GetNodes200>;
441
+ /**
442
+ * @summary Create a new node
443
+ */
444
+ export declare const createNode: (createNodeBody: BodyType<CreateNodeBody>, options?: SecondParameter<typeof customInstance<CreateNode200>>) => Promise<CreateNode200>;
445
+ /**
446
+ * @summary Delete an existing node
447
+ */
448
+ export declare const deleteNode: (params: DeleteNodeParams, options?: SecondParameter<typeof customInstance<DeleteNode200>>) => Promise<DeleteNode200>;
449
+ /**
450
+ * Retrieves detailed information about a specific node including its properties, parameters and connections
451
+ * @summary Get node detail
452
+ */
453
+ export declare const getNodeDetail: (params: GetNodeDetailParams, options?: SecondParameter<typeof customInstance<GetNodeDetail200>>) => Promise<GetNodeDetail200>;
454
+ /**
455
+ * @summary Update node properties
456
+ */
457
+ export declare const updateNode: (updateNodeBody?: BodyType<UpdateNodeBody>, options?: SecondParameter<typeof customInstance<UpdateNode200>>) => Promise<UpdateNode200>;
458
+ /**
459
+ * Collects TouchDesigner error messages for a node and its children
460
+ * @summary Get node errors
461
+ */
462
+ export declare const getNodeErrors: (params: GetNodeErrorsParams, options?: SecondParameter<typeof customInstance<GetNodeErrors200>>) => Promise<GetNodeErrors200>;
463
+ /**
464
+ * Returns a list of Python classes, modules, and functions available in TouchDesigner
465
+ * @summary Get a list of Python classes and modules
466
+ */
467
+ export declare const getTdPythonClasses: (options?: SecondParameter<typeof customInstance<GetTdPythonClasses200>>) => Promise<GetTdPythonClasses200>;
468
+ /**
469
+ * Returns detailed information about a specific Python class, module, or function including methods, properties, and documentation
470
+ * @summary Get details of a specific Python class or module
471
+ */
472
+ export declare const getTdPythonClassDetails: (className: string, options?: SecondParameter<typeof customInstance<GetTdPythonClassDetails200>>) => Promise<GetTdPythonClassDetails200>;
473
+ /**
474
+ * Retrieve Python help() documentation for TouchDesigner modules, classes, or utilities like tdu.
475
+ * @summary Get module/class Python help documentation
476
+ */
477
+ export declare const getModuleHelp: (params: GetModuleHelpParams, options?: SecondParameter<typeof customInstance<GetModuleHelp200>>) => Promise<GetModuleHelp200>;
478
+ /**
479
+ * Call a method on the node at the specified path (e.g., /project1).
480
+ * This allows operations equivalent to TouchDesigner's Python API such as
481
+ * `parent_comp = op('/project1')` and `parent_comp.create('textTOP', 'myText')`.
482
+ * @summary Call a method of the specified node
483
+ */
484
+ export declare const execNodeMethod: (execNodeMethodBody: BodyType<ExecNodeMethodBody>, options?: SecondParameter<typeof customInstance<ExecNodeMethod200>>) => Promise<ExecNodeMethod200>;
485
+ /**
486
+ * Execute a Python script directly in TouchDesigner.
487
+ * Multiline scripts and scripts containing comments are supported.
488
+ * The script can optionally set a `result` variable to explicitly return a value.
489
+ * This endpoint allows you to interact with TouchDesigner nodes programmatically.
490
+ * @summary Execute python code on the server
491
+ */
492
+ export declare const execPythonScript: (execPythonScriptBody: BodyType<ExecPythonScriptBody>, options?: SecondParameter<typeof customInstance<ExecPythonScript200>>) => Promise<ExecPythonScript200>;
493
+ /**
494
+ * Returns information about the TouchDesigner
495
+ * @summary Get TouchDesigner information
496
+ */
497
+ export declare const getTdInfo: (options?: SecondParameter<typeof customInstance<GetTdInfo200>>) => Promise<GetTdInfo200>;
498
+ export type GetNodesResult = NonNullable<Awaited<ReturnType<typeof getNodes>>>;
499
+ export type CreateNodeResult = NonNullable<Awaited<ReturnType<typeof createNode>>>;
500
+ export type DeleteNodeResult = NonNullable<Awaited<ReturnType<typeof deleteNode>>>;
501
+ export type GetNodeDetailResult = NonNullable<Awaited<ReturnType<typeof getNodeDetail>>>;
502
+ export type UpdateNodeResult = NonNullable<Awaited<ReturnType<typeof updateNode>>>;
503
+ export type GetNodeErrorsResult = NonNullable<Awaited<ReturnType<typeof getNodeErrors>>>;
504
+ export type GetTdPythonClassesResult = NonNullable<Awaited<ReturnType<typeof getTdPythonClasses>>>;
505
+ export type GetTdPythonClassDetailsResult = NonNullable<Awaited<ReturnType<typeof getTdPythonClassDetails>>>;
506
+ export type GetModuleHelpResult = NonNullable<Awaited<ReturnType<typeof getModuleHelp>>>;
507
+ export type ExecNodeMethodResult = NonNullable<Awaited<ReturnType<typeof execNodeMethod>>>;
508
+ export type ExecPythonScriptResult = NonNullable<Awaited<ReturnType<typeof execPythonScript>>>;
509
+ export type GetTdInfoResult = NonNullable<Awaited<ReturnType<typeof getTdInfo>>>;
510
+ export {};