@sardis/mcp-server 0.1.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.
Files changed (70) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/CLAUDE_DESKTOP_CONFIG.md +180 -0
  3. package/LICENSE +21 -0
  4. package/README.md +375 -0
  5. package/dist/api.d.ts +25 -0
  6. package/dist/api.d.ts.map +1 -0
  7. package/dist/api.js +70 -0
  8. package/dist/api.js.map +1 -0
  9. package/dist/cli.d.ts +12 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +274 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/config.d.ts +47 -0
  14. package/dist/config.d.ts.map +1 -0
  15. package/dist/config.js +82 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/index.d.ts +61 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +255 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/tools/agents.d.ts +7 -0
  22. package/dist/tools/agents.d.ts.map +1 -0
  23. package/dist/tools/agents.js +219 -0
  24. package/dist/tools/agents.js.map +1 -0
  25. package/dist/tools/approvals.d.ts +9 -0
  26. package/dist/tools/approvals.d.ts.map +1 -0
  27. package/dist/tools/approvals.js +308 -0
  28. package/dist/tools/approvals.js.map +1 -0
  29. package/dist/tools/cards.d.ts +9 -0
  30. package/dist/tools/cards.d.ts.map +1 -0
  31. package/dist/tools/cards.js +415 -0
  32. package/dist/tools/cards.js.map +1 -0
  33. package/dist/tools/fiat.d.ts +9 -0
  34. package/dist/tools/fiat.d.ts.map +1 -0
  35. package/dist/tools/fiat.js +394 -0
  36. package/dist/tools/fiat.js.map +1 -0
  37. package/dist/tools/holds.d.ts +7 -0
  38. package/dist/tools/holds.d.ts.map +1 -0
  39. package/dist/tools/holds.js +403 -0
  40. package/dist/tools/holds.js.map +1 -0
  41. package/dist/tools/index.d.ts +70 -0
  42. package/dist/tools/index.d.ts.map +1 -0
  43. package/dist/tools/index.js +152 -0
  44. package/dist/tools/index.js.map +1 -0
  45. package/dist/tools/payments.d.ts +47 -0
  46. package/dist/tools/payments.d.ts.map +1 -0
  47. package/dist/tools/payments.js +447 -0
  48. package/dist/tools/payments.js.map +1 -0
  49. package/dist/tools/policy.d.ts +41 -0
  50. package/dist/tools/policy.d.ts.map +1 -0
  51. package/dist/tools/policy.js +450 -0
  52. package/dist/tools/policy.js.map +1 -0
  53. package/dist/tools/spending.d.ts +9 -0
  54. package/dist/tools/spending.d.ts.map +1 -0
  55. package/dist/tools/spending.js +324 -0
  56. package/dist/tools/spending.js.map +1 -0
  57. package/dist/tools/types.d.ts +247 -0
  58. package/dist/tools/types.d.ts.map +1 -0
  59. package/dist/tools/types.js +71 -0
  60. package/dist/tools/types.js.map +1 -0
  61. package/dist/tools/wallet-management.d.ts +9 -0
  62. package/dist/tools/wallet-management.d.ts.map +1 -0
  63. package/dist/tools/wallet-management.js +222 -0
  64. package/dist/tools/wallet-management.js.map +1 -0
  65. package/dist/tools/wallets.d.ts +15 -0
  66. package/dist/tools/wallets.d.ts.map +1 -0
  67. package/dist/tools/wallets.js +112 -0
  68. package/dist/tools/wallets.js.map +1 -0
  69. package/mcp.json +283 -0
  70. package/package.json +145 -0
@@ -0,0 +1,415 @@
1
+ /**
2
+ * Virtual Card tools for MCP server
3
+ *
4
+ * Tools for issuing and managing virtual Visa/Mastercard cards via Lithic integration.
5
+ */
6
+ import { z } from 'zod';
7
+ import { getConfig } from '../config.js';
8
+ import { apiRequest } from '../api.js';
9
+ // Schemas
10
+ const IssueCardSchema = z.object({
11
+ wallet_id: z.string().describe('Wallet to link the card to'),
12
+ spending_limit: z.string().optional().describe('Card spending limit (e.g., "500.00")'),
13
+ merchant_lock: z.string().optional().describe('Lock card to specific merchant domain'),
14
+ nickname: z.string().optional().describe('Card nickname for identification'),
15
+ });
16
+ const CreateCardSchema = z.object({
17
+ limit: z.number().optional().describe('Card spending limit'),
18
+ type: z.enum(['single_use', 'merchant_locked', 'multi_use']).optional().describe('Card type'),
19
+ nickname: z.string().optional().describe('Card nickname'),
20
+ merchant_categories: z.array(z.string()).optional().describe('Allowed merchant categories'),
21
+ });
22
+ const CardIdSchema = z.object({
23
+ card_id: z.string().describe('Card ID'),
24
+ });
25
+ const ListCardsSchema = z.object({
26
+ wallet_id: z.string().optional().describe('Filter by wallet ID'),
27
+ status: z.enum(['active', 'frozen', 'cancelled']).optional().describe('Filter by status'),
28
+ });
29
+ // Tool definitions
30
+ export const cardToolDefinitions = [
31
+ {
32
+ name: 'sardis_issue_card',
33
+ description: 'Issue a new virtual Visa/Mastercard linked to a wallet. Cards can be used for online and physical purchases.',
34
+ inputSchema: {
35
+ type: 'object',
36
+ properties: {
37
+ wallet_id: { type: 'string', description: 'Wallet to link the card to' },
38
+ spending_limit: { type: 'string', description: 'Card spending limit (e.g., "500.00")' },
39
+ merchant_lock: { type: 'string', description: 'Lock card to specific merchant domain (e.g., "aws.amazon.com")' },
40
+ nickname: { type: 'string', description: 'Card nickname for identification' },
41
+ },
42
+ required: ['wallet_id'],
43
+ },
44
+ },
45
+ {
46
+ name: 'sardis_create_card',
47
+ description: 'Create a new virtual card (alias for sardis_issue_card). Cards can be used for online and physical purchases.',
48
+ inputSchema: {
49
+ type: 'object',
50
+ properties: {
51
+ limit: { type: 'number', description: 'Card spending limit' },
52
+ type: { type: 'string', enum: ['single_use', 'merchant_locked', 'multi_use'], description: 'Card type' },
53
+ nickname: { type: 'string', description: 'Card nickname for identification' },
54
+ merchant_categories: { type: 'array', items: { type: 'string' }, description: 'Allowed merchant categories' },
55
+ },
56
+ required: [],
57
+ },
58
+ },
59
+ {
60
+ name: 'sardis_get_card',
61
+ description: 'Get details of a specific virtual card including masked card number.',
62
+ inputSchema: {
63
+ type: 'object',
64
+ properties: {
65
+ card_id: { type: 'string', description: 'Card ID to retrieve' },
66
+ },
67
+ required: ['card_id'],
68
+ },
69
+ },
70
+ {
71
+ name: 'sardis_list_cards',
72
+ description: 'List all virtual cards, optionally filtered by wallet or status.',
73
+ inputSchema: {
74
+ type: 'object',
75
+ properties: {
76
+ wallet_id: { type: 'string', description: 'Filter by wallet ID' },
77
+ status: { type: 'string', enum: ['active', 'frozen', 'cancelled'], description: 'Filter by status' },
78
+ },
79
+ required: [],
80
+ },
81
+ },
82
+ {
83
+ name: 'sardis_freeze_card',
84
+ description: 'Temporarily freeze a card. Frozen cards cannot be used for transactions.',
85
+ inputSchema: {
86
+ type: 'object',
87
+ properties: {
88
+ card_id: { type: 'string', description: 'Card ID to freeze' },
89
+ },
90
+ required: ['card_id'],
91
+ },
92
+ },
93
+ {
94
+ name: 'sardis_unfreeze_card',
95
+ description: 'Unfreeze a previously frozen card.',
96
+ inputSchema: {
97
+ type: 'object',
98
+ properties: {
99
+ card_id: { type: 'string', description: 'Card ID to unfreeze' },
100
+ },
101
+ required: ['card_id'],
102
+ },
103
+ },
104
+ {
105
+ name: 'sardis_cancel_card',
106
+ description: 'Permanently cancel a card. This action cannot be undone.',
107
+ inputSchema: {
108
+ type: 'object',
109
+ properties: {
110
+ card_id: { type: 'string', description: 'Card ID to cancel' },
111
+ },
112
+ required: ['card_id'],
113
+ },
114
+ },
115
+ ];
116
+ // Tool handlers
117
+ export const cardToolHandlers = {
118
+ sardis_create_card: async (args) => {
119
+ const parsed = CreateCardSchema.safeParse(args);
120
+ if (!parsed.success) {
121
+ return {
122
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
123
+ isError: true,
124
+ };
125
+ }
126
+ const config = getConfig();
127
+ const cardId = `card_${Date.now().toString(36)}`;
128
+ if (!config.apiKey || config.mode === 'simulated') {
129
+ return {
130
+ content: [{
131
+ type: 'text',
132
+ text: JSON.stringify({
133
+ card_id: cardId,
134
+ wallet_id: config.walletId || 'wallet_simulated',
135
+ last_four: '4242',
136
+ network: 'visa',
137
+ status: 'active',
138
+ limit: parsed.data.limit?.toString() || 'unlimited',
139
+ type: parsed.data.type || 'multi_use',
140
+ nickname: parsed.data.nickname,
141
+ merchant_categories: parsed.data.merchant_categories,
142
+ created_at: new Date().toISOString(),
143
+ message: 'Virtual card created successfully',
144
+ }, null, 2),
145
+ }],
146
+ };
147
+ }
148
+ try {
149
+ const requestData = {
150
+ wallet_id: config.walletId,
151
+ spending_limit: parsed.data.limit?.toString(),
152
+ nickname: parsed.data.nickname,
153
+ type: parsed.data.type,
154
+ };
155
+ const result = await apiRequest('POST', '/api/v2/cards', requestData);
156
+ return {
157
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
158
+ };
159
+ }
160
+ catch (error) {
161
+ return {
162
+ content: [{
163
+ type: 'text',
164
+ text: `Failed to create card: ${error instanceof Error ? error.message : 'Unknown error'}`,
165
+ }],
166
+ isError: true,
167
+ };
168
+ }
169
+ },
170
+ sardis_issue_card: async (args) => {
171
+ const parsed = IssueCardSchema.safeParse(args);
172
+ if (!parsed.success) {
173
+ return {
174
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
175
+ isError: true,
176
+ };
177
+ }
178
+ const config = getConfig();
179
+ if (!config.apiKey || config.mode === 'simulated') {
180
+ const cardId = `card_${Date.now().toString(36)}`;
181
+ return {
182
+ content: [{
183
+ type: 'text',
184
+ text: JSON.stringify({
185
+ id: cardId,
186
+ wallet_id: parsed.data.wallet_id,
187
+ last_four: '4242',
188
+ network: 'visa',
189
+ status: 'active',
190
+ spending_limit: parsed.data.spending_limit || 'unlimited',
191
+ merchant_lock: parsed.data.merchant_lock,
192
+ nickname: parsed.data.nickname,
193
+ created_at: new Date().toISOString(),
194
+ message: 'Virtual card issued successfully (simulated)',
195
+ }, null, 2),
196
+ }],
197
+ };
198
+ }
199
+ try {
200
+ const result = await apiRequest('POST', '/api/v2/cards', parsed.data);
201
+ return {
202
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
203
+ };
204
+ }
205
+ catch (error) {
206
+ return {
207
+ content: [{
208
+ type: 'text',
209
+ text: `Failed to issue card: ${error instanceof Error ? error.message : 'Unknown error'}`,
210
+ }],
211
+ isError: true,
212
+ };
213
+ }
214
+ },
215
+ sardis_get_card: async (args) => {
216
+ const parsed = CardIdSchema.safeParse(args);
217
+ if (!parsed.success) {
218
+ return {
219
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
220
+ isError: true,
221
+ };
222
+ }
223
+ const config = getConfig();
224
+ if (!config.apiKey || config.mode === 'simulated') {
225
+ return {
226
+ content: [{
227
+ type: 'text',
228
+ text: JSON.stringify({
229
+ card_id: parsed.data.card_id,
230
+ id: parsed.data.card_id,
231
+ wallet_id: 'wallet_simulated',
232
+ last_four: '4242',
233
+ network: 'visa',
234
+ status: 'active',
235
+ spending_limit: '500.00',
236
+ created_at: new Date().toISOString(),
237
+ }, null, 2),
238
+ }],
239
+ };
240
+ }
241
+ try {
242
+ const result = await apiRequest('GET', `/api/v2/cards/${parsed.data.card_id}`);
243
+ return {
244
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
245
+ };
246
+ }
247
+ catch (error) {
248
+ return {
249
+ content: [{
250
+ type: 'text',
251
+ text: `Failed to get card: ${error instanceof Error ? error.message : 'Unknown error'}`,
252
+ }],
253
+ isError: true,
254
+ };
255
+ }
256
+ },
257
+ sardis_list_cards: async (args) => {
258
+ const parsed = ListCardsSchema.safeParse(args);
259
+ const config = getConfig();
260
+ if (!config.apiKey || config.mode === 'simulated') {
261
+ const cards = [{
262
+ id: 'card_simulated',
263
+ card_id: 'card_simulated',
264
+ wallet_id: parsed.success ? parsed.data.wallet_id || 'wallet_simulated' : 'wallet_simulated',
265
+ last_four: '4242',
266
+ network: 'visa',
267
+ status: parsed.success && parsed.data.status ? parsed.data.status : 'active',
268
+ spending_limit: '500.00',
269
+ created_at: new Date().toISOString(),
270
+ }];
271
+ return {
272
+ content: [{
273
+ type: 'text',
274
+ text: JSON.stringify(cards, null, 2),
275
+ }],
276
+ };
277
+ }
278
+ try {
279
+ const params = new URLSearchParams();
280
+ if (parsed.success && parsed.data.wallet_id)
281
+ params.append('wallet_id', parsed.data.wallet_id);
282
+ if (parsed.success && parsed.data.status)
283
+ params.append('status', parsed.data.status);
284
+ const url = `/api/v2/cards${params.toString() ? `?${params}` : ''}`;
285
+ const result = await apiRequest('GET', url);
286
+ return {
287
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
288
+ };
289
+ }
290
+ catch (error) {
291
+ return {
292
+ content: [{
293
+ type: 'text',
294
+ text: `Failed to list cards: ${error instanceof Error ? error.message : 'Unknown error'}`,
295
+ }],
296
+ isError: true,
297
+ };
298
+ }
299
+ },
300
+ sardis_freeze_card: async (args) => {
301
+ const parsed = CardIdSchema.safeParse(args);
302
+ if (!parsed.success) {
303
+ return {
304
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
305
+ isError: true,
306
+ };
307
+ }
308
+ const config = getConfig();
309
+ if (!config.apiKey || config.mode === 'simulated') {
310
+ return {
311
+ content: [{
312
+ type: 'text',
313
+ text: JSON.stringify({
314
+ id: parsed.data.card_id,
315
+ status: 'frozen',
316
+ frozen_at: new Date().toISOString(),
317
+ message: 'Card frozen successfully',
318
+ }, null, 2),
319
+ }],
320
+ };
321
+ }
322
+ try {
323
+ const result = await apiRequest('POST', `/api/v2/cards/${parsed.data.card_id}/freeze`, {});
324
+ return {
325
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
326
+ };
327
+ }
328
+ catch (error) {
329
+ return {
330
+ content: [{
331
+ type: 'text',
332
+ text: `Failed to freeze card: ${error instanceof Error ? error.message : 'Unknown error'}`,
333
+ }],
334
+ isError: true,
335
+ };
336
+ }
337
+ },
338
+ sardis_unfreeze_card: async (args) => {
339
+ const parsed = CardIdSchema.safeParse(args);
340
+ if (!parsed.success) {
341
+ return {
342
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
343
+ isError: true,
344
+ };
345
+ }
346
+ const config = getConfig();
347
+ if (!config.apiKey || config.mode === 'simulated') {
348
+ return {
349
+ content: [{
350
+ type: 'text',
351
+ text: JSON.stringify({
352
+ id: parsed.data.card_id,
353
+ status: 'active',
354
+ unfrozen_at: new Date().toISOString(),
355
+ message: 'Card unfrozen successfully',
356
+ }, null, 2),
357
+ }],
358
+ };
359
+ }
360
+ try {
361
+ const result = await apiRequest('POST', `/api/v2/cards/${parsed.data.card_id}/unfreeze`, {});
362
+ return {
363
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
364
+ };
365
+ }
366
+ catch (error) {
367
+ return {
368
+ content: [{
369
+ type: 'text',
370
+ text: `Failed to unfreeze card: ${error instanceof Error ? error.message : 'Unknown error'}`,
371
+ }],
372
+ isError: true,
373
+ };
374
+ }
375
+ },
376
+ sardis_cancel_card: async (args) => {
377
+ const parsed = CardIdSchema.safeParse(args);
378
+ if (!parsed.success) {
379
+ return {
380
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
381
+ isError: true,
382
+ };
383
+ }
384
+ const config = getConfig();
385
+ if (!config.apiKey || config.mode === 'simulated') {
386
+ return {
387
+ content: [{
388
+ type: 'text',
389
+ text: JSON.stringify({
390
+ id: parsed.data.card_id,
391
+ status: 'cancelled',
392
+ cancelled_at: new Date().toISOString(),
393
+ message: 'Card cancelled permanently',
394
+ }, null, 2),
395
+ }],
396
+ };
397
+ }
398
+ try {
399
+ const result = await apiRequest('DELETE', `/api/v2/cards/${parsed.data.card_id}`);
400
+ return {
401
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
402
+ };
403
+ }
404
+ catch (error) {
405
+ return {
406
+ content: [{
407
+ type: 'text',
408
+ text: `Failed to cancel card: ${error instanceof Error ? error.message : 'Unknown error'}`,
409
+ }],
410
+ isError: true,
411
+ };
412
+ }
413
+ },
414
+ };
415
+ //# sourceMappingURL=cards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards.js","sourceRoot":"","sources":["../../src/tools/cards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,UAAU;AACV,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC5D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACtF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACtF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CAC7E,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC5D,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACzD,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CAC5F,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;CACxC,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAChE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CAC1F,CAAC,CAAC;AAeH,mBAAmB;AACnB,MAAM,CAAC,MAAM,mBAAmB,GAAqB;IACnD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,8GAA8G;QAC3H,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;gBACxE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;gBACvF,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;gBAChH,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;aAC9E;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,+GAA+G;QAC5H,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;gBAC7D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE;gBACxG,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;gBAC7E,mBAAmB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,6BAA6B,EAAE;aAC9G;YACD,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,sEAAsE;QACnF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;aAChE;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,kEAAkE;QAC/E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;gBACjE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE;aACrG;YACD,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,0EAA0E;QACvF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;aAC9D;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,oCAAoC;QACjD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;aAChE;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,0DAA0D;QACvE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;aAC9D;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;CACF,CAAC;AAEF,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAgC;IAC3D,kBAAkB,EAAE,KAAK,EAAE,IAAa,EAAuB,EAAE;QAC/D,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,MAAM;4BACf,SAAS,EAAE,MAAM,CAAC,QAAQ,IAAI,kBAAkB;4BAChD,SAAS,EAAE,MAAM;4BACjB,OAAO,EAAE,MAAM;4BACf,MAAM,EAAE,QAAQ;4BAChB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,WAAW;4BACnD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW;4BACrC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;4BAC9B,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB;4BACpD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACpC,OAAO,EAAE,mCAAmC;yBAC7C,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG;gBAClB,SAAS,EAAE,MAAM,CAAC,QAAQ;gBAC1B,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;gBAC7C,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;gBAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;aACvB,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAc,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;YACnF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC3F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iBAAiB,EAAE,KAAK,EAAE,IAAa,EAAuB,EAAE;QAC9D,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,EAAE,EAAE,MAAM;4BACV,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;4BAChC,SAAS,EAAE,MAAM;4BACjB,OAAO,EAAE,MAAM;4BACf,MAAM,EAAE,QAAQ;4BAChB,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,WAAW;4BACzD,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;4BACxC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;4BAC9B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACpC,OAAO,EAAE,8CAA8C;yBACxD,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAc,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACnF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC1F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,eAAe,EAAE,KAAK,EAAE,IAAa,EAAuB,EAAE;QAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;4BAC5B,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;4BACvB,SAAS,EAAE,kBAAkB;4BAC7B,SAAS,EAAE,MAAM;4BACjB,OAAO,EAAE,MAAM;4BACf,MAAM,EAAE,QAAQ;4BAChB,cAAc,EAAE,QAAQ;4BACxB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;yBACrC,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAc,KAAK,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5F,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBACxF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iBAAiB,EAAE,KAAK,EAAE,IAAa,EAAuB,EAAE;QAC9D,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,CAAC;oBACb,EAAE,EAAE,gBAAgB;oBACpB,OAAO,EAAE,gBAAgB;oBACzB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC,CAAC,kBAAkB;oBAC5F,SAAS,EAAE,MAAM;oBACjB,OAAO,EAAE,MAAM;oBACf,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;oBAC5E,cAAc,EAAE,QAAQ;oBACxB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACrC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;qBACrC,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS;gBAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/F,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM;gBAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEtF,MAAM,GAAG,GAAG,gBAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACpE,MAAM,MAAM,GAAG,MAAM,UAAU,CAA2B,KAAK,EAAE,GAAG,CAAC,CAAC;YACtE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC1F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kBAAkB,EAAE,KAAK,EAAE,IAAa,EAAuB,EAAE;QAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;4BACvB,MAAM,EAAE,QAAQ;4BAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACnC,OAAO,EAAE,0BAA0B;yBACpC,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAc,MAAM,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,OAAO,SAAS,EAAE,EAAE,CAAC,CAAC;YACxG,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC3F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oBAAoB,EAAE,KAAK,EAAE,IAAa,EAAuB,EAAE;QACjE,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;4BACvB,MAAM,EAAE,QAAQ;4BAChB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACrC,OAAO,EAAE,4BAA4B;yBACtC,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAc,MAAM,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,OAAO,WAAW,EAAE,EAAE,CAAC,CAAC;YAC1G,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC7F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kBAAkB,EAAE,KAAK,EAAE,IAAa,EAAuB,EAAE;QAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;4BACvB,MAAM,EAAE,WAAW;4BACnB,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACtC,OAAO,EAAE,4BAA4B;yBACtC,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAc,QAAQ,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/F,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC3F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Fiat Rails tools for MCP server
3
+ *
4
+ * Tools for funding wallets from bank accounts and withdrawing to fiat.
5
+ */
6
+ import type { ToolDefinition, ToolHandler } from './types.js';
7
+ export declare const fiatToolDefinitions: ToolDefinition[];
8
+ export declare const fiatToolHandlers: Record<string, ToolHandler>;
9
+ //# sourceMappingURL=fiat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiat.d.ts","sourceRoot":"","sources":["../../src/tools/fiat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AA4C1E,eAAO,MAAM,mBAAmB,EAAE,cAAc,EAiF/C,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA+SxD,CAAC"}