@mirra-messenger/sdk 0.2.0 → 0.4.0

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.
@@ -0,0 +1,1693 @@
1
+ /**
2
+ * Auto-Generated SDK Adapter Methods
3
+ *
4
+ * DO NOT EDIT THIS FILE DIRECTLY
5
+ * Generated from adapter operation schemas
6
+ * Run: npm run generate:llm-api
7
+ */
8
+ import { MirraSDK } from '../client';
9
+ export interface FlowsCreateTimeFlowArgs {
10
+ title: string;
11
+ description: string;
12
+ schedule: string;
13
+ scriptId: string;
14
+ scriptInput?: any;
15
+ }
16
+ export interface FlowsCreateEventFlowArgs {
17
+ title: string;
18
+ description: string;
19
+ trigger: any;
20
+ scriptId: string;
21
+ scriptInput?: any;
22
+ }
23
+ export interface FlowsListFlowsArgs {
24
+ status?: string;
25
+ }
26
+ export interface FlowsGetFlowArgs {
27
+ id: string;
28
+ }
29
+ export interface FlowsUpdateFlowArgs {
30
+ id: string;
31
+ title?: string;
32
+ description?: string;
33
+ trigger?: any;
34
+ scriptId?: string;
35
+ scriptInput?: any;
36
+ status?: string;
37
+ }
38
+ export interface FlowsDeleteFlowArgs {
39
+ id: string;
40
+ }
41
+ export interface FlowsPauseFlowArgs {
42
+ id: string;
43
+ }
44
+ export interface FlowsResumeFlowArgs {
45
+ id: string;
46
+ }
47
+ export interface FlowsSearchFlowsArgs {
48
+ status?: string;
49
+ triggerType?: string;
50
+ limit?: number;
51
+ offset?: number;
52
+ }
53
+ export interface FlowsRecordExecutionArgs {
54
+ id: string;
55
+ success: boolean;
56
+ result?: any;
57
+ error?: string;
58
+ }
59
+ export interface FlowsListEventTypesArgs {
60
+ includeTemplates?: boolean;
61
+ }
62
+ export interface FlowsTestFlowArgs {
63
+ flowId: string;
64
+ dryRun?: boolean;
65
+ eventOverrides?: any;
66
+ }
67
+ export interface FlowsValidateTriggerArgs {
68
+ flowId: string;
69
+ event: any;
70
+ }
71
+ export interface UserUpdateProfileArgs {
72
+ username?: string;
73
+ email?: string;
74
+ timezone?: string;
75
+ phoneNumber?: string;
76
+ }
77
+ export interface UserUpdatePreferencesArgs {
78
+ timezone?: string;
79
+ socials?: any;
80
+ }
81
+ export interface UserDeactivateAccountArgs {
82
+ confirm: boolean;
83
+ }
84
+ export interface ContactsListContactsArgs {
85
+ limit?: number;
86
+ offset?: number;
87
+ }
88
+ export interface ContactsGetContactArgs {
89
+ contactId?: string;
90
+ username?: string;
91
+ }
92
+ export interface ContactsAddContactArgs {
93
+ username: string;
94
+ }
95
+ export interface ContactsRemoveContactArgs {
96
+ contactId?: string;
97
+ username?: string;
98
+ }
99
+ export interface ContactsSearchContactsArgs {
100
+ query: string;
101
+ searchType?: string;
102
+ limit?: number;
103
+ }
104
+ export interface ContactsBlockContactArgs {
105
+ contactId?: string;
106
+ username?: string;
107
+ }
108
+ export interface ContactsUnblockContactArgs {
109
+ contactId?: string;
110
+ username?: string;
111
+ }
112
+ export interface ContactsGetBlockedContactsArgs {
113
+ limit?: number;
114
+ offset?: number;
115
+ }
116
+ export interface ContactsGetContactRequestsArgs {
117
+ type?: string;
118
+ status?: string;
119
+ }
120
+ export interface MemoryCreateArgs {
121
+ type: string;
122
+ content: string;
123
+ metadata?: any;
124
+ }
125
+ export interface MemorySearchArgs {
126
+ query: string;
127
+ limit?: number;
128
+ }
129
+ export interface MemoryQueryArgs {
130
+ type?: string;
131
+ filters?: any;
132
+ limit?: number;
133
+ offset?: number;
134
+ }
135
+ export interface MemoryFindOneArgs {
136
+ filters: any;
137
+ }
138
+ export interface MemoryUpdateArgs {
139
+ id: string;
140
+ type?: string;
141
+ content?: string;
142
+ metadata?: any;
143
+ }
144
+ export interface MemoryDeleteArgs {
145
+ id: string;
146
+ }
147
+ export interface AiChatArgs {
148
+ messages: any[];
149
+ model?: string;
150
+ temperature?: number;
151
+ maxTokens?: number;
152
+ }
153
+ export interface AiDecideArgs {
154
+ prompt: string;
155
+ options: any[];
156
+ context?: string;
157
+ model?: string;
158
+ }
159
+ export interface DocumentUploadArgs {
160
+ file: string;
161
+ filename: string;
162
+ mimeType: string;
163
+ graphId?: string;
164
+ title?: string;
165
+ productTags?: any[];
166
+ }
167
+ export interface DocumentGetArgs {
168
+ documentId: string;
169
+ }
170
+ export interface DocumentGetStatusArgs {
171
+ documentId: string;
172
+ }
173
+ export interface DocumentGetChunksArgs {
174
+ documentId: string;
175
+ }
176
+ export interface DocumentDeleteArgs {
177
+ documentId: string;
178
+ }
179
+ export interface DocumentShareArgs {
180
+ documentId: string;
181
+ targetGraphId: string;
182
+ shareReason?: string;
183
+ }
184
+ export interface DocumentUnshareArgs {
185
+ documentId: string;
186
+ graphId: string;
187
+ }
188
+ export interface DocumentListGraphsArgs {
189
+ documentId: string;
190
+ }
191
+ export interface DocumentSearchArgs {
192
+ query: string;
193
+ graphId?: string;
194
+ limit?: number;
195
+ threshold?: number;
196
+ }
197
+ export interface DocumentListArgs {
198
+ graphId?: string;
199
+ limit?: number;
200
+ offset?: number;
201
+ }
202
+ export interface FeedItemsCreateFeedItemArgs {
203
+ title: string;
204
+ subtitle?: string;
205
+ blocks: any[];
206
+ itemType: string;
207
+ actions?: any[];
208
+ avatar?: any;
209
+ metadata?: any;
210
+ }
211
+ export interface TelegramSendMessageArgs {
212
+ chatId: string;
213
+ text: string;
214
+ }
215
+ export interface TelegramGetChatsArgs {
216
+ limit?: number;
217
+ offset?: number;
218
+ forceRefresh?: boolean;
219
+ }
220
+ export interface TelegramFindChatByNameArgs {
221
+ name: string;
222
+ }
223
+ export interface TelegramSearchMessagesArgs {
224
+ chatIds?: any[];
225
+ query?: string;
226
+ fromDate?: string;
227
+ toDate?: string;
228
+ limit?: number;
229
+ senderId?: string;
230
+ }
231
+ export interface TelegramGetRecentContactsArgs {
232
+ sinceDate?: string;
233
+ onlyNewContacts?: boolean;
234
+ limit?: number;
235
+ }
236
+ export interface TelegramGetChatMessagesArgs {
237
+ chatId: string;
238
+ limit?: number;
239
+ offsetId?: number;
240
+ minDate?: string;
241
+ maxDate?: string;
242
+ }
243
+ export interface TelegramGetUnreadSummaryArgs {
244
+ chatIds?: any[];
245
+ priorityOnly?: boolean;
246
+ groupBy?: string;
247
+ }
248
+ export interface TelegramMarkAsReadArgs {
249
+ chatId: string;
250
+ maxMessageId?: number;
251
+ }
252
+ export interface TelegramGetMentionsArgs {
253
+ chatIds?: any[];
254
+ sinceDate?: string;
255
+ onlyUnread?: boolean;
256
+ }
257
+ export interface TelegramGlobalSearchArgs {
258
+ query: string;
259
+ filter?: string;
260
+ limit?: number;
261
+ }
262
+ export interface GoogleGmailSendEmailArgs {
263
+ to: string;
264
+ subject: string;
265
+ body: string;
266
+ cc?: string;
267
+ bcc?: string;
268
+ isHtml?: boolean;
269
+ }
270
+ export interface GoogleGmailSearchEmailsArgs {
271
+ query: string;
272
+ maxResults?: number;
273
+ }
274
+ export interface GoogleGmailListEmailsArgs {
275
+ maxResults?: number;
276
+ }
277
+ export interface GoogleGmailGetEmailArgs {
278
+ messageId: string;
279
+ }
280
+ export interface GoogleGmailCreateDraftArgs {
281
+ to: string;
282
+ subject: string;
283
+ body: string;
284
+ cc?: string;
285
+ bcc?: string;
286
+ isHtml?: boolean;
287
+ }
288
+ export interface GoogleGmailUpdateDraftArgs {
289
+ draftId: string;
290
+ to?: string;
291
+ subject?: string;
292
+ body?: string;
293
+ cc?: string;
294
+ bcc?: string;
295
+ isHtml?: boolean;
296
+ }
297
+ export interface GoogleGmailDeleteDraftArgs {
298
+ draftId: string;
299
+ }
300
+ export interface GoogleGmailListDraftsArgs {
301
+ maxResults?: number;
302
+ }
303
+ export interface GoogleGmailMarkAsReadArgs {
304
+ messageId: string;
305
+ }
306
+ export interface GoogleGmailMarkAsUnreadArgs {
307
+ messageId: string;
308
+ }
309
+ export interface GoogleGmailDeleteEmailArgs {
310
+ messageId: string;
311
+ }
312
+ export interface GoogleCalendarCreateEventArgs {
313
+ summary: string;
314
+ start: any;
315
+ end: any;
316
+ description?: string;
317
+ location?: string;
318
+ attendees?: any[];
319
+ }
320
+ export interface GoogleCalendarListEventsArgs {
321
+ timeMin?: string;
322
+ timeMax?: string;
323
+ maxResults?: number;
324
+ query?: string;
325
+ }
326
+ export interface GoogleCalendarGetEventsArgs {
327
+ timeMin?: string;
328
+ timeMax?: string;
329
+ maxResults?: number;
330
+ query?: string;
331
+ }
332
+ export interface GoogleDriveListFilesArgs {
333
+ query?: string;
334
+ pageSize?: number;
335
+ }
336
+ export interface GoogleDriveCreateFileArgs {
337
+ name: string;
338
+ mimeType: string;
339
+ folderId?: string;
340
+ }
341
+ export interface GoogleDriveCreateFolderArgs {
342
+ name: string;
343
+ parentFolderId?: string;
344
+ }
345
+ export interface GoogleDriveGetFileInfoArgs {
346
+ fileId: string;
347
+ }
348
+ export interface GoogleDriveShareFileArgs {
349
+ fileId: string;
350
+ email?: string;
351
+ role?: string;
352
+ }
353
+ export interface GoogleSheetsCreateSpreadsheetArgs {
354
+ title: string;
355
+ }
356
+ export interface GoogleSheetsReadRangeArgs {
357
+ spreadsheetId: string;
358
+ range: string;
359
+ }
360
+ export interface GoogleSheetsWriteRangeArgs {
361
+ spreadsheetId: string;
362
+ range: string;
363
+ values: any[];
364
+ }
365
+ export interface GoogleSheetsAppendRowArgs {
366
+ spreadsheetId: string;
367
+ sheetName: string;
368
+ values: any[];
369
+ }
370
+ export interface GoogleDocsCreateDocumentArgs {
371
+ title: string;
372
+ }
373
+ export interface GoogleDocsGetDocumentArgs {
374
+ documentId: string;
375
+ }
376
+ export interface GoogleDocsAppendTextArgs {
377
+ documentId: string;
378
+ text: string;
379
+ }
380
+ export interface GoogleDocsReplaceTextArgs {
381
+ documentId: string;
382
+ searchText: string;
383
+ replaceText: string;
384
+ }
385
+ export interface JiraCreateIssueArgs {
386
+ projectKey: string;
387
+ summary: string;
388
+ description?: string;
389
+ issueType?: string;
390
+ }
391
+ export interface JiraSearchIssuesArgs {
392
+ jql: string;
393
+ maxResults?: number;
394
+ }
395
+ export interface JiraGetIssueArgs {
396
+ issueKey: string;
397
+ }
398
+ export interface JiraUpdateIssueArgs {
399
+ issueKey: string;
400
+ summary?: string;
401
+ description?: string;
402
+ }
403
+ export interface JiraDeleteIssueArgs {
404
+ issueKey: string;
405
+ }
406
+ export interface JiraAddCommentArgs {
407
+ issueKey: string;
408
+ comment: string;
409
+ }
410
+ export interface JiraTransitionIssueArgs {
411
+ issueKey: string;
412
+ transitionId: string;
413
+ }
414
+ export interface JiraAssignIssueArgs {
415
+ issueKey: string;
416
+ accountId: string;
417
+ }
418
+ export interface JiraGetProjectMetadataArgs {
419
+ projectKey: string;
420
+ }
421
+ export interface JiraGetTransitionsArgs {
422
+ issueKey: string;
423
+ }
424
+ export interface JiraListAssignableUsersArgs {
425
+ projectKey: string;
426
+ }
427
+ export interface JiraGetIssueTypesArgs {
428
+ projectKey: string;
429
+ }
430
+ export interface TwitterPostTweetArgs {
431
+ text: string;
432
+ }
433
+ export interface TwitterGetUserTweetsArgs {
434
+ userId?: string;
435
+ userName?: string;
436
+ cursor?: string;
437
+ includeReplies?: boolean;
438
+ }
439
+ export interface TrelloGetBoardArgs {
440
+ boardId: string;
441
+ }
442
+ export interface TrelloCreateCardArgs {
443
+ name: string;
444
+ idList: string;
445
+ desc?: string;
446
+ }
447
+ export interface TrelloGetCardArgs {
448
+ cardId: string;
449
+ }
450
+ export interface TrelloUpdateCardArgs {
451
+ cardId: string;
452
+ name?: string;
453
+ desc?: string;
454
+ idList?: string;
455
+ closed?: boolean;
456
+ }
457
+ export interface TrelloDeleteCardArgs {
458
+ cardId: string;
459
+ }
460
+ export interface TrelloCreateChecklistArgs {
461
+ cardId: string;
462
+ name: string;
463
+ }
464
+ export interface TrelloGetChecklistArgs {
465
+ checklistId: string;
466
+ }
467
+ export interface TrelloUpdateChecklistArgs {
468
+ checklistId: string;
469
+ name: string;
470
+ }
471
+ export interface TrelloDeleteChecklistArgs {
472
+ checklistId: string;
473
+ }
474
+ export interface TrelloAddCheckItemArgs {
475
+ checklistId: string;
476
+ name: string;
477
+ }
478
+ export interface TrelloUpdateCheckItemArgs {
479
+ cardId: string;
480
+ checkItemId: string;
481
+ name?: string;
482
+ state?: string;
483
+ }
484
+ export interface TrelloDeleteCheckItemArgs {
485
+ checklistId: string;
486
+ checkItemId: string;
487
+ }
488
+ export interface JupiterSwapArgs {
489
+ inputMint: string;
490
+ outputMint: string;
491
+ amount: number;
492
+ inputDecimals: number;
493
+ slippageBps?: number;
494
+ }
495
+ export interface JupiterGetHoldingsArgs {
496
+ walletAddress?: string;
497
+ }
498
+ export interface JupiterGetTokenSecurityArgs {
499
+ tokenMint: string;
500
+ }
501
+ export interface JupiterSearchTokensArgs {
502
+ query: string;
503
+ }
504
+ export interface CryptoGetPriceArgs {
505
+ tokenAddress: string;
506
+ chainName?: string;
507
+ }
508
+ export interface CryptoSendTokenArgs {
509
+ recipient: string;
510
+ token: string;
511
+ amount: number;
512
+ }
513
+ export interface CryptoMonitorPriceArgs {
514
+ tokenAddress: string;
515
+ direction: string;
516
+ targetPrice: number;
517
+ scriptId: string;
518
+ chainName?: string;
519
+ percentStep?: number;
520
+ }
521
+ export interface CryptoUnsubscribeAssetArgs {
522
+ tokenAddress: string;
523
+ }
524
+ export interface ScriptsCreateScriptArgs {
525
+ name: string;
526
+ description?: string;
527
+ runtime?: string;
528
+ config?: any;
529
+ code: string;
530
+ }
531
+ export interface ScriptsDeleteScriptArgs {
532
+ scriptId: string;
533
+ }
534
+ export interface ScriptsCreateVersionArgs {
535
+ scriptId: string;
536
+ code: string;
537
+ commitMessage?: string;
538
+ }
539
+ export interface ScriptsListVersionsArgs {
540
+ scriptId: string;
541
+ }
542
+ export interface ScriptsDeployScriptArgs {
543
+ scriptId: string;
544
+ version?: number;
545
+ }
546
+ export interface ScriptsExecuteScriptArgs {
547
+ scriptId: string;
548
+ data?: any;
549
+ trigger?: any;
550
+ }
551
+ export interface ScriptsGetScriptArgs {
552
+ scriptId: string;
553
+ }
554
+ export interface ScriptsGetExecutionsArgs {
555
+ scriptId: string;
556
+ status?: string;
557
+ limit?: number;
558
+ }
559
+ export interface ScriptsGetExecutionArgs {
560
+ executionId: string;
561
+ }
562
+ export interface ScriptsPublishScriptArgs {
563
+ scriptId: string;
564
+ pricing?: any;
565
+ }
566
+ export interface ScriptsUnpublishScriptArgs {
567
+ scriptId: string;
568
+ }
569
+ export interface ScriptsGetMetricsArgs {
570
+ scriptId: string;
571
+ }
572
+ export interface ScriptsCreateWebhookArgs {
573
+ scriptId: string;
574
+ name: string;
575
+ enabled?: boolean;
576
+ }
577
+ export interface ScriptsCreateScheduleArgs {
578
+ scriptId: string;
579
+ name: string;
580
+ cronExpression: string;
581
+ enabled?: boolean;
582
+ data?: any;
583
+ }
584
+ export interface ScriptsGetFlowScriptArgs {
585
+ flowId: string;
586
+ }
587
+ export interface ScriptsModifyFlowScriptArgs {
588
+ flowId: string;
589
+ newCode: string;
590
+ commitMessage?: string;
591
+ }
592
+ export interface ScriptsLintScriptArgs {
593
+ code: string;
594
+ }
595
+ /**
596
+ * Flows Adapter
597
+ * Category: internal
598
+ */
599
+ declare function createFlowsAdapter(sdk: MirraSDK): {
600
+ /**
601
+ * Create a new time-based flow with cron schedule
602
+ * @param args.title - Flow title
603
+ * @param args.description - Detailed description of what the flow does
604
+ * @param args.schedule - Cron expression for scheduling (e.g., "0 9 * * *" for daily at 9am)
605
+ * @param args.scriptId - ID of the script to execute when triggered
606
+ * @param args.scriptInput - Optional static input data for the script (optional)
607
+ */
608
+ createTimeFlow: (args: FlowsCreateTimeFlowArgs) => Promise<any>;
609
+ /**
610
+ * Create an event-based flow with pre-filtering conditions.
611
+
612
+ EFFICIENCY RULE: Always filter in eventFilter, not the script.
613
+ - eventFilter conditions: FREE (evaluated in-memory before script runs)
614
+ - Script filtering: EXPENSIVE (invokes Lambda for every event)
615
+
616
+ BAD: Trigger on "telegram.message" with no filter → script checks sender
617
+ GOOD: Trigger on "telegram.message" with eventFilter for sender
618
+
619
+ TRIGGER STRUCTURE:
620
+ {
621
+ type: "event",
622
+ config: {
623
+ eventFilter: {
624
+ operator: "and" | "or",
625
+ conditions: [
626
+ { operator: "equals", field: "eventType", value: "call.ended" },
627
+ { operator: "contains", field: "content.text", value: "urgent" }
628
+ ]
629
+ }
630
+ }
631
+ }
632
+
633
+ VALID OPERATORS: equals, notEquals, contains, startsWith, endsWith, greaterThan, lessThan, exists, notExists, matchesRegex, and, or, not
634
+
635
+ COMMON EVENT TYPES: call.started, call.ended, call.action, telegram.message, gmail.email_received
636
+ * @param args.title - Flow title
637
+ * @param args.description - Detailed description of what the flow does
638
+ * @param args.trigger - Event filter conditions that determine WHEN the script runs. Add ALL filtering logic here to minimize Lambda invocations. Must have type:"event" and config.eventFilter with operator and conditions array.
639
+ * @param args.scriptId - ID of the script to execute when triggered
640
+ * @param args.scriptInput - Optional static input data for the script (optional)
641
+ */
642
+ createEventFlow: (args: FlowsCreateEventFlowArgs) => Promise<any>;
643
+ /**
644
+ * List all flows for the user
645
+ * @param args.status - Filter by status: active, paused, completed, failed (optional)
646
+ */
647
+ listFlows: (args: FlowsListFlowsArgs) => Promise<any>;
648
+ /**
649
+ * Get a specific flow by ID
650
+ * @param args.id - Flow ID
651
+ */
652
+ getFlow: (args: FlowsGetFlowArgs) => Promise<any>;
653
+ /**
654
+ * Update an existing flow
655
+ * @param args.id - Flow ID to update
656
+ * @param args.title - New title (optional)
657
+ * @param args.description - New description (optional)
658
+ * @param args.trigger - New trigger configuration (optional)
659
+ * @param args.scriptId - New script ID (optional)
660
+ * @param args.scriptInput - New script input data (optional)
661
+ * @param args.status - New status: active, paused, completed, failed (optional)
662
+ */
663
+ updateFlow: (args: FlowsUpdateFlowArgs) => Promise<any>;
664
+ /**
665
+ * Delete a flow
666
+ * @param args.id - Flow ID to delete
667
+ */
668
+ deleteFlow: (args: FlowsDeleteFlowArgs) => Promise<any>;
669
+ /**
670
+ * Pause an active flow
671
+ * @param args.id - Flow ID to pause
672
+ */
673
+ pauseFlow: (args: FlowsPauseFlowArgs) => Promise<any>;
674
+ /**
675
+ * Resume a paused flow
676
+ * @param args.id - Flow ID to resume
677
+ */
678
+ resumeFlow: (args: FlowsResumeFlowArgs) => Promise<any>;
679
+ /**
680
+ * Search flows with filters
681
+ * @param args.status - Filter by status (or array of statuses) (optional)
682
+ * @param args.triggerType - Filter by trigger type: time or event (optional)
683
+ * @param args.limit - Maximum number of results (default: 100) (optional)
684
+ * @param args.offset - Pagination offset (default: 0) (optional)
685
+ */
686
+ searchFlows: (args: FlowsSearchFlowsArgs) => Promise<any>;
687
+ /**
688
+ * Record execution result for a flow
689
+ * @param args.id - Flow ID
690
+ * @param args.success - Whether execution succeeded
691
+ * @param args.result - Execution result data (optional)
692
+ * @param args.error - Error message if execution failed (optional)
693
+ */
694
+ recordExecution: (args: FlowsRecordExecutionArgs) => Promise<any>;
695
+ /**
696
+ * List all available event types that can trigger automations
697
+ * @param args.includeTemplates - Include condition templates for each event type (optional)
698
+ */
699
+ listEventTypes: (args: FlowsListEventTypesArgs) => Promise<any>;
700
+ /**
701
+ * Test a flow by generating an event that matches the trigger conditions.
702
+
703
+ MODES:
704
+ - dryRun=true (DEFAULT): Validates trigger matching only. Safe, no side effects, no token consumption.
705
+ - dryRun=false: Executes the real script. WARNING: This causes real side effects (sends messages, makes API calls, consumes tokens).
706
+
707
+ Use dryRun=true first to verify trigger conditions work, then dryRun=false only when ready to test full execution.
708
+
709
+ WORKFLOW:
710
+ 1. Generates a test event from the flow's trigger conditions
711
+ 2. Validates the event matches the trigger (always)
712
+ 3. If dryRun=false, executes the script with the test event
713
+
714
+ RESULT:
715
+ Returns detailed information about trigger matching, including which conditions passed/failed, and optionally full execution results.
716
+ * @param args.flowId - ID of the flow to test
717
+ * @param args.dryRun - If true (default), only validate trigger matching without executing script. If false, execute the script (causes side effects). (optional)
718
+ * @param args.eventOverrides - Custom field values to merge into the generated test event (e.g., {"content.text": "custom message"}) (optional)
719
+ */
720
+ testFlow: (args: FlowsTestFlowArgs) => Promise<any>;
721
+ /**
722
+ * Check if a custom event would match a flow trigger without any execution. Useful for debugging trigger conditions or testing with real event data.
723
+ * @param args.flowId - ID of the flow
724
+ * @param args.event - Event object to test against the trigger (must match IntegrationEvent structure)
725
+ */
726
+ validateTrigger: (args: FlowsValidateTriggerArgs) => Promise<any>;
727
+ };
728
+ /**
729
+ * User Adapter
730
+ * Category: internal
731
+ */
732
+ declare function createUserAdapter(sdk: MirraSDK): {
733
+ /**
734
+ * Get user profile information including username, email, timezone, phone, and usage stats
735
+ */
736
+ getProfile: (args?: {}) => Promise<any>;
737
+ /**
738
+ * Update user profile fields (username, email, timezone, phone)
739
+ * @param args.username - New username (3-30 characters, alphanumeric with underscores/hyphens) (optional)
740
+ * @param args.email - New email address (optional)
741
+ * @param args.timezone - IANA timezone identifier (e.g., America/Los_Angeles) (optional)
742
+ * @param args.phoneNumber - Phone number (7-15 digits with optional formatting) (optional)
743
+ */
744
+ updateProfile: (args: UserUpdateProfileArgs) => Promise<any>;
745
+ /**
746
+ * Update user preferences (notification settings, etc)
747
+ * @param args.timezone - Preferred timezone for scheduling (optional)
748
+ * @param args.socials - Social media links (twitter, discord) (optional)
749
+ */
750
+ updatePreferences: (args: UserUpdatePreferencesArgs) => Promise<any>;
751
+ /**
752
+ * Get token usage statistics, quota, and billing information
753
+ */
754
+ getUsageStats: (args?: {}) => Promise<any>;
755
+ /**
756
+ * Get active sessions/devices (based on push token registrations)
757
+ */
758
+ getSessions: (args?: {}) => Promise<any>;
759
+ /**
760
+ * Soft delete user account (set inactive flag) - CAUTION: This marks the account for deletion
761
+ * @param args.confirm - Must be true to confirm account deactivation
762
+ */
763
+ deactivateAccount: (args: UserDeactivateAccountArgs) => Promise<any>;
764
+ };
765
+ /**
766
+ * Contacts Adapter
767
+ * Category: internal
768
+ */
769
+ declare function createContactsAdapter(sdk: MirraSDK): {
770
+ /**
771
+ * Get a list of all accepted contacts for the user with their profile information
772
+ * @param args.limit - Maximum number of contacts to return (default: 100) (optional)
773
+ * @param args.offset - Number of contacts to skip for pagination (default: 0) (optional)
774
+ */
775
+ listContacts: (args: ContactsListContactsArgs) => Promise<any>;
776
+ /**
777
+ * Get detailed information about a specific contact by their ID or username
778
+ * @param args.contactId - The contact user ID (MongoDB ObjectId) (optional)
779
+ * @param args.username - The contact username (optional)
780
+ */
781
+ getContact: (args: ContactsGetContactArgs) => Promise<any>;
782
+ /**
783
+ * Send a contact request to another user by their username
784
+ * @param args.username - Username of the user to add as a contact
785
+ */
786
+ addContact: (args: ContactsAddContactArgs) => Promise<any>;
787
+ /**
788
+ * Remove a user from your contacts list (unfriend)
789
+ * @param args.contactId - The contact user ID to remove (optional)
790
+ * @param args.username - The contact username to remove (optional)
791
+ */
792
+ removeContact: (args: ContactsRemoveContactArgs) => Promise<any>;
793
+ /**
794
+ * Search your contacts by username, email, phone, or wallet address
795
+ * @param args.query - Search query - can be username, email, phone, or wallet address
796
+ * @param args.searchType - Type of search to perform: all, username, email, phone, or wallet (default: all) (optional)
797
+ * @param args.limit - Maximum number of results (default: 20) (optional)
798
+ */
799
+ searchContacts: (args: ContactsSearchContactsArgs) => Promise<any>;
800
+ /**
801
+ * Block a user (prevents them from contacting you)
802
+ * @param args.contactId - The user ID to block (optional)
803
+ * @param args.username - The username to block (optional)
804
+ */
805
+ blockContact: (args: ContactsBlockContactArgs) => Promise<any>;
806
+ /**
807
+ * Unblock a previously blocked user
808
+ * @param args.contactId - The user ID to unblock (optional)
809
+ * @param args.username - The username to unblock (optional)
810
+ */
811
+ unblockContact: (args: ContactsUnblockContactArgs) => Promise<any>;
812
+ /**
813
+ * Get a list of all users you have blocked
814
+ * @param args.limit - Maximum number of results (default: 100) (optional)
815
+ * @param args.offset - Number of items to skip for pagination (default: 0) (optional)
816
+ */
817
+ getBlockedContacts: (args: ContactsGetBlockedContactsArgs) => Promise<any>;
818
+ /**
819
+ * Get pending contact requests (sent by you or received from others)
820
+ * @param args.type - Type of requests to retrieve: all, sent, or received (default: all) (optional)
821
+ * @param args.status - Filter by request status: pending, accepted, or rejected (default: pending) (optional)
822
+ */
823
+ getContactRequests: (args: ContactsGetContactRequestsArgs) => Promise<any>;
824
+ };
825
+ /**
826
+ * Memory Adapter
827
+ * Category: internal
828
+ */
829
+ declare function createMemoryAdapter(sdk: MirraSDK): {
830
+ /**
831
+ * Create a new memory entity in the knowledge graph. Use the type field to specify what kind of memory (task, note, idea, shopping_item, etc.)
832
+ * @param args.type - Memory subtype: "task" (reminders/todos), "note" (general notes), "idea" (concepts/ideas), "shopping_item" (shopping list), "topic" (general knowledge), "document" (documents), "contact" (people), or "event" (calendar items)
833
+ * @param args.content - Main content/description of the memory
834
+ * @param args.metadata - Additional metadata (e.g., priority, deadline, tags, etc.) (optional)
835
+ */
836
+ create: (args: MemoryCreateArgs) => Promise<any>;
837
+ /**
838
+ * Semantic search across memory entities
839
+ * @param args.query - Search query text
840
+ * @param args.limit - Maximum number of results to return (default: 50, max: 100) (optional)
841
+ */
842
+ search: (args: MemorySearchArgs) => Promise<any>;
843
+ /**
844
+ * Query entities with filters and pagination
845
+ * @param args.type - Entity type filter (optional)
846
+ * @param args.filters - Additional filters (optional)
847
+ * @param args.limit - Maximum results (default: 50, max: 100) (optional)
848
+ * @param args.offset - Pagination offset (default: 0) (optional)
849
+ */
850
+ query: (args: MemoryQueryArgs) => Promise<any>;
851
+ /**
852
+ * Find a single entity matching criteria
853
+ * @param args.filters - Filter criteria (e.g., { id: "..." })
854
+ */
855
+ findOne: (args: MemoryFindOneArgs) => Promise<any>;
856
+ /**
857
+ * Update an existing memory entity
858
+ * @param args.id - Entity ID to update
859
+ * @param args.type - Entity type (optional)
860
+ * @param args.content - Updated content (optional)
861
+ * @param args.metadata - Updated metadata (optional)
862
+ */
863
+ update: (args: MemoryUpdateArgs) => Promise<any>;
864
+ /**
865
+ * Delete a memory entity
866
+ * @param args.id - Entity ID to delete
867
+ */
868
+ delete: (args: MemoryDeleteArgs) => Promise<any>;
869
+ };
870
+ /**
871
+ * AI Services Adapter
872
+ * Category: internal
873
+ */
874
+ declare function createAiAdapter(sdk: MirraSDK): {
875
+ /**
876
+ * Have a conversation with an AI assistant. Supports multi-turn conversations with system prompts, user messages, and assistant responses.
877
+
878
+ PROVIDER: Uses Anthropic (Claude) as the AI provider.
879
+
880
+ BEST PRACTICES:
881
+ - Use system messages to set AI behavior and constraints
882
+ - Keep conversations focused - avoid unnecessary context
883
+
884
+ MESSAGE STRUCTURE:
885
+ Each message has:
886
+ - role: "system" | "user" | "assistant"
887
+ - content: string (the message text)
888
+
889
+ TYPICAL PATTERNS:
890
+ 1. Simple query: [{ role: "user", content: "question" }]
891
+ 2. With system prompt: [{ role: "system", content: "instructions" }, { role: "user", content: "question" }]
892
+ 3. Multi-turn: [system, user, assistant, user, assistant, ...]
893
+ * @param args.messages - Array of message objects with role ("system" | "user" | "assistant") and content (string). System messages set AI behavior, user messages are queries, assistant messages are previous AI responses.
894
+ * @param args.model - Specific model to use. Default: "claude-3-haiku-20240307". Use Anthropic Claude model names. (optional)
895
+ * @param args.temperature - Creativity level 0.0-1.0. Lower=factual/consistent, Higher=creative/varied. Default: 0.7 (optional)
896
+ * @param args.maxTokens - Maximum tokens in response. Default: 1000. Increase for longer responses (costs more tokens). (optional)
897
+ */
898
+ chat: (args: AiChatArgs) => Promise<any>;
899
+ /**
900
+ * Use AI to make a decision from a list of options. The AI analyzes your prompt, considers the context, and selects the most appropriate option with reasoning.
901
+
902
+ USE CASES:
903
+ - Route messages to correct handlers
904
+ - Classify user intents
905
+ - Select appropriate tools or actions
906
+ - Prioritize tasks
907
+ - Choose templates or responses
908
+ - Determine sentiment or category
909
+
910
+ HOW IT WORKS:
911
+ 1. Provide a prompt (the decision context)
912
+ 2. List available options (each with id and label)
913
+ 3. Optionally add extra context
914
+ 4. AI returns selected option ID and reasoning
915
+
916
+ BEST PRACTICES:
917
+ - Make option labels clear and descriptive
918
+ - Use unique IDs for options
919
+ - Add context when decision needs background info
920
+ - Keep prompt focused on the decision criteria
921
+ - Use metadata field for additional option data
922
+ * @param args.prompt - The decision prompt - what needs to be decided and why
923
+ * @param args.options - Array of options to choose from. Each option must have: id (unique identifier), label (descriptive name), and optional metadata (additional data)
924
+ * @param args.context - Additional context to help the AI make a better decision (optional)
925
+ * @param args.model - Specific model to use. Defaults to system default. (optional)
926
+ */
927
+ decide: (args: AiDecideArgs) => Promise<any>;
928
+ };
929
+ /**
930
+ * Documents Adapter
931
+ * Category: storage
932
+ */
933
+ declare function createDocumentAdapter(sdk: MirraSDK): {
934
+ /**
935
+ * Upload and process a document (PDF, DOCX, TXT, MD)
936
+ * @param args.file - Base64 encoded file content
937
+ * @param args.filename - Original filename with extension
938
+ * @param args.mimeType - MIME type (application/pdf, text/plain, etc.)
939
+ * @param args.graphId - Target graph ID (defaults to user's personal graph) (optional)
940
+ * @param args.title - Custom document title (optional)
941
+ * @param args.productTags - Array of product tags for categorization (optional)
942
+ */
943
+ upload: (args: DocumentUploadArgs) => Promise<any>;
944
+ /**
945
+ * Get document metadata and content
946
+ * @param args.documentId - Document ID to retrieve
947
+ */
948
+ get: (args: DocumentGetArgs) => Promise<any>;
949
+ /**
950
+ * Get document processing status
951
+ * @param args.documentId - Document ID to check
952
+ */
953
+ getStatus: (args: DocumentGetStatusArgs) => Promise<any>;
954
+ /**
955
+ * Get all chunks for a document
956
+ * @param args.documentId - Document ID
957
+ */
958
+ getChunks: (args: DocumentGetChunksArgs) => Promise<any>;
959
+ /**
960
+ * Delete a document and all its chunks
961
+ * @param args.documentId - Document ID to delete
962
+ */
963
+ delete: (args: DocumentDeleteArgs) => Promise<any>;
964
+ /**
965
+ * Share a document to another graph (group or user-contact)
966
+ * @param args.documentId - Document ID to share
967
+ * @param args.targetGraphId - Target graph ID to share to
968
+ * @param args.shareReason - Optional reason for sharing (optional)
969
+ */
970
+ share: (args: DocumentShareArgs) => Promise<any>;
971
+ /**
972
+ * Remove document access from a graph
973
+ * @param args.documentId - Document ID
974
+ * @param args.graphId - Graph ID to remove access from
975
+ */
976
+ unshare: (args: DocumentUnshareArgs) => Promise<any>;
977
+ /**
978
+ * List all graphs a document is shared in
979
+ * @param args.documentId - Document ID
980
+ */
981
+ listGraphs: (args: DocumentListGraphsArgs) => Promise<any>;
982
+ /**
983
+ * Semantic search across document chunks
984
+ * @param args.query - Search query
985
+ * @param args.graphId - Graph ID to search in (defaults to user's graph) (optional)
986
+ * @param args.limit - Maximum results (default: 10) (optional)
987
+ * @param args.threshold - Similarity threshold 0-1 (default: 0.7) (optional)
988
+ */
989
+ search: (args: DocumentSearchArgs) => Promise<any>;
990
+ /**
991
+ * List documents in a graph
992
+ * @param args.graphId - Graph ID to list documents from (defaults to user's graph) (optional)
993
+ * @param args.limit - Maximum results (default: 50) (optional)
994
+ * @param args.offset - Pagination offset (default: 0) (optional)
995
+ */
996
+ list: (args: DocumentListArgs) => Promise<any>;
997
+ };
998
+ /**
999
+ * Feed Items Adapter
1000
+ * Category: internal
1001
+ */
1002
+ declare function createFeedItemsAdapter(sdk: MirraSDK): {
1003
+ /**
1004
+ * Create a feed item with flexible content blocks. Use this to show action results, notifications, or updates to users.
1005
+ * @param args.title - Main title of the feed item (shown prominently)
1006
+ * @param args.subtitle - Optional subtitle (shown below title in muted color) (optional)
1007
+ * @param args.blocks - Array of content blocks to display (text, key_value, list, timestamp, user_mention, divider, image, progress)
1008
+ * @param args.itemType - Type: informative (FYI), actionable (needs response), or error
1009
+ * @param args.actions - Optional action buttons for the feed item (optional)
1010
+ * @param args.avatar - Optional avatar to show (user profile, icon, or custom image) (optional)
1011
+ * @param args.metadata - Additional metadata (searchable, not displayed) (optional)
1012
+ */
1013
+ createFeedItem: (args: FeedItemsCreateFeedItemArgs) => Promise<any>;
1014
+ };
1015
+ /**
1016
+ * Telegram Adapter
1017
+ * Category: social
1018
+ */
1019
+ declare function createTelegramAdapter(sdk: MirraSDK): {
1020
+ /**
1021
+ * Send a text message to a Telegram chat or user. Supports both chat IDs and usernames.
1022
+ * @param args.chatId - Chat ID (numeric) or username (e.g., @username) to send the message to. Chat IDs can be obtained from getChats operation.
1023
+ * @param args.text - The text content of the message to send
1024
+ */
1025
+ sendMessage: (args: TelegramSendMessageArgs) => Promise<any>;
1026
+ /**
1027
+ * Retrieve Telegram chats with pagination support. Use limit and offset to paginate through large chat lists. Results are cached for 10 minutes.
1028
+ * @param args.limit - Maximum number of chats to return (default: 50, max: 100). Use pagination for large chat lists to avoid token limits. (optional)
1029
+ * @param args.offset - Number of chats to skip for pagination (default: 0). Combine with limit to fetch subsequent pages. (optional)
1030
+ * @param args.forceRefresh - If true, bypasses the cache and fetches fresh chat data from Telegram. Default: false (optional)
1031
+ */
1032
+ getChats: (args: TelegramGetChatsArgs) => Promise<any>;
1033
+ /**
1034
+ * Find a Telegram chat by name or username. Searches through user's chats and returns the first match.
1035
+ * @param args.name - Chat name, username (with or without @), or partial match to search for
1036
+ */
1037
+ findChatByName: (args: TelegramFindChatByNameArgs) => Promise<any>;
1038
+ /**
1039
+ * Search for messages across Telegram chats by content, date range, sender, or specific chats.
1040
+ * @param args.chatIds - Array of chat IDs to search within. If not provided, searches globally. (optional)
1041
+ * @param args.query - Text query to search for in messages (optional)
1042
+ * @param args.fromDate - ISO date string for start of date range (optional)
1043
+ * @param args.toDate - ISO date string for end of date range (optional)
1044
+ * @param args.limit - Maximum number of messages to return (default: 100, max: 100) (optional)
1045
+ * @param args.senderId - Filter messages by sender ID (optional)
1046
+ */
1047
+ searchMessages: (args: TelegramSearchMessagesArgs) => Promise<any>;
1048
+ /**
1049
+ * Get recent contacts from Telegram, optionally filtering for new contacts since a specific date.
1050
+ * @param args.sinceDate - ISO date string - only return contacts with activity since this date (optional)
1051
+ * @param args.onlyNewContacts - If true, only return contacts that are new (first message after sinceDate) (optional)
1052
+ * @param args.limit - Maximum number of contacts to return (default: 100, max: 100) (optional)
1053
+ */
1054
+ getRecentContacts: (args: TelegramGetRecentContactsArgs) => Promise<any>;
1055
+ /**
1056
+ * Get message history from a specific Telegram chat with pagination and date filtering.
1057
+ * @param args.chatId - Chat ID to retrieve messages from
1058
+ * @param args.limit - Maximum number of messages to return (default: 50, max: 100) (optional)
1059
+ * @param args.offsetId - Message ID to use as pagination offset (optional)
1060
+ * @param args.minDate - ISO date string for minimum message date (optional)
1061
+ * @param args.maxDate - ISO date string for maximum message date (optional)
1062
+ */
1063
+ getChatMessages: (args: TelegramGetChatMessagesArgs) => Promise<any>;
1064
+ /**
1065
+ * Get summary of unread messages across Telegram chats, including mentions and last message info.
1066
+ * @param args.chatIds - Array of chat IDs to filter by. If not provided, checks all chats. (optional)
1067
+ * @param args.priorityOnly - If true, only return chats with unread messages (optional)
1068
+ * @param args.groupBy - Group results by "chat" or "sender" (optional)
1069
+ */
1070
+ getUnreadSummary: (args: TelegramGetUnreadSummaryArgs) => Promise<any>;
1071
+ /**
1072
+ * Mark messages as read in a Telegram chat up to a specific message ID.
1073
+ * @param args.chatId - Chat ID to mark messages as read in
1074
+ * @param args.maxMessageId - Maximum message ID to mark as read. If not provided, marks all messages as read. (optional)
1075
+ */
1076
+ markAsRead: (args: TelegramMarkAsReadArgs) => Promise<any>;
1077
+ /**
1078
+ * Get messages where the user is mentioned in Telegram chats.
1079
+ * @param args.chatIds - Array of chat IDs to filter mentions by (optional)
1080
+ * @param args.sinceDate - ISO date string - only return mentions since this date (optional)
1081
+ * @param args.onlyUnread - If true, only return unread mentions (optional)
1082
+ */
1083
+ getMentions: (args: TelegramGetMentionsArgs) => Promise<any>;
1084
+ /**
1085
+ * Perform a global search across all Telegram chats for messages matching a query.
1086
+ * @param args.query - Search query text
1087
+ * @param args.filter - Filter results by chat type: "groups", "private", or "channels" (optional)
1088
+ * @param args.limit - Maximum number of results to return (default: 100, max: 100) (optional)
1089
+ */
1090
+ globalSearch: (args: TelegramGlobalSearchArgs) => Promise<any>;
1091
+ };
1092
+ /**
1093
+ * Gmail Adapter
1094
+ * Category: communication
1095
+ */
1096
+ declare function createGoogleGmailAdapter(sdk: MirraSDK): {
1097
+ /**
1098
+ * Send an email via Gmail
1099
+ * @param args.to - Valid email address
1100
+ * @param args.subject - Email subject line
1101
+ * @param args.body - Email body content
1102
+ * @param args.cc - CC recipients (comma-separated email addresses) (optional)
1103
+ * @param args.bcc - BCC recipients (comma-separated email addresses) (optional)
1104
+ * @param args.isHtml - Whether body is HTML format (optional)
1105
+ */
1106
+ sendEmail: (args: GoogleGmailSendEmailArgs) => Promise<any>;
1107
+ /**
1108
+ * Search emails with Gmail query syntax
1109
+ * @param args.query - Gmail search query (e.g., "from:user@example.com is:unread")
1110
+ * @param args.maxResults - Maximum number of results to return (default: 50, max: 100) (optional)
1111
+ */
1112
+ searchEmails: (args: GoogleGmailSearchEmailsArgs) => Promise<any>;
1113
+ /**
1114
+ * List recent emails from inbox
1115
+ * @param args.maxResults - Maximum number of results to return (default: 50, max: 100) (optional)
1116
+ */
1117
+ listEmails: (args: GoogleGmailListEmailsArgs) => Promise<any>;
1118
+ /**
1119
+ * Get details of a specific email by ID
1120
+ * @param args.messageId - Gmail message ID
1121
+ */
1122
+ getEmail: (args: GoogleGmailGetEmailArgs) => Promise<any>;
1123
+ /**
1124
+ * Create a draft email in Gmail
1125
+ * @param args.to - Valid email address
1126
+ * @param args.subject - Email subject line
1127
+ * @param args.body - Email body content
1128
+ * @param args.cc - CC recipients (comma-separated email addresses) (optional)
1129
+ * @param args.bcc - BCC recipients (comma-separated email addresses) (optional)
1130
+ * @param args.isHtml - Whether body is HTML format (optional)
1131
+ */
1132
+ createDraft: (args: GoogleGmailCreateDraftArgs) => Promise<any>;
1133
+ /**
1134
+ * Update an existing draft email
1135
+ * @param args.draftId - Gmail draft ID to update
1136
+ * @param args.to - Updated recipient email address(es) (optional)
1137
+ * @param args.subject - Updated email subject line (optional)
1138
+ * @param args.body - Updated email body content (optional)
1139
+ * @param args.cc - Updated CC recipients (optional)
1140
+ * @param args.bcc - Updated BCC recipients (optional)
1141
+ * @param args.isHtml - Whether body is HTML format (optional)
1142
+ */
1143
+ updateDraft: (args: GoogleGmailUpdateDraftArgs) => Promise<any>;
1144
+ /**
1145
+ * Delete a draft email
1146
+ * @param args.draftId - Gmail draft ID to delete
1147
+ */
1148
+ deleteDraft: (args: GoogleGmailDeleteDraftArgs) => Promise<any>;
1149
+ /**
1150
+ * List all draft emails
1151
+ * @param args.maxResults - Maximum number of drafts to return (default: 10) (optional)
1152
+ */
1153
+ listDrafts: (args: GoogleGmailListDraftsArgs) => Promise<any>;
1154
+ /**
1155
+ * Mark an email as read
1156
+ * @param args.messageId - Gmail message ID to mark as read
1157
+ */
1158
+ markAsRead: (args: GoogleGmailMarkAsReadArgs) => Promise<any>;
1159
+ /**
1160
+ * Mark an email as unread
1161
+ * @param args.messageId - Gmail message ID to mark as unread
1162
+ */
1163
+ markAsUnread: (args: GoogleGmailMarkAsUnreadArgs) => Promise<any>;
1164
+ /**
1165
+ * Delete an email
1166
+ * @param args.messageId - Gmail message ID to delete
1167
+ */
1168
+ deleteEmail: (args: GoogleGmailDeleteEmailArgs) => Promise<any>;
1169
+ };
1170
+ /**
1171
+ * Google Calendar Adapter
1172
+ * Category: productivity
1173
+ */
1174
+ declare function createGoogleCalendarAdapter(sdk: MirraSDK): {
1175
+ /**
1176
+ * Create a new calendar event
1177
+ * @param args.summary - Event title/summary
1178
+ * @param args.start - Start time object with dateTime and optional timeZone
1179
+ * @param args.end - End time object with dateTime and optional timeZone
1180
+ * @param args.description - Event description (optional)
1181
+ * @param args.location - Event location (optional)
1182
+ * @param args.attendees - Array of attendee email addresses (optional)
1183
+ */
1184
+ createEvent: (args: GoogleCalendarCreateEventArgs) => Promise<any>;
1185
+ /**
1186
+ * List calendar events
1187
+ * @param args.timeMin - Start time for events to list (ISO 8601) (optional)
1188
+ * @param args.timeMax - End time for events to list (ISO 8601) (optional)
1189
+ * @param args.maxResults - Maximum number of events to return (default: 50, max: 100) (optional)
1190
+ * @param args.query - Search query to filter events (optional)
1191
+ */
1192
+ listEvents: (args: GoogleCalendarListEventsArgs) => Promise<any>;
1193
+ /**
1194
+ * Get calendar events (alias for listEvents)
1195
+ * @param args.timeMin - Start time for events to list (ISO 8601) (optional)
1196
+ * @param args.timeMax - End time for events to list (ISO 8601) (optional)
1197
+ * @param args.maxResults - Maximum number of events to return (default: 50, max: 100) (optional)
1198
+ * @param args.query - Search query to filter events (optional)
1199
+ */
1200
+ getEvents: (args: GoogleCalendarGetEventsArgs) => Promise<any>;
1201
+ };
1202
+ /**
1203
+ * Google Drive Adapter
1204
+ * Category: storage
1205
+ */
1206
+ declare function createGoogleDriveAdapter(sdk: MirraSDK): {
1207
+ /**
1208
+ * List files in Google Drive
1209
+ * @param args.query - Search query (Google Drive query syntax) (optional)
1210
+ * @param args.pageSize - Maximum number of files to return (default: 20) (optional)
1211
+ */
1212
+ listFiles: (args: GoogleDriveListFilesArgs) => Promise<any>;
1213
+ /**
1214
+ * Create a new file in Google Drive
1215
+ * @param args.name - Name of the file
1216
+ * @param args.mimeType - MIME type of the file
1217
+ * @param args.folderId - Parent folder ID (optional) (optional)
1218
+ */
1219
+ createFile: (args: GoogleDriveCreateFileArgs) => Promise<any>;
1220
+ /**
1221
+ * Create a new folder in Google Drive
1222
+ * @param args.name - Name of the folder
1223
+ * @param args.parentFolderId - Parent folder ID (optional) (optional)
1224
+ */
1225
+ createFolder: (args: GoogleDriveCreateFolderArgs) => Promise<any>;
1226
+ /**
1227
+ * Get information about a file
1228
+ * @param args.fileId - ID of the file
1229
+ */
1230
+ getFileInfo: (args: GoogleDriveGetFileInfoArgs) => Promise<any>;
1231
+ /**
1232
+ * Share a file with others
1233
+ * @param args.fileId - ID of the file to share
1234
+ * @param args.email - Email address to share with (optional) (optional)
1235
+ * @param args.role - Permission role: reader, writer, commenter (default: reader) (optional)
1236
+ */
1237
+ shareFile: (args: GoogleDriveShareFileArgs) => Promise<any>;
1238
+ };
1239
+ /**
1240
+ * Google Sheets Adapter
1241
+ * Category: productivity
1242
+ */
1243
+ declare function createGoogleSheetsAdapter(sdk: MirraSDK): {
1244
+ /**
1245
+ * Create a new Google Sheets spreadsheet
1246
+ * @param args.title - Title of the spreadsheet
1247
+ */
1248
+ createSpreadsheet: (args: GoogleSheetsCreateSpreadsheetArgs) => Promise<any>;
1249
+ /**
1250
+ * Read data from a range in a spreadsheet
1251
+ * @param args.spreadsheetId - ID of the spreadsheet
1252
+ * @param args.range - Cell range (e.g., "Sheet1!A1:B10")
1253
+ */
1254
+ readRange: (args: GoogleSheetsReadRangeArgs) => Promise<any>;
1255
+ /**
1256
+ * Write data to a range in a spreadsheet
1257
+ * @param args.spreadsheetId - ID of the spreadsheet
1258
+ * @param args.range - Cell range (e.g., "Sheet1!A1:B10")
1259
+ * @param args.values - Data to write (2D array)
1260
+ */
1261
+ writeRange: (args: GoogleSheetsWriteRangeArgs) => Promise<any>;
1262
+ /**
1263
+ * Append a row to a spreadsheet
1264
+ * @param args.spreadsheetId - ID of the spreadsheet
1265
+ * @param args.sheetName - Name of the sheet
1266
+ * @param args.values - Row values to append
1267
+ */
1268
+ appendRow: (args: GoogleSheetsAppendRowArgs) => Promise<any>;
1269
+ };
1270
+ /**
1271
+ * Google Docs Adapter
1272
+ * Category: productivity
1273
+ */
1274
+ declare function createGoogleDocsAdapter(sdk: MirraSDK): {
1275
+ /**
1276
+ * Create a new Google Doc
1277
+ * @param args.title - Title of the document
1278
+ */
1279
+ createDocument: (args: GoogleDocsCreateDocumentArgs) => Promise<any>;
1280
+ /**
1281
+ * Get a Google Doc by ID
1282
+ * @param args.documentId - ID of the document
1283
+ */
1284
+ getDocument: (args: GoogleDocsGetDocumentArgs) => Promise<any>;
1285
+ /**
1286
+ * Append text to the end of a document
1287
+ * @param args.documentId - ID of the document
1288
+ * @param args.text - Text to append
1289
+ */
1290
+ appendText: (args: GoogleDocsAppendTextArgs) => Promise<any>;
1291
+ /**
1292
+ * Replace text in a document
1293
+ * @param args.documentId - ID of the document
1294
+ * @param args.searchText - Text to search for
1295
+ * @param args.replaceText - Text to replace with
1296
+ */
1297
+ replaceText: (args: GoogleDocsReplaceTextArgs) => Promise<any>;
1298
+ };
1299
+ /**
1300
+ * Jira Adapter
1301
+ * Category: project
1302
+ */
1303
+ declare function createJiraAdapter(sdk: MirraSDK): {
1304
+ /**
1305
+ * Create a new Jira issue
1306
+ * @param args.projectKey - Jira project key (e.g., "PROJ")
1307
+ * @param args.summary - Issue summary/title
1308
+ * @param args.description - Issue description (optional)
1309
+ * @param args.issueType - Issue type (Task, Bug, Story, etc.) (optional)
1310
+ */
1311
+ createIssue: (args: JiraCreateIssueArgs) => Promise<any>;
1312
+ /**
1313
+ * Search Jira issues using JQL
1314
+ * @param args.jql - JQL query string
1315
+ * @param args.maxResults - Maximum number of results (default: 50, max: 100) (optional)
1316
+ */
1317
+ searchIssues: (args: JiraSearchIssuesArgs) => Promise<any>;
1318
+ /**
1319
+ * Get a specific Jira issue by key or ID
1320
+ * @param args.issueKey - Issue key (e.g., "PROJ-123") or ID
1321
+ */
1322
+ getIssue: (args: JiraGetIssueArgs) => Promise<any>;
1323
+ /**
1324
+ * Update an existing Jira issue
1325
+ * @param args.issueKey - Issue key (e.g., "PROJ-123")
1326
+ * @param args.summary - New issue summary/title (optional)
1327
+ * @param args.description - New issue description (optional)
1328
+ */
1329
+ updateIssue: (args: JiraUpdateIssueArgs) => Promise<any>;
1330
+ /**
1331
+ * Delete a Jira issue
1332
+ * @param args.issueKey - Issue key (e.g., "PROJ-123")
1333
+ */
1334
+ deleteIssue: (args: JiraDeleteIssueArgs) => Promise<any>;
1335
+ /**
1336
+ * Add a comment to a Jira issue
1337
+ * @param args.issueKey - Issue key (e.g., "PROJ-123")
1338
+ * @param args.comment - Comment text
1339
+ */
1340
+ addComment: (args: JiraAddCommentArgs) => Promise<any>;
1341
+ /**
1342
+ * Transition a Jira issue to a different status
1343
+ * @param args.issueKey - Issue key (e.g., "PROJ-123")
1344
+ * @param args.transitionId - ID of the transition to perform
1345
+ */
1346
+ transitionIssue: (args: JiraTransitionIssueArgs) => Promise<any>;
1347
+ /**
1348
+ * Assign a Jira issue to a user
1349
+ * @param args.issueKey - Issue key (e.g., "PROJ-123")
1350
+ * @param args.accountId - Atlassian account ID of the assignee
1351
+ */
1352
+ assignIssue: (args: JiraAssignIssueArgs) => Promise<any>;
1353
+ /**
1354
+ * Get all accessible Jira projects
1355
+ */
1356
+ getProjects: (args?: {}) => Promise<any>;
1357
+ /**
1358
+ * List all accessible Jira projects (alias for getProjects)
1359
+ */
1360
+ listProjects: (args?: {}) => Promise<any>;
1361
+ /**
1362
+ * Get metadata for a specific Jira project
1363
+ * @param args.projectKey - Project key (e.g., "PROJ")
1364
+ */
1365
+ getProjectMetadata: (args: JiraGetProjectMetadataArgs) => Promise<any>;
1366
+ /**
1367
+ * Get available transitions for a Jira issue
1368
+ * @param args.issueKey - Issue key (e.g., "PROJ-123")
1369
+ */
1370
+ getTransitions: (args: JiraGetTransitionsArgs) => Promise<any>;
1371
+ /**
1372
+ * List users that can be assigned to issues in a project
1373
+ * @param args.projectKey - Project key (e.g., "PROJ")
1374
+ */
1375
+ listAssignableUsers: (args: JiraListAssignableUsersArgs) => Promise<any>;
1376
+ /**
1377
+ * Get available issue types for a project
1378
+ * @param args.projectKey - Project key (e.g., "PROJ")
1379
+ */
1380
+ getIssueTypes: (args: JiraGetIssueTypesArgs) => Promise<any>;
1381
+ };
1382
+ /**
1383
+ * Twitter Adapter
1384
+ * Category: social
1385
+ */
1386
+ declare function createTwitterAdapter(sdk: MirraSDK): {
1387
+ /**
1388
+ * Post a tweet
1389
+ * @param args.text - Tweet text (max 280 characters)
1390
+ */
1391
+ postTweet: (args: TwitterPostTweetArgs) => Promise<any>;
1392
+ /**
1393
+ * Retrieve tweets from a Twitter user
1394
+ * @param args.userId - Twitter user ID (recommended for stability and speed) (optional)
1395
+ * @param args.userName - Twitter username/screen name (alternative to userId) (optional)
1396
+ * @param args.cursor - Pagination cursor for next page of results (optional)
1397
+ * @param args.includeReplies - Whether to include replies in results (default: false) (optional)
1398
+ */
1399
+ getUserTweets: (args: TwitterGetUserTweetsArgs) => Promise<any>;
1400
+ };
1401
+ /**
1402
+ * Trello Adapter
1403
+ * Category: productivity
1404
+ */
1405
+ declare function createTrelloAdapter(sdk: MirraSDK): {
1406
+ /**
1407
+ * Get all boards for the authenticated user
1408
+ */
1409
+ getBoards: (args?: {}) => Promise<any>;
1410
+ /**
1411
+ * Get a specific board by ID including its lists
1412
+ * @param args.boardId - The ID of the board to retrieve
1413
+ */
1414
+ getBoard: (args: TrelloGetBoardArgs) => Promise<any>;
1415
+ /**
1416
+ * Create a new card in a Trello list
1417
+ * @param args.name - Card name/title
1418
+ * @param args.idList - ID of the list to add the card to
1419
+ * @param args.desc - Card description (supports markdown) (optional)
1420
+ */
1421
+ createCard: (args: TrelloCreateCardArgs) => Promise<any>;
1422
+ /**
1423
+ * Get a specific card by ID
1424
+ * @param args.cardId - The ID of the card to retrieve
1425
+ */
1426
+ getCard: (args: TrelloGetCardArgs) => Promise<any>;
1427
+ /**
1428
+ * Update an existing card
1429
+ * @param args.cardId - The ID of the card to update
1430
+ * @param args.name - New card name (optional)
1431
+ * @param args.desc - New card description (optional)
1432
+ * @param args.idList - Move card to a different list (optional)
1433
+ * @param args.closed - Archive the card (optional)
1434
+ */
1435
+ updateCard: (args: TrelloUpdateCardArgs) => Promise<any>;
1436
+ /**
1437
+ * Delete a card permanently
1438
+ * @param args.cardId - The ID of the card to delete
1439
+ */
1440
+ deleteCard: (args: TrelloDeleteCardArgs) => Promise<any>;
1441
+ /**
1442
+ * Create a new checklist on a card
1443
+ * @param args.cardId - The ID of the card to add the checklist to
1444
+ * @param args.name - Checklist name
1445
+ */
1446
+ createChecklist: (args: TrelloCreateChecklistArgs) => Promise<any>;
1447
+ /**
1448
+ * Get a specific checklist by ID
1449
+ * @param args.checklistId - The ID of the checklist to retrieve
1450
+ */
1451
+ getChecklist: (args: TrelloGetChecklistArgs) => Promise<any>;
1452
+ /**
1453
+ * Update a checklist name
1454
+ * @param args.checklistId - The ID of the checklist to update
1455
+ * @param args.name - New checklist name
1456
+ */
1457
+ updateChecklist: (args: TrelloUpdateChecklistArgs) => Promise<any>;
1458
+ /**
1459
+ * Delete a checklist from a card
1460
+ * @param args.checklistId - The ID of the checklist to delete
1461
+ */
1462
+ deleteChecklist: (args: TrelloDeleteChecklistArgs) => Promise<any>;
1463
+ /**
1464
+ * Add a check item to a checklist
1465
+ * @param args.checklistId - The ID of the checklist to add the item to
1466
+ * @param args.name - Check item text
1467
+ */
1468
+ addCheckItem: (args: TrelloAddCheckItemArgs) => Promise<any>;
1469
+ /**
1470
+ * Update a check item (name or completion state)
1471
+ * @param args.cardId - The ID of the card containing the check item
1472
+ * @param args.checkItemId - The ID of the check item to update
1473
+ * @param args.name - New check item text (optional)
1474
+ * @param args.state - Check state: "complete" or "incomplete" (optional)
1475
+ */
1476
+ updateCheckItem: (args: TrelloUpdateCheckItemArgs) => Promise<any>;
1477
+ /**
1478
+ * Delete a check item from a checklist
1479
+ * @param args.checklistId - The ID of the checklist containing the item
1480
+ * @param args.checkItemId - The ID of the check item to delete
1481
+ */
1482
+ deleteCheckItem: (args: TrelloDeleteCheckItemArgs) => Promise<any>;
1483
+ };
1484
+ /**
1485
+ * Jupiter Adapter
1486
+ * Category: crypto
1487
+ */
1488
+ declare function createJupiterAdapter(sdk: MirraSDK): {
1489
+ /**
1490
+ * Execute a token swap on Jupiter DEX
1491
+ * @param args.inputMint - Input token mint address
1492
+ * @param args.outputMint - Output token mint address
1493
+ * @param args.amount - Amount to swap (in smallest unit)
1494
+ * @param args.inputDecimals - Number of decimals for input token
1495
+ * @param args.slippageBps - Slippage tolerance in basis points (default: 50) (optional)
1496
+ */
1497
+ swap: (args: JupiterSwapArgs) => Promise<any>;
1498
+ /**
1499
+ * Get token holdings for a wallet
1500
+ * @param args.walletAddress - Wallet address to check (uses actor wallet if not provided) (optional)
1501
+ */
1502
+ getHoldings: (args: JupiterGetHoldingsArgs) => Promise<any>;
1503
+ /**
1504
+ * Get token security information using Jupiter Shield
1505
+ * @param args.tokenMint - Token mint address to check security for
1506
+ */
1507
+ getTokenSecurity: (args: JupiterGetTokenSecurityArgs) => Promise<any>;
1508
+ /**
1509
+ * Search for tokens by symbol, name, or mint address
1510
+ * @param args.query - Search query (symbol, name, or mint address)
1511
+ */
1512
+ searchTokens: (args: JupiterSearchTokensArgs) => Promise<any>;
1513
+ };
1514
+ /**
1515
+ * Crypto Adapter
1516
+ * Category: crypto
1517
+ */
1518
+ declare function createCryptoAdapter(sdk: MirraSDK): {
1519
+ /**
1520
+ * Get the current price of a crypto asset
1521
+ * @param args.tokenAddress - Token contract address (EVM: 0x..., SVM: base58)
1522
+ * @param args.chainName - Specific chain name (auto-detected if not provided) (optional)
1523
+ */
1524
+ getPrice: (args: CryptoGetPriceArgs) => Promise<any>;
1525
+ /**
1526
+ * Send cryptocurrency or tokens (creates pending transaction for signing)
1527
+ * @param args.recipient - Contact username, user ID, or Solana wallet address
1528
+ * @param args.token - Token symbol (SOL, USDC), name, or mint address
1529
+ * @param args.amount - Amount to send (in UI units)
1530
+ */
1531
+ sendToken: (args: CryptoSendTokenArgs) => Promise<any>;
1532
+ /**
1533
+ * Set up automated price monitoring with progressive alerts
1534
+ * @param args.tokenAddress - Token contract address to monitor
1535
+ * @param args.direction - Alert direction: "above" or "below"
1536
+ * @param args.targetPrice - Target price in USD to trigger alert
1537
+ * @param args.scriptId - ID of the script to execute when price target is reached
1538
+ * @param args.chainName - Chain name (auto-detected if not provided) (optional)
1539
+ * @param args.percentStep - Progressive alert step percentage (default: 0.1 = 10%) (optional)
1540
+ */
1541
+ monitorPrice: (args: CryptoMonitorPriceArgs) => Promise<any>;
1542
+ /**
1543
+ * List all active crypto price monitoring assignments
1544
+ */
1545
+ listSubscriptions: (args?: {}) => Promise<any>;
1546
+ /**
1547
+ * Stop monitoring a crypto asset
1548
+ * @param args.tokenAddress - Token address to stop monitoring
1549
+ */
1550
+ unsubscribeAsset: (args: CryptoUnsubscribeAssetArgs) => Promise<any>;
1551
+ };
1552
+ /**
1553
+ * Scripts Adapter
1554
+ * Category: productivity
1555
+ */
1556
+ declare function createScriptsAdapter(sdk: MirraSDK): {
1557
+ /**
1558
+ * Create a new script with initial version and API key. IMPORTANT: The script ID for subsequent operations (deployScript, executeScript, etc.) is returned at data._id in the response.
1559
+ * @param args.name - Name of the script
1560
+ * @param args.description - Description of what the script does (optional)
1561
+ * @param args.runtime - Lambda runtime (default: nodejs18) (optional)
1562
+ * @param args.config - Script configuration (timeout, memory, maxCostPerExecution, etc.) (optional)
1563
+ * @param args.code - Initial JavaScript/TypeScript code for the script
1564
+ */
1565
+ createScript: (args: ScriptsCreateScriptArgs) => Promise<any>;
1566
+ /**
1567
+ * Delete a script and all its versions
1568
+ * @param args.scriptId - ID of the script to delete
1569
+ */
1570
+ deleteScript: (args: ScriptsDeleteScriptArgs) => Promise<any>;
1571
+ /**
1572
+ * Create a new version of an existing script.
1573
+ * @param args.scriptId - ID of the script
1574
+ * @param args.code - Updated code for the new version
1575
+ * @param args.commitMessage - Description of changes in this version (optional)
1576
+ */
1577
+ createVersion: (args: ScriptsCreateVersionArgs) => Promise<any>;
1578
+ /**
1579
+ * List all versions of a script
1580
+ * @param args.scriptId - ID of the script
1581
+ */
1582
+ listVersions: (args: ScriptsListVersionsArgs) => Promise<any>;
1583
+ /**
1584
+ * Deploy a script version to AWS Lambda. Must be called after createScript to make the script executable.
1585
+ * @param args.scriptId - ID of the script to deploy (from createScript response at data._id)
1586
+ * @param args.version - Version number to deploy (default: latest) (optional)
1587
+ */
1588
+ deployScript: (args: ScriptsDeployScriptArgs) => Promise<any>;
1589
+ /**
1590
+ * Execute a deployed script with custom data. Script must be deployed first via deployScript.
1591
+ * @param args.scriptId - ID of the script to execute (from createScript response at data._id)
1592
+ * @param args.data - Input data to pass to the script (optional)
1593
+ * @param args.trigger - Trigger information (type, source, event) (optional)
1594
+ */
1595
+ executeScript: (args: ScriptsExecuteScriptArgs) => Promise<any>;
1596
+ /**
1597
+ * Get details of a specific script
1598
+ * @param args.scriptId - ID of the script
1599
+ */
1600
+ getScript: (args: ScriptsGetScriptArgs) => Promise<any>;
1601
+ /**
1602
+ * List all scripts owned by the user
1603
+ */
1604
+ listScripts: (args?: {}) => Promise<any>;
1605
+ /**
1606
+ * Get execution history for a script
1607
+ * @param args.scriptId - ID of the script
1608
+ * @param args.status - Filter by status (completed, failed, running) (optional)
1609
+ * @param args.limit - Maximum number of executions to return (default: 100) (optional)
1610
+ */
1611
+ getExecutions: (args: ScriptsGetExecutionsArgs) => Promise<any>;
1612
+ /**
1613
+ * Get details of a specific execution
1614
+ * @param args.executionId - ID of the execution
1615
+ */
1616
+ getExecution: (args: ScriptsGetExecutionArgs) => Promise<any>;
1617
+ /**
1618
+ * Publish a script to the marketplace
1619
+ * @param args.scriptId - ID of the script to publish
1620
+ * @param args.pricing - Pricing configuration for the marketplace (optional)
1621
+ */
1622
+ publishScript: (args: ScriptsPublishScriptArgs) => Promise<any>;
1623
+ /**
1624
+ * Remove a script from the marketplace
1625
+ * @param args.scriptId - ID of the script to unpublish
1626
+ */
1627
+ unpublishScript: (args: ScriptsUnpublishScriptArgs) => Promise<any>;
1628
+ /**
1629
+ * List all published scripts in the marketplace
1630
+ */
1631
+ listMarketplaceScripts: (args?: {}) => Promise<any>;
1632
+ /**
1633
+ * Get execution metrics for a script
1634
+ * @param args.scriptId - ID of the script
1635
+ */
1636
+ getMetrics: (args: ScriptsGetMetricsArgs) => Promise<any>;
1637
+ /**
1638
+ * Create a webhook endpoint for the script
1639
+ * @param args.scriptId - ID of the script
1640
+ * @param args.name - Name of the webhook
1641
+ * @param args.enabled - Whether webhook is enabled (default: true) (optional)
1642
+ */
1643
+ createWebhook: (args: ScriptsCreateWebhookArgs) => Promise<any>;
1644
+ /**
1645
+ * Create a cron schedule for the script
1646
+ * @param args.scriptId - ID of the script
1647
+ * @param args.name - Name of the schedule
1648
+ * @param args.cronExpression - Cron expression (e.g., "0 9 * * *" for daily at 9am)
1649
+ * @param args.enabled - Whether schedule is enabled (default: true) (optional)
1650
+ * @param args.data - Data to pass to the script on scheduled execution (optional)
1651
+ */
1652
+ createSchedule: (args: ScriptsCreateScheduleArgs) => Promise<any>;
1653
+ /**
1654
+ * Get the script code for a specific flow
1655
+ * @param args.flowId - ID of the flow to get script code for
1656
+ */
1657
+ getFlowScript: (args: ScriptsGetFlowScriptArgs) => Promise<any>;
1658
+ /**
1659
+ * Modify the script code for a flow. Automatically creates a copy if user doesn't own the original, deploys to Lambda, and updates the flow.
1660
+ * @param args.flowId - ID of the flow to modify
1661
+ * @param args.newCode - New code to deploy
1662
+ * @param args.commitMessage - Description of changes (optional)
1663
+ */
1664
+ modifyFlowScript: (args: ScriptsModifyFlowScriptArgs) => Promise<any>;
1665
+ /**
1666
+ * Validate script code BEFORE creating or deploying. Checks for: 1) Missing async handler wrapper (top-level await errors), 2) Invalid adapter operations. Returns validation errors with suggestions for fixes. ALWAYS use this before createScript/modifyFlowScript.
1667
+ * @param args.code - The script code to validate
1668
+ */
1669
+ lintScript: (args: ScriptsLintScriptArgs) => Promise<any>;
1670
+ };
1671
+ export declare const generatedAdapters: {
1672
+ flows: typeof createFlowsAdapter;
1673
+ user: typeof createUserAdapter;
1674
+ contacts: typeof createContactsAdapter;
1675
+ memory: typeof createMemoryAdapter;
1676
+ ai: typeof createAiAdapter;
1677
+ document: typeof createDocumentAdapter;
1678
+ feedItems: typeof createFeedItemsAdapter;
1679
+ telegram: typeof createTelegramAdapter;
1680
+ googleGmail: typeof createGoogleGmailAdapter;
1681
+ googleCalendar: typeof createGoogleCalendarAdapter;
1682
+ googleDrive: typeof createGoogleDriveAdapter;
1683
+ googleSheets: typeof createGoogleSheetsAdapter;
1684
+ googleDocs: typeof createGoogleDocsAdapter;
1685
+ jira: typeof createJiraAdapter;
1686
+ twitter: typeof createTwitterAdapter;
1687
+ trello: typeof createTrelloAdapter;
1688
+ jupiter: typeof createJupiterAdapter;
1689
+ crypto: typeof createCryptoAdapter;
1690
+ scripts: typeof createScriptsAdapter;
1691
+ };
1692
+ export {};
1693
+ //# sourceMappingURL=adapters.d.ts.map