telegram-jobs-contract 1.0.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 (47) hide show
  1. package/README.md +73 -0
  2. package/dist/contracts/bundles.contract.d.ts +183 -0
  3. package/dist/contracts/bundles.contract.d.ts.map +1 -0
  4. package/dist/contracts/bundles.contract.js +29 -0
  5. package/dist/contracts/channels.contract.d.ts +947 -0
  6. package/dist/contracts/channels.contract.d.ts.map +1 -0
  7. package/dist/contracts/channels.contract.js +114 -0
  8. package/dist/contracts/jobs.contract.d.ts +939 -0
  9. package/dist/contracts/jobs.contract.d.ts.map +1 -0
  10. package/dist/contracts/jobs.contract.js +69 -0
  11. package/dist/contracts/notifications.contract.d.ts +725 -0
  12. package/dist/contracts/notifications.contract.d.ts.map +1 -0
  13. package/dist/contracts/notifications.contract.js +65 -0
  14. package/dist/contracts/resume.contract.d.ts +87 -0
  15. package/dist/contracts/resume.contract.d.ts.map +1 -0
  16. package/dist/contracts/resume.contract.js +26 -0
  17. package/dist/contracts/sniper.contract.d.ts +108 -0
  18. package/dist/contracts/sniper.contract.d.ts.map +1 -0
  19. package/dist/contracts/sniper.contract.js +27 -0
  20. package/dist/contracts/stats.contract.d.ts +148 -0
  21. package/dist/contracts/stats.contract.d.ts.map +1 -0
  22. package/dist/contracts/stats.contract.js +41 -0
  23. package/dist/contracts/user.contract.d.ts +362 -0
  24. package/dist/contracts/user.contract.d.ts.map +1 -0
  25. package/dist/contracts/user.contract.js +31 -0
  26. package/dist/index.d.ts +3504 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +58 -0
  29. package/dist/schemas/bundles.d.ts +33 -0
  30. package/dist/schemas/bundles.d.ts.map +1 -0
  31. package/dist/schemas/bundles.js +15 -0
  32. package/dist/schemas/channels.d.ts +134 -0
  33. package/dist/schemas/channels.d.ts.map +1 -0
  34. package/dist/schemas/channels.js +25 -0
  35. package/dist/schemas/common.d.ts +12 -0
  36. package/dist/schemas/common.d.ts.map +1 -0
  37. package/dist/schemas/common.js +8 -0
  38. package/dist/schemas/errors.d.ts +29 -0
  39. package/dist/schemas/errors.d.ts.map +1 -0
  40. package/dist/schemas/errors.js +17 -0
  41. package/dist/schemas/jobs.d.ts +563 -0
  42. package/dist/schemas/jobs.d.ts.map +1 -0
  43. package/dist/schemas/jobs.js +64 -0
  44. package/dist/schemas/user.d.ts +262 -0
  45. package/dist/schemas/user.d.ts.map +1 -0
  46. package/dist/schemas/user.js +36 -0
  47. package/package.json +40 -0
@@ -0,0 +1,3504 @@
1
+ import { jobsContract } from './contracts/jobs.contract';
2
+ import { channelsContract } from './contracts/channels.contract';
3
+ import { userContract } from './contracts/user.contract';
4
+ import { resumeContract } from './contracts/resume.contract';
5
+ import { sniperContract } from './contracts/sniper.contract';
6
+ import { notificationsContract } from './contracts/notifications.contract';
7
+ import { statsContract, feedbackContract } from './contracts/stats.contract';
8
+ import { bundlesContract } from './contracts/bundles.contract';
9
+ export declare const apiContract: {
10
+ jobs: {
11
+ searchJobs: {
12
+ summary: "Search jobs with filters and pagination";
13
+ method: "POST";
14
+ body: import("zod").ZodObject<{
15
+ filters: import("zod").ZodObject<{
16
+ stack: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
17
+ level: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
18
+ jobFunction: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
19
+ locationType: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
20
+ excludedTitles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
21
+ muteKeywords: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
22
+ experienceYears: import("zod").ZodOptional<import("zod").ZodObject<{
23
+ min: import("zod").ZodOptional<import("zod").ZodNumber>;
24
+ max: import("zod").ZodOptional<import("zod").ZodNumber>;
25
+ }, "strip", import("zod").ZodTypeAny, {
26
+ min?: number | undefined;
27
+ max?: number | undefined;
28
+ }, {
29
+ min?: number | undefined;
30
+ max?: number | undefined;
31
+ }>>;
32
+ }, "strip", import("zod").ZodTypeAny, {
33
+ level?: string[] | undefined;
34
+ experienceYears?: {
35
+ min?: number | undefined;
36
+ max?: number | undefined;
37
+ } | undefined;
38
+ stack?: string[] | undefined;
39
+ jobFunction?: string[] | undefined;
40
+ locationType?: string[] | undefined;
41
+ excludedTitles?: string[] | undefined;
42
+ muteKeywords?: string[] | undefined;
43
+ }, {
44
+ level?: string[] | undefined;
45
+ experienceYears?: {
46
+ min?: number | undefined;
47
+ max?: number | undefined;
48
+ } | undefined;
49
+ stack?: string[] | undefined;
50
+ jobFunction?: string[] | undefined;
51
+ locationType?: string[] | undefined;
52
+ excludedTitles?: string[] | undefined;
53
+ muteKeywords?: string[] | undefined;
54
+ }>;
55
+ pagination: import("zod").ZodObject<{
56
+ limit: import("zod").ZodOptional<import("zod").ZodNumber>;
57
+ offset: import("zod").ZodOptional<import("zod").ZodNumber>;
58
+ }, "strip", import("zod").ZodTypeAny, {
59
+ limit?: number | undefined;
60
+ offset?: number | undefined;
61
+ }, {
62
+ limit?: number | undefined;
63
+ offset?: number | undefined;
64
+ }>;
65
+ }, "strip", import("zod").ZodTypeAny, {
66
+ filters: {
67
+ level?: string[] | undefined;
68
+ experienceYears?: {
69
+ min?: number | undefined;
70
+ max?: number | undefined;
71
+ } | undefined;
72
+ stack?: string[] | undefined;
73
+ jobFunction?: string[] | undefined;
74
+ locationType?: string[] | undefined;
75
+ excludedTitles?: string[] | undefined;
76
+ muteKeywords?: string[] | undefined;
77
+ };
78
+ pagination: {
79
+ limit?: number | undefined;
80
+ offset?: number | undefined;
81
+ };
82
+ }, {
83
+ filters: {
84
+ level?: string[] | undefined;
85
+ experienceYears?: {
86
+ min?: number | undefined;
87
+ max?: number | undefined;
88
+ } | undefined;
89
+ stack?: string[] | undefined;
90
+ jobFunction?: string[] | undefined;
91
+ locationType?: string[] | undefined;
92
+ excludedTitles?: string[] | undefined;
93
+ muteKeywords?: string[] | undefined;
94
+ };
95
+ pagination: {
96
+ limit?: number | undefined;
97
+ offset?: number | undefined;
98
+ };
99
+ }>;
100
+ path: "/api/jobs/search";
101
+ responses: {
102
+ 200: import("zod").ZodObject<{
103
+ success: import("zod").ZodLiteral<true>;
104
+ message: import("zod").ZodString;
105
+ data: import("zod").ZodObject<{
106
+ jobs: import("zod").ZodArray<import("zod").ZodObject<{
107
+ id: import("zod").ZodString;
108
+ telegramMessageId: import("zod").ZodString;
109
+ channelId: import("zod").ZodString;
110
+ channelUsername: import("zod").ZodOptional<import("zod").ZodString>;
111
+ senderUserId: import("zod").ZodOptional<import("zod").ZodString>;
112
+ senderUsername: import("zod").ZodOptional<import("zod").ZodString>;
113
+ rawText: import("zod").ZodString;
114
+ parsedData: import("zod").ZodOptional<import("zod").ZodObject<{
115
+ jobTitle: import("zod").ZodOptional<import("zod").ZodString>;
116
+ normalizedJobTitle: import("zod").ZodOptional<import("zod").ZodString>;
117
+ company: import("zod").ZodOptional<import("zod").ZodString>;
118
+ techStack: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
119
+ salary: import("zod").ZodOptional<import("zod").ZodString>;
120
+ contactInfo: import("zod").ZodOptional<import("zod").ZodObject<{
121
+ telegram: import("zod").ZodOptional<import("zod").ZodString>;
122
+ email: import("zod").ZodOptional<import("zod").ZodString>;
123
+ applicationUrl: import("zod").ZodOptional<import("zod").ZodString>;
124
+ other: import("zod").ZodOptional<import("zod").ZodString>;
125
+ }, "strip", import("zod").ZodTypeAny, {
126
+ telegram?: string | undefined;
127
+ email?: string | undefined;
128
+ applicationUrl?: string | undefined;
129
+ other?: string | undefined;
130
+ }, {
131
+ telegram?: string | undefined;
132
+ email?: string | undefined;
133
+ applicationUrl?: string | undefined;
134
+ other?: string | undefined;
135
+ }>>;
136
+ isRemote: import("zod").ZodOptional<import("zod").ZodBoolean>;
137
+ level: import("zod").ZodOptional<import("zod").ZodString>;
138
+ employmentType: import("zod").ZodOptional<import("zod").ZodString>;
139
+ location: import("zod").ZodOptional<import("zod").ZodString>;
140
+ candidateLocation: import("zod").ZodOptional<import("zod").ZodString>;
141
+ responsibilities: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
142
+ requiredQualifications: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
143
+ preferredQualifications: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
144
+ benefits: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
145
+ description: import("zod").ZodOptional<import("zod").ZodString>;
146
+ experienceYears: import("zod").ZodOptional<import("zod").ZodNumber>;
147
+ }, "strip", import("zod").ZodTypeAny, {
148
+ jobTitle?: string | undefined;
149
+ normalizedJobTitle?: string | undefined;
150
+ company?: string | undefined;
151
+ techStack?: string[] | undefined;
152
+ salary?: string | undefined;
153
+ contactInfo?: {
154
+ telegram?: string | undefined;
155
+ email?: string | undefined;
156
+ applicationUrl?: string | undefined;
157
+ other?: string | undefined;
158
+ } | undefined;
159
+ isRemote?: boolean | undefined;
160
+ level?: string | undefined;
161
+ employmentType?: string | undefined;
162
+ location?: string | undefined;
163
+ candidateLocation?: string | undefined;
164
+ responsibilities?: string[] | undefined;
165
+ requiredQualifications?: string[] | undefined;
166
+ preferredQualifications?: string[] | undefined;
167
+ benefits?: string[] | undefined;
168
+ description?: string | undefined;
169
+ experienceYears?: number | undefined;
170
+ }, {
171
+ jobTitle?: string | undefined;
172
+ normalizedJobTitle?: string | undefined;
173
+ company?: string | undefined;
174
+ techStack?: string[] | undefined;
175
+ salary?: string | undefined;
176
+ contactInfo?: {
177
+ telegram?: string | undefined;
178
+ email?: string | undefined;
179
+ applicationUrl?: string | undefined;
180
+ other?: string | undefined;
181
+ } | undefined;
182
+ isRemote?: boolean | undefined;
183
+ level?: string | undefined;
184
+ employmentType?: string | undefined;
185
+ location?: string | undefined;
186
+ candidateLocation?: string | undefined;
187
+ responsibilities?: string[] | undefined;
188
+ requiredQualifications?: string[] | undefined;
189
+ preferredQualifications?: string[] | undefined;
190
+ benefits?: string[] | undefined;
191
+ description?: string | undefined;
192
+ experienceYears?: number | undefined;
193
+ }>>;
194
+ status: import("zod").ZodOptional<import("zod").ZodEnum<["pending_parse", "parsed", "failed"]>>;
195
+ telegramMessageDate: import("zod").ZodOptional<import("zod").ZodString>;
196
+ createdAt: import("zod").ZodString;
197
+ updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
198
+ isVisited: import("zod").ZodOptional<import("zod").ZodBoolean>;
199
+ }, "strip", import("zod").ZodTypeAny, {
200
+ id: string;
201
+ telegramMessageId: string;
202
+ channelId: string;
203
+ rawText: string;
204
+ createdAt: string;
205
+ status?: "pending_parse" | "parsed" | "failed" | undefined;
206
+ channelUsername?: string | undefined;
207
+ senderUserId?: string | undefined;
208
+ senderUsername?: string | undefined;
209
+ parsedData?: {
210
+ jobTitle?: string | undefined;
211
+ normalizedJobTitle?: string | undefined;
212
+ company?: string | undefined;
213
+ techStack?: string[] | undefined;
214
+ salary?: string | undefined;
215
+ contactInfo?: {
216
+ telegram?: string | undefined;
217
+ email?: string | undefined;
218
+ applicationUrl?: string | undefined;
219
+ other?: string | undefined;
220
+ } | undefined;
221
+ isRemote?: boolean | undefined;
222
+ level?: string | undefined;
223
+ employmentType?: string | undefined;
224
+ location?: string | undefined;
225
+ candidateLocation?: string | undefined;
226
+ responsibilities?: string[] | undefined;
227
+ requiredQualifications?: string[] | undefined;
228
+ preferredQualifications?: string[] | undefined;
229
+ benefits?: string[] | undefined;
230
+ description?: string | undefined;
231
+ experienceYears?: number | undefined;
232
+ } | undefined;
233
+ telegramMessageDate?: string | undefined;
234
+ updatedAt?: string | undefined;
235
+ isVisited?: boolean | undefined;
236
+ }, {
237
+ id: string;
238
+ telegramMessageId: string;
239
+ channelId: string;
240
+ rawText: string;
241
+ createdAt: string;
242
+ status?: "pending_parse" | "parsed" | "failed" | undefined;
243
+ channelUsername?: string | undefined;
244
+ senderUserId?: string | undefined;
245
+ senderUsername?: string | undefined;
246
+ parsedData?: {
247
+ jobTitle?: string | undefined;
248
+ normalizedJobTitle?: string | undefined;
249
+ company?: string | undefined;
250
+ techStack?: string[] | undefined;
251
+ salary?: string | undefined;
252
+ contactInfo?: {
253
+ telegram?: string | undefined;
254
+ email?: string | undefined;
255
+ applicationUrl?: string | undefined;
256
+ other?: string | undefined;
257
+ } | undefined;
258
+ isRemote?: boolean | undefined;
259
+ level?: string | undefined;
260
+ employmentType?: string | undefined;
261
+ location?: string | undefined;
262
+ candidateLocation?: string | undefined;
263
+ responsibilities?: string[] | undefined;
264
+ requiredQualifications?: string[] | undefined;
265
+ preferredQualifications?: string[] | undefined;
266
+ benefits?: string[] | undefined;
267
+ description?: string | undefined;
268
+ experienceYears?: number | undefined;
269
+ } | undefined;
270
+ telegramMessageDate?: string | undefined;
271
+ updatedAt?: string | undefined;
272
+ isVisited?: boolean | undefined;
273
+ }>, "many">;
274
+ total: import("zod").ZodNumber;
275
+ limit: import("zod").ZodNumber;
276
+ offset: import("zod").ZodNumber;
277
+ }, "strip", import("zod").ZodTypeAny, {
278
+ jobs: {
279
+ id: string;
280
+ telegramMessageId: string;
281
+ channelId: string;
282
+ rawText: string;
283
+ createdAt: string;
284
+ status?: "pending_parse" | "parsed" | "failed" | undefined;
285
+ channelUsername?: string | undefined;
286
+ senderUserId?: string | undefined;
287
+ senderUsername?: string | undefined;
288
+ parsedData?: {
289
+ jobTitle?: string | undefined;
290
+ normalizedJobTitle?: string | undefined;
291
+ company?: string | undefined;
292
+ techStack?: string[] | undefined;
293
+ salary?: string | undefined;
294
+ contactInfo?: {
295
+ telegram?: string | undefined;
296
+ email?: string | undefined;
297
+ applicationUrl?: string | undefined;
298
+ other?: string | undefined;
299
+ } | undefined;
300
+ isRemote?: boolean | undefined;
301
+ level?: string | undefined;
302
+ employmentType?: string | undefined;
303
+ location?: string | undefined;
304
+ candidateLocation?: string | undefined;
305
+ responsibilities?: string[] | undefined;
306
+ requiredQualifications?: string[] | undefined;
307
+ preferredQualifications?: string[] | undefined;
308
+ benefits?: string[] | undefined;
309
+ description?: string | undefined;
310
+ experienceYears?: number | undefined;
311
+ } | undefined;
312
+ telegramMessageDate?: string | undefined;
313
+ updatedAt?: string | undefined;
314
+ isVisited?: boolean | undefined;
315
+ }[];
316
+ total: number;
317
+ limit: number;
318
+ offset: number;
319
+ }, {
320
+ jobs: {
321
+ id: string;
322
+ telegramMessageId: string;
323
+ channelId: string;
324
+ rawText: string;
325
+ createdAt: string;
326
+ status?: "pending_parse" | "parsed" | "failed" | undefined;
327
+ channelUsername?: string | undefined;
328
+ senderUserId?: string | undefined;
329
+ senderUsername?: string | undefined;
330
+ parsedData?: {
331
+ jobTitle?: string | undefined;
332
+ normalizedJobTitle?: string | undefined;
333
+ company?: string | undefined;
334
+ techStack?: string[] | undefined;
335
+ salary?: string | undefined;
336
+ contactInfo?: {
337
+ telegram?: string | undefined;
338
+ email?: string | undefined;
339
+ applicationUrl?: string | undefined;
340
+ other?: string | undefined;
341
+ } | undefined;
342
+ isRemote?: boolean | undefined;
343
+ level?: string | undefined;
344
+ employmentType?: string | undefined;
345
+ location?: string | undefined;
346
+ candidateLocation?: string | undefined;
347
+ responsibilities?: string[] | undefined;
348
+ requiredQualifications?: string[] | undefined;
349
+ preferredQualifications?: string[] | undefined;
350
+ benefits?: string[] | undefined;
351
+ description?: string | undefined;
352
+ experienceYears?: number | undefined;
353
+ } | undefined;
354
+ telegramMessageDate?: string | undefined;
355
+ updatedAt?: string | undefined;
356
+ isVisited?: boolean | undefined;
357
+ }[];
358
+ total: number;
359
+ limit: number;
360
+ offset: number;
361
+ }>;
362
+ }, "strip", import("zod").ZodTypeAny, {
363
+ message: string;
364
+ success: true;
365
+ data: {
366
+ jobs: {
367
+ id: string;
368
+ telegramMessageId: string;
369
+ channelId: string;
370
+ rawText: string;
371
+ createdAt: string;
372
+ status?: "pending_parse" | "parsed" | "failed" | undefined;
373
+ channelUsername?: string | undefined;
374
+ senderUserId?: string | undefined;
375
+ senderUsername?: string | undefined;
376
+ parsedData?: {
377
+ jobTitle?: string | undefined;
378
+ normalizedJobTitle?: string | undefined;
379
+ company?: string | undefined;
380
+ techStack?: string[] | undefined;
381
+ salary?: string | undefined;
382
+ contactInfo?: {
383
+ telegram?: string | undefined;
384
+ email?: string | undefined;
385
+ applicationUrl?: string | undefined;
386
+ other?: string | undefined;
387
+ } | undefined;
388
+ isRemote?: boolean | undefined;
389
+ level?: string | undefined;
390
+ employmentType?: string | undefined;
391
+ location?: string | undefined;
392
+ candidateLocation?: string | undefined;
393
+ responsibilities?: string[] | undefined;
394
+ requiredQualifications?: string[] | undefined;
395
+ preferredQualifications?: string[] | undefined;
396
+ benefits?: string[] | undefined;
397
+ description?: string | undefined;
398
+ experienceYears?: number | undefined;
399
+ } | undefined;
400
+ telegramMessageDate?: string | undefined;
401
+ updatedAt?: string | undefined;
402
+ isVisited?: boolean | undefined;
403
+ }[];
404
+ total: number;
405
+ limit: number;
406
+ offset: number;
407
+ };
408
+ }, {
409
+ message: string;
410
+ success: true;
411
+ data: {
412
+ jobs: {
413
+ id: string;
414
+ telegramMessageId: string;
415
+ channelId: string;
416
+ rawText: string;
417
+ createdAt: string;
418
+ status?: "pending_parse" | "parsed" | "failed" | undefined;
419
+ channelUsername?: string | undefined;
420
+ senderUserId?: string | undefined;
421
+ senderUsername?: string | undefined;
422
+ parsedData?: {
423
+ jobTitle?: string | undefined;
424
+ normalizedJobTitle?: string | undefined;
425
+ company?: string | undefined;
426
+ techStack?: string[] | undefined;
427
+ salary?: string | undefined;
428
+ contactInfo?: {
429
+ telegram?: string | undefined;
430
+ email?: string | undefined;
431
+ applicationUrl?: string | undefined;
432
+ other?: string | undefined;
433
+ } | undefined;
434
+ isRemote?: boolean | undefined;
435
+ level?: string | undefined;
436
+ employmentType?: string | undefined;
437
+ location?: string | undefined;
438
+ candidateLocation?: string | undefined;
439
+ responsibilities?: string[] | undefined;
440
+ requiredQualifications?: string[] | undefined;
441
+ preferredQualifications?: string[] | undefined;
442
+ benefits?: string[] | undefined;
443
+ description?: string | undefined;
444
+ experienceYears?: number | undefined;
445
+ } | undefined;
446
+ telegramMessageDate?: string | undefined;
447
+ updatedAt?: string | undefined;
448
+ isVisited?: boolean | undefined;
449
+ }[];
450
+ total: number;
451
+ limit: number;
452
+ offset: number;
453
+ };
454
+ }>;
455
+ 401: import("zod").ZodObject<{
456
+ success: import("zod").ZodLiteral<false>;
457
+ message: import("zod").ZodString;
458
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
459
+ }, "strip", import("zod").ZodTypeAny, {
460
+ message: string;
461
+ success: false;
462
+ errors?: any;
463
+ }, {
464
+ message: string;
465
+ success: false;
466
+ errors?: any;
467
+ }>;
468
+ 400: import("zod").ZodObject<{
469
+ success: import("zod").ZodLiteral<false>;
470
+ message: import("zod").ZodString;
471
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
472
+ }, "strip", import("zod").ZodTypeAny, {
473
+ message: string;
474
+ success: false;
475
+ errors?: any;
476
+ }, {
477
+ message: string;
478
+ success: false;
479
+ errors?: any;
480
+ }>;
481
+ 500: import("zod").ZodObject<{
482
+ success: import("zod").ZodLiteral<false>;
483
+ message: import("zod").ZodString;
484
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
485
+ }, "strip", import("zod").ZodTypeAny, {
486
+ message: string;
487
+ success: false;
488
+ errors?: any;
489
+ }, {
490
+ message: string;
491
+ success: false;
492
+ errors?: any;
493
+ }>;
494
+ };
495
+ };
496
+ getJobById: {
497
+ summary: "Get job by ID";
498
+ method: "GET";
499
+ path: "/api/jobs/:id";
500
+ responses: {
501
+ 200: import("zod").ZodObject<{
502
+ success: import("zod").ZodLiteral<true>;
503
+ message: import("zod").ZodString;
504
+ data: import("zod").ZodObject<{
505
+ id: import("zod").ZodString;
506
+ telegramMessageId: import("zod").ZodString;
507
+ channelId: import("zod").ZodString;
508
+ channelUsername: import("zod").ZodOptional<import("zod").ZodString>;
509
+ senderUserId: import("zod").ZodOptional<import("zod").ZodString>;
510
+ senderUsername: import("zod").ZodOptional<import("zod").ZodString>;
511
+ rawText: import("zod").ZodString;
512
+ parsedData: import("zod").ZodOptional<import("zod").ZodObject<{
513
+ jobTitle: import("zod").ZodOptional<import("zod").ZodString>;
514
+ normalizedJobTitle: import("zod").ZodOptional<import("zod").ZodString>;
515
+ company: import("zod").ZodOptional<import("zod").ZodString>;
516
+ techStack: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
517
+ salary: import("zod").ZodOptional<import("zod").ZodString>;
518
+ contactInfo: import("zod").ZodOptional<import("zod").ZodObject<{
519
+ telegram: import("zod").ZodOptional<import("zod").ZodString>;
520
+ email: import("zod").ZodOptional<import("zod").ZodString>;
521
+ applicationUrl: import("zod").ZodOptional<import("zod").ZodString>;
522
+ other: import("zod").ZodOptional<import("zod").ZodString>;
523
+ }, "strip", import("zod").ZodTypeAny, {
524
+ telegram?: string | undefined;
525
+ email?: string | undefined;
526
+ applicationUrl?: string | undefined;
527
+ other?: string | undefined;
528
+ }, {
529
+ telegram?: string | undefined;
530
+ email?: string | undefined;
531
+ applicationUrl?: string | undefined;
532
+ other?: string | undefined;
533
+ }>>;
534
+ isRemote: import("zod").ZodOptional<import("zod").ZodBoolean>;
535
+ level: import("zod").ZodOptional<import("zod").ZodString>;
536
+ employmentType: import("zod").ZodOptional<import("zod").ZodString>;
537
+ location: import("zod").ZodOptional<import("zod").ZodString>;
538
+ candidateLocation: import("zod").ZodOptional<import("zod").ZodString>;
539
+ responsibilities: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
540
+ requiredQualifications: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
541
+ preferredQualifications: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
542
+ benefits: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
543
+ description: import("zod").ZodOptional<import("zod").ZodString>;
544
+ experienceYears: import("zod").ZodOptional<import("zod").ZodNumber>;
545
+ }, "strip", import("zod").ZodTypeAny, {
546
+ jobTitle?: string | undefined;
547
+ normalizedJobTitle?: string | undefined;
548
+ company?: string | undefined;
549
+ techStack?: string[] | undefined;
550
+ salary?: string | undefined;
551
+ contactInfo?: {
552
+ telegram?: string | undefined;
553
+ email?: string | undefined;
554
+ applicationUrl?: string | undefined;
555
+ other?: string | undefined;
556
+ } | undefined;
557
+ isRemote?: boolean | undefined;
558
+ level?: string | undefined;
559
+ employmentType?: string | undefined;
560
+ location?: string | undefined;
561
+ candidateLocation?: string | undefined;
562
+ responsibilities?: string[] | undefined;
563
+ requiredQualifications?: string[] | undefined;
564
+ preferredQualifications?: string[] | undefined;
565
+ benefits?: string[] | undefined;
566
+ description?: string | undefined;
567
+ experienceYears?: number | undefined;
568
+ }, {
569
+ jobTitle?: string | undefined;
570
+ normalizedJobTitle?: string | undefined;
571
+ company?: string | undefined;
572
+ techStack?: string[] | undefined;
573
+ salary?: string | undefined;
574
+ contactInfo?: {
575
+ telegram?: string | undefined;
576
+ email?: string | undefined;
577
+ applicationUrl?: string | undefined;
578
+ other?: string | undefined;
579
+ } | undefined;
580
+ isRemote?: boolean | undefined;
581
+ level?: string | undefined;
582
+ employmentType?: string | undefined;
583
+ location?: string | undefined;
584
+ candidateLocation?: string | undefined;
585
+ responsibilities?: string[] | undefined;
586
+ requiredQualifications?: string[] | undefined;
587
+ preferredQualifications?: string[] | undefined;
588
+ benefits?: string[] | undefined;
589
+ description?: string | undefined;
590
+ experienceYears?: number | undefined;
591
+ }>>;
592
+ status: import("zod").ZodOptional<import("zod").ZodEnum<["pending_parse", "parsed", "failed"]>>;
593
+ telegramMessageDate: import("zod").ZodOptional<import("zod").ZodString>;
594
+ createdAt: import("zod").ZodString;
595
+ updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
596
+ isVisited: import("zod").ZodOptional<import("zod").ZodBoolean>;
597
+ }, "strip", import("zod").ZodTypeAny, {
598
+ id: string;
599
+ telegramMessageId: string;
600
+ channelId: string;
601
+ rawText: string;
602
+ createdAt: string;
603
+ status?: "pending_parse" | "parsed" | "failed" | undefined;
604
+ channelUsername?: string | undefined;
605
+ senderUserId?: string | undefined;
606
+ senderUsername?: string | undefined;
607
+ parsedData?: {
608
+ jobTitle?: string | undefined;
609
+ normalizedJobTitle?: string | undefined;
610
+ company?: string | undefined;
611
+ techStack?: string[] | undefined;
612
+ salary?: string | undefined;
613
+ contactInfo?: {
614
+ telegram?: string | undefined;
615
+ email?: string | undefined;
616
+ applicationUrl?: string | undefined;
617
+ other?: string | undefined;
618
+ } | undefined;
619
+ isRemote?: boolean | undefined;
620
+ level?: string | undefined;
621
+ employmentType?: string | undefined;
622
+ location?: string | undefined;
623
+ candidateLocation?: string | undefined;
624
+ responsibilities?: string[] | undefined;
625
+ requiredQualifications?: string[] | undefined;
626
+ preferredQualifications?: string[] | undefined;
627
+ benefits?: string[] | undefined;
628
+ description?: string | undefined;
629
+ experienceYears?: number | undefined;
630
+ } | undefined;
631
+ telegramMessageDate?: string | undefined;
632
+ updatedAt?: string | undefined;
633
+ isVisited?: boolean | undefined;
634
+ }, {
635
+ id: string;
636
+ telegramMessageId: string;
637
+ channelId: string;
638
+ rawText: string;
639
+ createdAt: string;
640
+ status?: "pending_parse" | "parsed" | "failed" | undefined;
641
+ channelUsername?: string | undefined;
642
+ senderUserId?: string | undefined;
643
+ senderUsername?: string | undefined;
644
+ parsedData?: {
645
+ jobTitle?: string | undefined;
646
+ normalizedJobTitle?: string | undefined;
647
+ company?: string | undefined;
648
+ techStack?: string[] | undefined;
649
+ salary?: string | undefined;
650
+ contactInfo?: {
651
+ telegram?: string | undefined;
652
+ email?: string | undefined;
653
+ applicationUrl?: string | undefined;
654
+ other?: string | undefined;
655
+ } | undefined;
656
+ isRemote?: boolean | undefined;
657
+ level?: string | undefined;
658
+ employmentType?: string | undefined;
659
+ location?: string | undefined;
660
+ candidateLocation?: string | undefined;
661
+ responsibilities?: string[] | undefined;
662
+ requiredQualifications?: string[] | undefined;
663
+ preferredQualifications?: string[] | undefined;
664
+ benefits?: string[] | undefined;
665
+ description?: string | undefined;
666
+ experienceYears?: number | undefined;
667
+ } | undefined;
668
+ telegramMessageDate?: string | undefined;
669
+ updatedAt?: string | undefined;
670
+ isVisited?: boolean | undefined;
671
+ }>;
672
+ }, "strip", import("zod").ZodTypeAny, {
673
+ message: string;
674
+ success: true;
675
+ data: {
676
+ id: string;
677
+ telegramMessageId: string;
678
+ channelId: string;
679
+ rawText: string;
680
+ createdAt: string;
681
+ status?: "pending_parse" | "parsed" | "failed" | undefined;
682
+ channelUsername?: string | undefined;
683
+ senderUserId?: string | undefined;
684
+ senderUsername?: string | undefined;
685
+ parsedData?: {
686
+ jobTitle?: string | undefined;
687
+ normalizedJobTitle?: string | undefined;
688
+ company?: string | undefined;
689
+ techStack?: string[] | undefined;
690
+ salary?: string | undefined;
691
+ contactInfo?: {
692
+ telegram?: string | undefined;
693
+ email?: string | undefined;
694
+ applicationUrl?: string | undefined;
695
+ other?: string | undefined;
696
+ } | undefined;
697
+ isRemote?: boolean | undefined;
698
+ level?: string | undefined;
699
+ employmentType?: string | undefined;
700
+ location?: string | undefined;
701
+ candidateLocation?: string | undefined;
702
+ responsibilities?: string[] | undefined;
703
+ requiredQualifications?: string[] | undefined;
704
+ preferredQualifications?: string[] | undefined;
705
+ benefits?: string[] | undefined;
706
+ description?: string | undefined;
707
+ experienceYears?: number | undefined;
708
+ } | undefined;
709
+ telegramMessageDate?: string | undefined;
710
+ updatedAt?: string | undefined;
711
+ isVisited?: boolean | undefined;
712
+ };
713
+ }, {
714
+ message: string;
715
+ success: true;
716
+ data: {
717
+ id: string;
718
+ telegramMessageId: string;
719
+ channelId: string;
720
+ rawText: string;
721
+ createdAt: string;
722
+ status?: "pending_parse" | "parsed" | "failed" | undefined;
723
+ channelUsername?: string | undefined;
724
+ senderUserId?: string | undefined;
725
+ senderUsername?: string | undefined;
726
+ parsedData?: {
727
+ jobTitle?: string | undefined;
728
+ normalizedJobTitle?: string | undefined;
729
+ company?: string | undefined;
730
+ techStack?: string[] | undefined;
731
+ salary?: string | undefined;
732
+ contactInfo?: {
733
+ telegram?: string | undefined;
734
+ email?: string | undefined;
735
+ applicationUrl?: string | undefined;
736
+ other?: string | undefined;
737
+ } | undefined;
738
+ isRemote?: boolean | undefined;
739
+ level?: string | undefined;
740
+ employmentType?: string | undefined;
741
+ location?: string | undefined;
742
+ candidateLocation?: string | undefined;
743
+ responsibilities?: string[] | undefined;
744
+ requiredQualifications?: string[] | undefined;
745
+ preferredQualifications?: string[] | undefined;
746
+ benefits?: string[] | undefined;
747
+ description?: string | undefined;
748
+ experienceYears?: number | undefined;
749
+ } | undefined;
750
+ telegramMessageDate?: string | undefined;
751
+ updatedAt?: string | undefined;
752
+ isVisited?: boolean | undefined;
753
+ };
754
+ }>;
755
+ 404: import("zod").ZodObject<{
756
+ success: import("zod").ZodLiteral<false>;
757
+ message: import("zod").ZodString;
758
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
759
+ }, "strip", import("zod").ZodTypeAny, {
760
+ message: string;
761
+ success: false;
762
+ errors?: any;
763
+ }, {
764
+ message: string;
765
+ success: false;
766
+ errors?: any;
767
+ }>;
768
+ 401: import("zod").ZodObject<{
769
+ success: import("zod").ZodLiteral<false>;
770
+ message: import("zod").ZodString;
771
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
772
+ }, "strip", import("zod").ZodTypeAny, {
773
+ message: string;
774
+ success: false;
775
+ errors?: any;
776
+ }, {
777
+ message: string;
778
+ success: false;
779
+ errors?: any;
780
+ }>;
781
+ 500: import("zod").ZodObject<{
782
+ success: import("zod").ZodLiteral<false>;
783
+ message: import("zod").ZodString;
784
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
785
+ }, "strip", import("zod").ZodTypeAny, {
786
+ message: string;
787
+ success: false;
788
+ errors?: any;
789
+ }, {
790
+ message: string;
791
+ success: false;
792
+ errors?: any;
793
+ }>;
794
+ };
795
+ };
796
+ markJobAsViewed: {
797
+ summary: "Mark job as viewed by user";
798
+ method: "POST";
799
+ body: import("zod").ZodObject<{}, "strip", import("zod").ZodTypeAny, {}, {}>;
800
+ path: "/api/jobs/:id/view";
801
+ responses: {
802
+ 200: import("zod").ZodObject<{
803
+ success: import("zod").ZodLiteral<true>;
804
+ message: import("zod").ZodString;
805
+ data: import("zod").ZodObject<{
806
+ success: import("zod").ZodBoolean;
807
+ }, "strip", import("zod").ZodTypeAny, {
808
+ success: boolean;
809
+ }, {
810
+ success: boolean;
811
+ }>;
812
+ }, "strip", import("zod").ZodTypeAny, {
813
+ message: string;
814
+ success: true;
815
+ data: {
816
+ success: boolean;
817
+ };
818
+ }, {
819
+ message: string;
820
+ success: true;
821
+ data: {
822
+ success: boolean;
823
+ };
824
+ }>;
825
+ 404: import("zod").ZodObject<{
826
+ success: import("zod").ZodLiteral<false>;
827
+ message: import("zod").ZodString;
828
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
829
+ }, "strip", import("zod").ZodTypeAny, {
830
+ message: string;
831
+ success: false;
832
+ errors?: any;
833
+ }, {
834
+ message: string;
835
+ success: false;
836
+ errors?: any;
837
+ }>;
838
+ 401: import("zod").ZodObject<{
839
+ success: import("zod").ZodLiteral<false>;
840
+ message: import("zod").ZodString;
841
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
842
+ }, "strip", import("zod").ZodTypeAny, {
843
+ message: string;
844
+ success: false;
845
+ errors?: any;
846
+ }, {
847
+ message: string;
848
+ success: false;
849
+ errors?: any;
850
+ }>;
851
+ 500: import("zod").ZodObject<{
852
+ success: import("zod").ZodLiteral<false>;
853
+ message: import("zod").ZodString;
854
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
855
+ }, "strip", import("zod").ZodTypeAny, {
856
+ message: string;
857
+ success: false;
858
+ errors?: any;
859
+ }, {
860
+ message: string;
861
+ success: false;
862
+ errors?: any;
863
+ }>;
864
+ };
865
+ };
866
+ searchSkills: {
867
+ query: import("zod").ZodObject<{
868
+ q: import("zod").ZodOptional<import("zod").ZodString>;
869
+ }, "strip", import("zod").ZodTypeAny, {
870
+ q?: string | undefined;
871
+ }, {
872
+ q?: string | undefined;
873
+ }>;
874
+ summary: "Autocomplete tech skills";
875
+ method: "GET";
876
+ path: "/api/jobs/skills/search";
877
+ responses: {
878
+ 200: import("zod").ZodObject<{
879
+ success: import("zod").ZodLiteral<true>;
880
+ message: import("zod").ZodString;
881
+ data: import("zod").ZodArray<import("zod").ZodString, "many">;
882
+ }, "strip", import("zod").ZodTypeAny, {
883
+ message: string;
884
+ success: true;
885
+ data: string[];
886
+ }, {
887
+ message: string;
888
+ success: true;
889
+ data: string[];
890
+ }>;
891
+ 500: import("zod").ZodObject<{
892
+ success: import("zod").ZodLiteral<false>;
893
+ message: import("zod").ZodString;
894
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
895
+ }, "strip", import("zod").ZodTypeAny, {
896
+ message: string;
897
+ success: false;
898
+ errors?: any;
899
+ }, {
900
+ message: string;
901
+ success: false;
902
+ errors?: any;
903
+ }>;
904
+ };
905
+ };
906
+ searchJobFunctions: {
907
+ query: import("zod").ZodObject<{
908
+ q: import("zod").ZodOptional<import("zod").ZodString>;
909
+ }, "strip", import("zod").ZodTypeAny, {
910
+ q?: string | undefined;
911
+ }, {
912
+ q?: string | undefined;
913
+ }>;
914
+ summary: "Autocomplete job functions";
915
+ method: "GET";
916
+ path: "/api/jobs/functions/search";
917
+ responses: {
918
+ 200: import("zod").ZodObject<{
919
+ success: import("zod").ZodLiteral<true>;
920
+ message: import("zod").ZodString;
921
+ data: import("zod").ZodArray<import("zod").ZodString, "many">;
922
+ }, "strip", import("zod").ZodTypeAny, {
923
+ message: string;
924
+ success: true;
925
+ data: string[];
926
+ }, {
927
+ message: string;
928
+ success: true;
929
+ data: string[];
930
+ }>;
931
+ 500: import("zod").ZodObject<{
932
+ success: import("zod").ZodLiteral<false>;
933
+ message: import("zod").ZodString;
934
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
935
+ }, "strip", import("zod").ZodTypeAny, {
936
+ message: string;
937
+ success: false;
938
+ errors?: any;
939
+ }, {
940
+ message: string;
941
+ success: false;
942
+ errors?: any;
943
+ }>;
944
+ };
945
+ };
946
+ };
947
+ channels: {
948
+ getAvailableChannels: {
949
+ summary: "Get all channels server monitors (authenticated)";
950
+ method: "GET";
951
+ path: "/api/channels/available";
952
+ responses: {
953
+ 200: import("zod").ZodObject<{
954
+ success: import("zod").ZodLiteral<true>;
955
+ message: import("zod").ZodString;
956
+ data: import("zod").ZodObject<{
957
+ channels: import("zod").ZodArray<import("zod").ZodObject<{
958
+ id: import("zod").ZodString;
959
+ username: import("zod").ZodString;
960
+ title: import("zod").ZodString;
961
+ description: import("zod").ZodOptional<import("zod").ZodString>;
962
+ category: import("zod").ZodOptional<import("zod").ZodString>;
963
+ memberCount: import("zod").ZodOptional<import("zod").ZodString>;
964
+ isActive: import("zod").ZodBoolean;
965
+ isRecommended: import("zod").ZodBoolean;
966
+ lastScrapedAt: import("zod").ZodOptional<import("zod").ZodString>;
967
+ createdAt: import("zod").ZodString;
968
+ updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
969
+ }, "strip", import("zod").ZodTypeAny, {
970
+ id: string;
971
+ createdAt: string;
972
+ username: string;
973
+ title: string;
974
+ isActive: boolean;
975
+ isRecommended: boolean;
976
+ description?: string | undefined;
977
+ updatedAt?: string | undefined;
978
+ category?: string | undefined;
979
+ memberCount?: string | undefined;
980
+ lastScrapedAt?: string | undefined;
981
+ }, {
982
+ id: string;
983
+ createdAt: string;
984
+ username: string;
985
+ title: string;
986
+ isActive: boolean;
987
+ isRecommended: boolean;
988
+ description?: string | undefined;
989
+ updatedAt?: string | undefined;
990
+ category?: string | undefined;
991
+ memberCount?: string | undefined;
992
+ lastScrapedAt?: string | undefined;
993
+ }>, "many">;
994
+ }, "strip", import("zod").ZodTypeAny, {
995
+ channels: {
996
+ id: string;
997
+ createdAt: string;
998
+ username: string;
999
+ title: string;
1000
+ isActive: boolean;
1001
+ isRecommended: boolean;
1002
+ description?: string | undefined;
1003
+ updatedAt?: string | undefined;
1004
+ category?: string | undefined;
1005
+ memberCount?: string | undefined;
1006
+ lastScrapedAt?: string | undefined;
1007
+ }[];
1008
+ }, {
1009
+ channels: {
1010
+ id: string;
1011
+ createdAt: string;
1012
+ username: string;
1013
+ title: string;
1014
+ isActive: boolean;
1015
+ isRecommended: boolean;
1016
+ description?: string | undefined;
1017
+ updatedAt?: string | undefined;
1018
+ category?: string | undefined;
1019
+ memberCount?: string | undefined;
1020
+ lastScrapedAt?: string | undefined;
1021
+ }[];
1022
+ }>;
1023
+ }, "strip", import("zod").ZodTypeAny, {
1024
+ message: string;
1025
+ success: true;
1026
+ data: {
1027
+ channels: {
1028
+ id: string;
1029
+ createdAt: string;
1030
+ username: string;
1031
+ title: string;
1032
+ isActive: boolean;
1033
+ isRecommended: boolean;
1034
+ description?: string | undefined;
1035
+ updatedAt?: string | undefined;
1036
+ category?: string | undefined;
1037
+ memberCount?: string | undefined;
1038
+ lastScrapedAt?: string | undefined;
1039
+ }[];
1040
+ };
1041
+ }, {
1042
+ message: string;
1043
+ success: true;
1044
+ data: {
1045
+ channels: {
1046
+ id: string;
1047
+ createdAt: string;
1048
+ username: string;
1049
+ title: string;
1050
+ isActive: boolean;
1051
+ isRecommended: boolean;
1052
+ description?: string | undefined;
1053
+ updatedAt?: string | undefined;
1054
+ category?: string | undefined;
1055
+ memberCount?: string | undefined;
1056
+ lastScrapedAt?: string | undefined;
1057
+ }[];
1058
+ };
1059
+ }>;
1060
+ 401: import("zod").ZodObject<{
1061
+ success: import("zod").ZodLiteral<false>;
1062
+ message: import("zod").ZodString;
1063
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1064
+ }, "strip", import("zod").ZodTypeAny, {
1065
+ message: string;
1066
+ success: false;
1067
+ errors?: any;
1068
+ }, {
1069
+ message: string;
1070
+ success: false;
1071
+ errors?: any;
1072
+ }>;
1073
+ 500: import("zod").ZodObject<{
1074
+ success: import("zod").ZodLiteral<false>;
1075
+ message: import("zod").ZodString;
1076
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1077
+ }, "strip", import("zod").ZodTypeAny, {
1078
+ message: string;
1079
+ success: false;
1080
+ errors?: any;
1081
+ }, {
1082
+ message: string;
1083
+ success: false;
1084
+ errors?: any;
1085
+ }>;
1086
+ };
1087
+ };
1088
+ getUserChannels: {
1089
+ summary: "Get user subscribed channels";
1090
+ method: "GET";
1091
+ path: "/api/channels/user-channels";
1092
+ responses: {
1093
+ 200: import("zod").ZodObject<{
1094
+ success: import("zod").ZodLiteral<true>;
1095
+ message: import("zod").ZodString;
1096
+ data: import("zod").ZodObject<{
1097
+ channels: import("zod").ZodArray<import("zod").ZodObject<{
1098
+ id: import("zod").ZodString;
1099
+ username: import("zod").ZodString;
1100
+ title: import("zod").ZodString;
1101
+ description: import("zod").ZodOptional<import("zod").ZodString>;
1102
+ category: import("zod").ZodOptional<import("zod").ZodString>;
1103
+ memberCount: import("zod").ZodOptional<import("zod").ZodString>;
1104
+ isActive: import("zod").ZodBoolean;
1105
+ isRecommended: import("zod").ZodBoolean;
1106
+ lastScrapedAt: import("zod").ZodOptional<import("zod").ZodString>;
1107
+ createdAt: import("zod").ZodString;
1108
+ updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
1109
+ }, "strip", import("zod").ZodTypeAny, {
1110
+ id: string;
1111
+ createdAt: string;
1112
+ username: string;
1113
+ title: string;
1114
+ isActive: boolean;
1115
+ isRecommended: boolean;
1116
+ description?: string | undefined;
1117
+ updatedAt?: string | undefined;
1118
+ category?: string | undefined;
1119
+ memberCount?: string | undefined;
1120
+ lastScrapedAt?: string | undefined;
1121
+ }, {
1122
+ id: string;
1123
+ createdAt: string;
1124
+ username: string;
1125
+ title: string;
1126
+ isActive: boolean;
1127
+ isRecommended: boolean;
1128
+ description?: string | undefined;
1129
+ updatedAt?: string | undefined;
1130
+ category?: string | undefined;
1131
+ memberCount?: string | undefined;
1132
+ lastScrapedAt?: string | undefined;
1133
+ }>, "many">;
1134
+ }, "strip", import("zod").ZodTypeAny, {
1135
+ channels: {
1136
+ id: string;
1137
+ createdAt: string;
1138
+ username: string;
1139
+ title: string;
1140
+ isActive: boolean;
1141
+ isRecommended: boolean;
1142
+ description?: string | undefined;
1143
+ updatedAt?: string | undefined;
1144
+ category?: string | undefined;
1145
+ memberCount?: string | undefined;
1146
+ lastScrapedAt?: string | undefined;
1147
+ }[];
1148
+ }, {
1149
+ channels: {
1150
+ id: string;
1151
+ createdAt: string;
1152
+ username: string;
1153
+ title: string;
1154
+ isActive: boolean;
1155
+ isRecommended: boolean;
1156
+ description?: string | undefined;
1157
+ updatedAt?: string | undefined;
1158
+ category?: string | undefined;
1159
+ memberCount?: string | undefined;
1160
+ lastScrapedAt?: string | undefined;
1161
+ }[];
1162
+ }>;
1163
+ }, "strip", import("zod").ZodTypeAny, {
1164
+ message: string;
1165
+ success: true;
1166
+ data: {
1167
+ channels: {
1168
+ id: string;
1169
+ createdAt: string;
1170
+ username: string;
1171
+ title: string;
1172
+ isActive: boolean;
1173
+ isRecommended: boolean;
1174
+ description?: string | undefined;
1175
+ updatedAt?: string | undefined;
1176
+ category?: string | undefined;
1177
+ memberCount?: string | undefined;
1178
+ lastScrapedAt?: string | undefined;
1179
+ }[];
1180
+ };
1181
+ }, {
1182
+ message: string;
1183
+ success: true;
1184
+ data: {
1185
+ channels: {
1186
+ id: string;
1187
+ createdAt: string;
1188
+ username: string;
1189
+ title: string;
1190
+ isActive: boolean;
1191
+ isRecommended: boolean;
1192
+ description?: string | undefined;
1193
+ updatedAt?: string | undefined;
1194
+ category?: string | undefined;
1195
+ memberCount?: string | undefined;
1196
+ lastScrapedAt?: string | undefined;
1197
+ }[];
1198
+ };
1199
+ }>;
1200
+ 401: import("zod").ZodObject<{
1201
+ success: import("zod").ZodLiteral<false>;
1202
+ message: import("zod").ZodString;
1203
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1204
+ }, "strip", import("zod").ZodTypeAny, {
1205
+ message: string;
1206
+ success: false;
1207
+ errors?: any;
1208
+ }, {
1209
+ message: string;
1210
+ success: false;
1211
+ errors?: any;
1212
+ }>;
1213
+ 500: import("zod").ZodObject<{
1214
+ success: import("zod").ZodLiteral<false>;
1215
+ message: import("zod").ZodString;
1216
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1217
+ }, "strip", import("zod").ZodTypeAny, {
1218
+ message: string;
1219
+ success: false;
1220
+ errors?: any;
1221
+ }, {
1222
+ message: string;
1223
+ success: false;
1224
+ errors?: any;
1225
+ }>;
1226
+ };
1227
+ };
1228
+ getRecommendedChannels: {
1229
+ summary: "Get recommended channels";
1230
+ method: "GET";
1231
+ path: "/api/channels/recommended";
1232
+ responses: {
1233
+ 200: import("zod").ZodObject<{
1234
+ success: import("zod").ZodLiteral<true>;
1235
+ message: import("zod").ZodString;
1236
+ data: import("zod").ZodArray<import("zod").ZodObject<{
1237
+ id: import("zod").ZodString;
1238
+ username: import("zod").ZodString;
1239
+ title: import("zod").ZodString;
1240
+ description: import("zod").ZodOptional<import("zod").ZodString>;
1241
+ category: import("zod").ZodOptional<import("zod").ZodString>;
1242
+ memberCount: import("zod").ZodOptional<import("zod").ZodString>;
1243
+ isActive: import("zod").ZodBoolean;
1244
+ isRecommended: import("zod").ZodBoolean;
1245
+ lastScrapedAt: import("zod").ZodOptional<import("zod").ZodString>;
1246
+ createdAt: import("zod").ZodString;
1247
+ updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
1248
+ }, "strip", import("zod").ZodTypeAny, {
1249
+ id: string;
1250
+ createdAt: string;
1251
+ username: string;
1252
+ title: string;
1253
+ isActive: boolean;
1254
+ isRecommended: boolean;
1255
+ description?: string | undefined;
1256
+ updatedAt?: string | undefined;
1257
+ category?: string | undefined;
1258
+ memberCount?: string | undefined;
1259
+ lastScrapedAt?: string | undefined;
1260
+ }, {
1261
+ id: string;
1262
+ createdAt: string;
1263
+ username: string;
1264
+ title: string;
1265
+ isActive: boolean;
1266
+ isRecommended: boolean;
1267
+ description?: string | undefined;
1268
+ updatedAt?: string | undefined;
1269
+ category?: string | undefined;
1270
+ memberCount?: string | undefined;
1271
+ lastScrapedAt?: string | undefined;
1272
+ }>, "many">;
1273
+ }, "strip", import("zod").ZodTypeAny, {
1274
+ message: string;
1275
+ success: true;
1276
+ data: {
1277
+ id: string;
1278
+ createdAt: string;
1279
+ username: string;
1280
+ title: string;
1281
+ isActive: boolean;
1282
+ isRecommended: boolean;
1283
+ description?: string | undefined;
1284
+ updatedAt?: string | undefined;
1285
+ category?: string | undefined;
1286
+ memberCount?: string | undefined;
1287
+ lastScrapedAt?: string | undefined;
1288
+ }[];
1289
+ }, {
1290
+ message: string;
1291
+ success: true;
1292
+ data: {
1293
+ id: string;
1294
+ createdAt: string;
1295
+ username: string;
1296
+ title: string;
1297
+ isActive: boolean;
1298
+ isRecommended: boolean;
1299
+ description?: string | undefined;
1300
+ updatedAt?: string | undefined;
1301
+ category?: string | undefined;
1302
+ memberCount?: string | undefined;
1303
+ lastScrapedAt?: string | undefined;
1304
+ }[];
1305
+ }>;
1306
+ 500: import("zod").ZodObject<{
1307
+ success: import("zod").ZodLiteral<false>;
1308
+ message: import("zod").ZodString;
1309
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1310
+ }, "strip", import("zod").ZodTypeAny, {
1311
+ message: string;
1312
+ success: false;
1313
+ errors?: any;
1314
+ }, {
1315
+ message: string;
1316
+ success: false;
1317
+ errors?: any;
1318
+ }>;
1319
+ };
1320
+ };
1321
+ getCategories: {
1322
+ summary: "Get all channel categories";
1323
+ method: "GET";
1324
+ path: "/api/channels/categories";
1325
+ responses: {
1326
+ 200: import("zod").ZodObject<{
1327
+ success: import("zod").ZodLiteral<true>;
1328
+ message: import("zod").ZodString;
1329
+ data: import("zod").ZodArray<import("zod").ZodObject<{
1330
+ name: import("zod").ZodString;
1331
+ count: import("zod").ZodNumber;
1332
+ }, "strip", import("zod").ZodTypeAny, {
1333
+ name: string;
1334
+ count: number;
1335
+ }, {
1336
+ name: string;
1337
+ count: number;
1338
+ }>, "many">;
1339
+ }, "strip", import("zod").ZodTypeAny, {
1340
+ message: string;
1341
+ success: true;
1342
+ data: {
1343
+ name: string;
1344
+ count: number;
1345
+ }[];
1346
+ }, {
1347
+ message: string;
1348
+ success: true;
1349
+ data: {
1350
+ name: string;
1351
+ count: number;
1352
+ }[];
1353
+ }>;
1354
+ 500: import("zod").ZodObject<{
1355
+ success: import("zod").ZodLiteral<false>;
1356
+ message: import("zod").ZodString;
1357
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1358
+ }, "strip", import("zod").ZodTypeAny, {
1359
+ message: string;
1360
+ success: false;
1361
+ errors?: any;
1362
+ }, {
1363
+ message: string;
1364
+ success: false;
1365
+ errors?: any;
1366
+ }>;
1367
+ };
1368
+ };
1369
+ exploreChannels: {
1370
+ summary: "Get explore channels modal data";
1371
+ method: "GET";
1372
+ path: "/api/channels/explore";
1373
+ responses: {
1374
+ 200: import("zod").ZodObject<{
1375
+ success: import("zod").ZodLiteral<true>;
1376
+ message: import("zod").ZodString;
1377
+ data: import("zod").ZodObject<{
1378
+ categories: import("zod").ZodArray<import("zod").ZodObject<{
1379
+ name: import("zod").ZodString;
1380
+ count: import("zod").ZodNumber;
1381
+ }, "strip", import("zod").ZodTypeAny, {
1382
+ name: string;
1383
+ count: number;
1384
+ }, {
1385
+ name: string;
1386
+ count: number;
1387
+ }>, "many">;
1388
+ channelsByCategory: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodArray<import("zod").ZodObject<{
1389
+ id: import("zod").ZodString;
1390
+ username: import("zod").ZodString;
1391
+ title: import("zod").ZodString;
1392
+ description: import("zod").ZodOptional<import("zod").ZodString>;
1393
+ category: import("zod").ZodOptional<import("zod").ZodString>;
1394
+ memberCount: import("zod").ZodOptional<import("zod").ZodString>;
1395
+ isActive: import("zod").ZodBoolean;
1396
+ isRecommended: import("zod").ZodBoolean;
1397
+ lastScrapedAt: import("zod").ZodOptional<import("zod").ZodString>;
1398
+ createdAt: import("zod").ZodString;
1399
+ updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
1400
+ }, "strip", import("zod").ZodTypeAny, {
1401
+ id: string;
1402
+ createdAt: string;
1403
+ username: string;
1404
+ title: string;
1405
+ isActive: boolean;
1406
+ isRecommended: boolean;
1407
+ description?: string | undefined;
1408
+ updatedAt?: string | undefined;
1409
+ category?: string | undefined;
1410
+ memberCount?: string | undefined;
1411
+ lastScrapedAt?: string | undefined;
1412
+ }, {
1413
+ id: string;
1414
+ createdAt: string;
1415
+ username: string;
1416
+ title: string;
1417
+ isActive: boolean;
1418
+ isRecommended: boolean;
1419
+ description?: string | undefined;
1420
+ updatedAt?: string | undefined;
1421
+ category?: string | undefined;
1422
+ memberCount?: string | undefined;
1423
+ lastScrapedAt?: string | undefined;
1424
+ }>, "many">>;
1425
+ }, "strip", import("zod").ZodTypeAny, {
1426
+ categories: {
1427
+ name: string;
1428
+ count: number;
1429
+ }[];
1430
+ channelsByCategory: Record<string, {
1431
+ id: string;
1432
+ createdAt: string;
1433
+ username: string;
1434
+ title: string;
1435
+ isActive: boolean;
1436
+ isRecommended: boolean;
1437
+ description?: string | undefined;
1438
+ updatedAt?: string | undefined;
1439
+ category?: string | undefined;
1440
+ memberCount?: string | undefined;
1441
+ lastScrapedAt?: string | undefined;
1442
+ }[]>;
1443
+ }, {
1444
+ categories: {
1445
+ name: string;
1446
+ count: number;
1447
+ }[];
1448
+ channelsByCategory: Record<string, {
1449
+ id: string;
1450
+ createdAt: string;
1451
+ username: string;
1452
+ title: string;
1453
+ isActive: boolean;
1454
+ isRecommended: boolean;
1455
+ description?: string | undefined;
1456
+ updatedAt?: string | undefined;
1457
+ category?: string | undefined;
1458
+ memberCount?: string | undefined;
1459
+ lastScrapedAt?: string | undefined;
1460
+ }[]>;
1461
+ }>;
1462
+ }, "strip", import("zod").ZodTypeAny, {
1463
+ message: string;
1464
+ success: true;
1465
+ data: {
1466
+ categories: {
1467
+ name: string;
1468
+ count: number;
1469
+ }[];
1470
+ channelsByCategory: Record<string, {
1471
+ id: string;
1472
+ createdAt: string;
1473
+ username: string;
1474
+ title: string;
1475
+ isActive: boolean;
1476
+ isRecommended: boolean;
1477
+ description?: string | undefined;
1478
+ updatedAt?: string | undefined;
1479
+ category?: string | undefined;
1480
+ memberCount?: string | undefined;
1481
+ lastScrapedAt?: string | undefined;
1482
+ }[]>;
1483
+ };
1484
+ }, {
1485
+ message: string;
1486
+ success: true;
1487
+ data: {
1488
+ categories: {
1489
+ name: string;
1490
+ count: number;
1491
+ }[];
1492
+ channelsByCategory: Record<string, {
1493
+ id: string;
1494
+ createdAt: string;
1495
+ username: string;
1496
+ title: string;
1497
+ isActive: boolean;
1498
+ isRecommended: boolean;
1499
+ description?: string | undefined;
1500
+ updatedAt?: string | undefined;
1501
+ category?: string | undefined;
1502
+ memberCount?: string | undefined;
1503
+ lastScrapedAt?: string | undefined;
1504
+ }[]>;
1505
+ };
1506
+ }>;
1507
+ 401: import("zod").ZodObject<{
1508
+ success: import("zod").ZodLiteral<false>;
1509
+ message: import("zod").ZodString;
1510
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1511
+ }, "strip", import("zod").ZodTypeAny, {
1512
+ message: string;
1513
+ success: false;
1514
+ errors?: any;
1515
+ }, {
1516
+ message: string;
1517
+ success: false;
1518
+ errors?: any;
1519
+ }>;
1520
+ 500: import("zod").ZodObject<{
1521
+ success: import("zod").ZodLiteral<false>;
1522
+ message: import("zod").ZodString;
1523
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1524
+ }, "strip", import("zod").ZodTypeAny, {
1525
+ message: string;
1526
+ success: false;
1527
+ errors?: any;
1528
+ }, {
1529
+ message: string;
1530
+ success: false;
1531
+ errors?: any;
1532
+ }>;
1533
+ };
1534
+ };
1535
+ searchChannels: {
1536
+ summary: "Search channels by query";
1537
+ method: "POST";
1538
+ body: import("zod").ZodObject<{
1539
+ query: import("zod").ZodString;
1540
+ }, "strip", import("zod").ZodTypeAny, {
1541
+ query: string;
1542
+ }, {
1543
+ query: string;
1544
+ }>;
1545
+ path: "/api/channels/search";
1546
+ responses: {
1547
+ 200: import("zod").ZodObject<{
1548
+ success: import("zod").ZodLiteral<true>;
1549
+ message: import("zod").ZodString;
1550
+ data: import("zod").ZodArray<import("zod").ZodObject<{
1551
+ id: import("zod").ZodString;
1552
+ username: import("zod").ZodString;
1553
+ title: import("zod").ZodString;
1554
+ description: import("zod").ZodOptional<import("zod").ZodString>;
1555
+ category: import("zod").ZodOptional<import("zod").ZodString>;
1556
+ memberCount: import("zod").ZodOptional<import("zod").ZodString>;
1557
+ isActive: import("zod").ZodBoolean;
1558
+ isRecommended: import("zod").ZodBoolean;
1559
+ lastScrapedAt: import("zod").ZodOptional<import("zod").ZodString>;
1560
+ createdAt: import("zod").ZodString;
1561
+ updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
1562
+ }, "strip", import("zod").ZodTypeAny, {
1563
+ id: string;
1564
+ createdAt: string;
1565
+ username: string;
1566
+ title: string;
1567
+ isActive: boolean;
1568
+ isRecommended: boolean;
1569
+ description?: string | undefined;
1570
+ updatedAt?: string | undefined;
1571
+ category?: string | undefined;
1572
+ memberCount?: string | undefined;
1573
+ lastScrapedAt?: string | undefined;
1574
+ }, {
1575
+ id: string;
1576
+ createdAt: string;
1577
+ username: string;
1578
+ title: string;
1579
+ isActive: boolean;
1580
+ isRecommended: boolean;
1581
+ description?: string | undefined;
1582
+ updatedAt?: string | undefined;
1583
+ category?: string | undefined;
1584
+ memberCount?: string | undefined;
1585
+ lastScrapedAt?: string | undefined;
1586
+ }>, "many">;
1587
+ }, "strip", import("zod").ZodTypeAny, {
1588
+ message: string;
1589
+ success: true;
1590
+ data: {
1591
+ id: string;
1592
+ createdAt: string;
1593
+ username: string;
1594
+ title: string;
1595
+ isActive: boolean;
1596
+ isRecommended: boolean;
1597
+ description?: string | undefined;
1598
+ updatedAt?: string | undefined;
1599
+ category?: string | undefined;
1600
+ memberCount?: string | undefined;
1601
+ lastScrapedAt?: string | undefined;
1602
+ }[];
1603
+ }, {
1604
+ message: string;
1605
+ success: true;
1606
+ data: {
1607
+ id: string;
1608
+ createdAt: string;
1609
+ username: string;
1610
+ title: string;
1611
+ isActive: boolean;
1612
+ isRecommended: boolean;
1613
+ description?: string | undefined;
1614
+ updatedAt?: string | undefined;
1615
+ category?: string | undefined;
1616
+ memberCount?: string | undefined;
1617
+ lastScrapedAt?: string | undefined;
1618
+ }[];
1619
+ }>;
1620
+ 400: import("zod").ZodObject<{
1621
+ success: import("zod").ZodLiteral<false>;
1622
+ message: import("zod").ZodString;
1623
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1624
+ }, "strip", import("zod").ZodTypeAny, {
1625
+ message: string;
1626
+ success: false;
1627
+ errors?: any;
1628
+ }, {
1629
+ message: string;
1630
+ success: false;
1631
+ errors?: any;
1632
+ }>;
1633
+ 500: import("zod").ZodObject<{
1634
+ success: import("zod").ZodLiteral<false>;
1635
+ message: import("zod").ZodString;
1636
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1637
+ }, "strip", import("zod").ZodTypeAny, {
1638
+ message: string;
1639
+ success: false;
1640
+ errors?: any;
1641
+ }, {
1642
+ message: string;
1643
+ success: false;
1644
+ errors?: any;
1645
+ }>;
1646
+ };
1647
+ };
1648
+ subscribeToChannels: {
1649
+ summary: "Subscribe to channels (replaces existing)";
1650
+ method: "POST";
1651
+ body: import("zod").ZodObject<{
1652
+ channelUsernames: import("zod").ZodArray<import("zod").ZodString, "many">;
1653
+ }, "strip", import("zod").ZodTypeAny, {
1654
+ channelUsernames: string[];
1655
+ }, {
1656
+ channelUsernames: string[];
1657
+ }>;
1658
+ path: "/api/channels/subscribe";
1659
+ responses: {
1660
+ 200: import("zod").ZodObject<{
1661
+ success: import("zod").ZodLiteral<true>;
1662
+ message: import("zod").ZodString;
1663
+ data: import("zod").ZodObject<{
1664
+ subscribedChannels: import("zod").ZodArray<import("zod").ZodString, "many">;
1665
+ message: import("zod").ZodString;
1666
+ }, "strip", import("zod").ZodTypeAny, {
1667
+ message: string;
1668
+ subscribedChannels: string[];
1669
+ }, {
1670
+ message: string;
1671
+ subscribedChannels: string[];
1672
+ }>;
1673
+ }, "strip", import("zod").ZodTypeAny, {
1674
+ message: string;
1675
+ success: true;
1676
+ data: {
1677
+ message: string;
1678
+ subscribedChannels: string[];
1679
+ };
1680
+ }, {
1681
+ message: string;
1682
+ success: true;
1683
+ data: {
1684
+ message: string;
1685
+ subscribedChannels: string[];
1686
+ };
1687
+ }>;
1688
+ 400: import("zod").ZodObject<{
1689
+ success: import("zod").ZodLiteral<false>;
1690
+ message: import("zod").ZodString;
1691
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1692
+ }, "strip", import("zod").ZodTypeAny, {
1693
+ message: string;
1694
+ success: false;
1695
+ errors?: any;
1696
+ }, {
1697
+ message: string;
1698
+ success: false;
1699
+ errors?: any;
1700
+ }>;
1701
+ 401: import("zod").ZodObject<{
1702
+ success: import("zod").ZodLiteral<false>;
1703
+ message: import("zod").ZodString;
1704
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1705
+ }, "strip", import("zod").ZodTypeAny, {
1706
+ message: string;
1707
+ success: false;
1708
+ errors?: any;
1709
+ }, {
1710
+ message: string;
1711
+ success: false;
1712
+ errors?: any;
1713
+ }>;
1714
+ 500: import("zod").ZodObject<{
1715
+ success: import("zod").ZodLiteral<false>;
1716
+ message: import("zod").ZodString;
1717
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1718
+ }, "strip", import("zod").ZodTypeAny, {
1719
+ message: string;
1720
+ success: false;
1721
+ errors?: any;
1722
+ }, {
1723
+ message: string;
1724
+ success: false;
1725
+ errors?: any;
1726
+ }>;
1727
+ };
1728
+ };
1729
+ addChannels: {
1730
+ summary: "Add channels to subscription";
1731
+ method: "POST";
1732
+ body: import("zod").ZodObject<{
1733
+ channelUsernames: import("zod").ZodArray<import("zod").ZodString, "many">;
1734
+ }, "strip", import("zod").ZodTypeAny, {
1735
+ channelUsernames: string[];
1736
+ }, {
1737
+ channelUsernames: string[];
1738
+ }>;
1739
+ path: "/api/channels/add";
1740
+ responses: {
1741
+ 200: import("zod").ZodObject<{
1742
+ success: import("zod").ZodLiteral<true>;
1743
+ message: import("zod").ZodString;
1744
+ data: import("zod").ZodObject<{
1745
+ subscribedChannels: import("zod").ZodArray<import("zod").ZodString, "many">;
1746
+ message: import("zod").ZodString;
1747
+ }, "strip", import("zod").ZodTypeAny, {
1748
+ message: string;
1749
+ subscribedChannels: string[];
1750
+ }, {
1751
+ message: string;
1752
+ subscribedChannels: string[];
1753
+ }>;
1754
+ }, "strip", import("zod").ZodTypeAny, {
1755
+ message: string;
1756
+ success: true;
1757
+ data: {
1758
+ message: string;
1759
+ subscribedChannels: string[];
1760
+ };
1761
+ }, {
1762
+ message: string;
1763
+ success: true;
1764
+ data: {
1765
+ message: string;
1766
+ subscribedChannels: string[];
1767
+ };
1768
+ }>;
1769
+ 400: import("zod").ZodObject<{
1770
+ success: import("zod").ZodLiteral<false>;
1771
+ message: import("zod").ZodString;
1772
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1773
+ }, "strip", import("zod").ZodTypeAny, {
1774
+ message: string;
1775
+ success: false;
1776
+ errors?: any;
1777
+ }, {
1778
+ message: string;
1779
+ success: false;
1780
+ errors?: any;
1781
+ }>;
1782
+ 401: import("zod").ZodObject<{
1783
+ success: import("zod").ZodLiteral<false>;
1784
+ message: import("zod").ZodString;
1785
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1786
+ }, "strip", import("zod").ZodTypeAny, {
1787
+ message: string;
1788
+ success: false;
1789
+ errors?: any;
1790
+ }, {
1791
+ message: string;
1792
+ success: false;
1793
+ errors?: any;
1794
+ }>;
1795
+ 500: import("zod").ZodObject<{
1796
+ success: import("zod").ZodLiteral<false>;
1797
+ message: import("zod").ZodString;
1798
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1799
+ }, "strip", import("zod").ZodTypeAny, {
1800
+ message: string;
1801
+ success: false;
1802
+ errors?: any;
1803
+ }, {
1804
+ message: string;
1805
+ success: false;
1806
+ errors?: any;
1807
+ }>;
1808
+ };
1809
+ };
1810
+ unsubscribeFromChannel: {
1811
+ summary: "Unsubscribe from channel";
1812
+ method: "POST";
1813
+ body: import("zod").ZodObject<{
1814
+ channelUsername: import("zod").ZodString;
1815
+ }, "strip", import("zod").ZodTypeAny, {
1816
+ channelUsername: string;
1817
+ }, {
1818
+ channelUsername: string;
1819
+ }>;
1820
+ path: "/api/channels/unsubscribe";
1821
+ responses: {
1822
+ 200: import("zod").ZodObject<{
1823
+ success: import("zod").ZodLiteral<true>;
1824
+ message: import("zod").ZodString;
1825
+ data: import("zod").ZodObject<{
1826
+ subscribedChannels: import("zod").ZodArray<import("zod").ZodString, "many">;
1827
+ message: import("zod").ZodString;
1828
+ }, "strip", import("zod").ZodTypeAny, {
1829
+ message: string;
1830
+ subscribedChannels: string[];
1831
+ }, {
1832
+ message: string;
1833
+ subscribedChannels: string[];
1834
+ }>;
1835
+ }, "strip", import("zod").ZodTypeAny, {
1836
+ message: string;
1837
+ success: true;
1838
+ data: {
1839
+ message: string;
1840
+ subscribedChannels: string[];
1841
+ };
1842
+ }, {
1843
+ message: string;
1844
+ success: true;
1845
+ data: {
1846
+ message: string;
1847
+ subscribedChannels: string[];
1848
+ };
1849
+ }>;
1850
+ 400: import("zod").ZodObject<{
1851
+ success: import("zod").ZodLiteral<false>;
1852
+ message: import("zod").ZodString;
1853
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1854
+ }, "strip", import("zod").ZodTypeAny, {
1855
+ message: string;
1856
+ success: false;
1857
+ errors?: any;
1858
+ }, {
1859
+ message: string;
1860
+ success: false;
1861
+ errors?: any;
1862
+ }>;
1863
+ 401: import("zod").ZodObject<{
1864
+ success: import("zod").ZodLiteral<false>;
1865
+ message: import("zod").ZodString;
1866
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1867
+ }, "strip", import("zod").ZodTypeAny, {
1868
+ message: string;
1869
+ success: false;
1870
+ errors?: any;
1871
+ }, {
1872
+ message: string;
1873
+ success: false;
1874
+ errors?: any;
1875
+ }>;
1876
+ 500: import("zod").ZodObject<{
1877
+ success: import("zod").ZodLiteral<false>;
1878
+ message: import("zod").ZodString;
1879
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
1880
+ }, "strip", import("zod").ZodTypeAny, {
1881
+ message: string;
1882
+ success: false;
1883
+ errors?: any;
1884
+ }, {
1885
+ message: string;
1886
+ success: false;
1887
+ errors?: any;
1888
+ }>;
1889
+ };
1890
+ };
1891
+ };
1892
+ user: {
1893
+ getFilterPreferences: {
1894
+ summary: "Get saved filter preferences";
1895
+ method: "GET";
1896
+ path: "/api/users/preferences/filters";
1897
+ responses: {
1898
+ 200: import("zod").ZodObject<{
1899
+ success: import("zod").ZodLiteral<true>;
1900
+ message: import("zod").ZodString;
1901
+ data: import("zod").ZodObject<{
1902
+ filters: import("zod").ZodOptional<import("zod").ZodObject<{
1903
+ stack: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
1904
+ level: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
1905
+ jobFunction: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
1906
+ locationType: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
1907
+ excludedTitles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
1908
+ muteKeywords: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
1909
+ experienceYears: import("zod").ZodOptional<import("zod").ZodObject<{
1910
+ min: import("zod").ZodOptional<import("zod").ZodNumber>;
1911
+ max: import("zod").ZodOptional<import("zod").ZodNumber>;
1912
+ }, "strip", import("zod").ZodTypeAny, {
1913
+ min?: number | undefined;
1914
+ max?: number | undefined;
1915
+ }, {
1916
+ min?: number | undefined;
1917
+ max?: number | undefined;
1918
+ }>>;
1919
+ }, "strip", import("zod").ZodTypeAny, {
1920
+ level?: string[] | undefined;
1921
+ experienceYears?: {
1922
+ min?: number | undefined;
1923
+ max?: number | undefined;
1924
+ } | undefined;
1925
+ stack?: string[] | undefined;
1926
+ jobFunction?: string[] | undefined;
1927
+ locationType?: string[] | undefined;
1928
+ excludedTitles?: string[] | undefined;
1929
+ muteKeywords?: string[] | undefined;
1930
+ }, {
1931
+ level?: string[] | undefined;
1932
+ experienceYears?: {
1933
+ min?: number | undefined;
1934
+ max?: number | undefined;
1935
+ } | undefined;
1936
+ stack?: string[] | undefined;
1937
+ jobFunction?: string[] | undefined;
1938
+ locationType?: string[] | undefined;
1939
+ excludedTitles?: string[] | undefined;
1940
+ muteKeywords?: string[] | undefined;
1941
+ }>>;
1942
+ }, "strip", import("zod").ZodTypeAny, {
1943
+ filters?: {
1944
+ level?: string[] | undefined;
1945
+ experienceYears?: {
1946
+ min?: number | undefined;
1947
+ max?: number | undefined;
1948
+ } | undefined;
1949
+ stack?: string[] | undefined;
1950
+ jobFunction?: string[] | undefined;
1951
+ locationType?: string[] | undefined;
1952
+ excludedTitles?: string[] | undefined;
1953
+ muteKeywords?: string[] | undefined;
1954
+ } | undefined;
1955
+ }, {
1956
+ filters?: {
1957
+ level?: string[] | undefined;
1958
+ experienceYears?: {
1959
+ min?: number | undefined;
1960
+ max?: number | undefined;
1961
+ } | undefined;
1962
+ stack?: string[] | undefined;
1963
+ jobFunction?: string[] | undefined;
1964
+ locationType?: string[] | undefined;
1965
+ excludedTitles?: string[] | undefined;
1966
+ muteKeywords?: string[] | undefined;
1967
+ } | undefined;
1968
+ }>;
1969
+ }, "strip", import("zod").ZodTypeAny, {
1970
+ message: string;
1971
+ success: true;
1972
+ data: {
1973
+ filters?: {
1974
+ level?: string[] | undefined;
1975
+ experienceYears?: {
1976
+ min?: number | undefined;
1977
+ max?: number | undefined;
1978
+ } | undefined;
1979
+ stack?: string[] | undefined;
1980
+ jobFunction?: string[] | undefined;
1981
+ locationType?: string[] | undefined;
1982
+ excludedTitles?: string[] | undefined;
1983
+ muteKeywords?: string[] | undefined;
1984
+ } | undefined;
1985
+ };
1986
+ }, {
1987
+ message: string;
1988
+ success: true;
1989
+ data: {
1990
+ filters?: {
1991
+ level?: string[] | undefined;
1992
+ experienceYears?: {
1993
+ min?: number | undefined;
1994
+ max?: number | undefined;
1995
+ } | undefined;
1996
+ stack?: string[] | undefined;
1997
+ jobFunction?: string[] | undefined;
1998
+ locationType?: string[] | undefined;
1999
+ excludedTitles?: string[] | undefined;
2000
+ muteKeywords?: string[] | undefined;
2001
+ } | undefined;
2002
+ };
2003
+ }>;
2004
+ 401: import("zod").ZodObject<{
2005
+ success: import("zod").ZodLiteral<false>;
2006
+ message: import("zod").ZodString;
2007
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2008
+ }, "strip", import("zod").ZodTypeAny, {
2009
+ message: string;
2010
+ success: false;
2011
+ errors?: any;
2012
+ }, {
2013
+ message: string;
2014
+ success: false;
2015
+ errors?: any;
2016
+ }>;
2017
+ 500: import("zod").ZodObject<{
2018
+ success: import("zod").ZodLiteral<false>;
2019
+ message: import("zod").ZodString;
2020
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2021
+ }, "strip", import("zod").ZodTypeAny, {
2022
+ message: string;
2023
+ success: false;
2024
+ errors?: any;
2025
+ }, {
2026
+ message: string;
2027
+ success: false;
2028
+ errors?: any;
2029
+ }>;
2030
+ };
2031
+ };
2032
+ saveFilterPreferences: {
2033
+ summary: "Save filter preferences";
2034
+ method: "PUT";
2035
+ body: import("zod").ZodObject<{
2036
+ filters: import("zod").ZodOptional<import("zod").ZodObject<{
2037
+ stack: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2038
+ level: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2039
+ jobFunction: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2040
+ locationType: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2041
+ excludedTitles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2042
+ muteKeywords: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2043
+ experienceYears: import("zod").ZodOptional<import("zod").ZodObject<{
2044
+ min: import("zod").ZodOptional<import("zod").ZodNumber>;
2045
+ max: import("zod").ZodOptional<import("zod").ZodNumber>;
2046
+ }, "strip", import("zod").ZodTypeAny, {
2047
+ min?: number | undefined;
2048
+ max?: number | undefined;
2049
+ }, {
2050
+ min?: number | undefined;
2051
+ max?: number | undefined;
2052
+ }>>;
2053
+ }, "strip", import("zod").ZodTypeAny, {
2054
+ level?: string[] | undefined;
2055
+ experienceYears?: {
2056
+ min?: number | undefined;
2057
+ max?: number | undefined;
2058
+ } | undefined;
2059
+ stack?: string[] | undefined;
2060
+ jobFunction?: string[] | undefined;
2061
+ locationType?: string[] | undefined;
2062
+ excludedTitles?: string[] | undefined;
2063
+ muteKeywords?: string[] | undefined;
2064
+ }, {
2065
+ level?: string[] | undefined;
2066
+ experienceYears?: {
2067
+ min?: number | undefined;
2068
+ max?: number | undefined;
2069
+ } | undefined;
2070
+ stack?: string[] | undefined;
2071
+ jobFunction?: string[] | undefined;
2072
+ locationType?: string[] | undefined;
2073
+ excludedTitles?: string[] | undefined;
2074
+ muteKeywords?: string[] | undefined;
2075
+ }>>;
2076
+ }, "strip", import("zod").ZodTypeAny, {
2077
+ filters?: {
2078
+ level?: string[] | undefined;
2079
+ experienceYears?: {
2080
+ min?: number | undefined;
2081
+ max?: number | undefined;
2082
+ } | undefined;
2083
+ stack?: string[] | undefined;
2084
+ jobFunction?: string[] | undefined;
2085
+ locationType?: string[] | undefined;
2086
+ excludedTitles?: string[] | undefined;
2087
+ muteKeywords?: string[] | undefined;
2088
+ } | undefined;
2089
+ }, {
2090
+ filters?: {
2091
+ level?: string[] | undefined;
2092
+ experienceYears?: {
2093
+ min?: number | undefined;
2094
+ max?: number | undefined;
2095
+ } | undefined;
2096
+ stack?: string[] | undefined;
2097
+ jobFunction?: string[] | undefined;
2098
+ locationType?: string[] | undefined;
2099
+ excludedTitles?: string[] | undefined;
2100
+ muteKeywords?: string[] | undefined;
2101
+ } | undefined;
2102
+ }>;
2103
+ path: "/api/users/preferences/filters";
2104
+ responses: {
2105
+ 200: import("zod").ZodObject<{
2106
+ success: import("zod").ZodLiteral<true>;
2107
+ message: import("zod").ZodString;
2108
+ data: import("zod").ZodObject<{
2109
+ filters: import("zod").ZodOptional<import("zod").ZodObject<{
2110
+ stack: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2111
+ level: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2112
+ jobFunction: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2113
+ locationType: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2114
+ excludedTitles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2115
+ muteKeywords: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2116
+ experienceYears: import("zod").ZodOptional<import("zod").ZodObject<{
2117
+ min: import("zod").ZodOptional<import("zod").ZodNumber>;
2118
+ max: import("zod").ZodOptional<import("zod").ZodNumber>;
2119
+ }, "strip", import("zod").ZodTypeAny, {
2120
+ min?: number | undefined;
2121
+ max?: number | undefined;
2122
+ }, {
2123
+ min?: number | undefined;
2124
+ max?: number | undefined;
2125
+ }>>;
2126
+ }, "strip", import("zod").ZodTypeAny, {
2127
+ level?: string[] | undefined;
2128
+ experienceYears?: {
2129
+ min?: number | undefined;
2130
+ max?: number | undefined;
2131
+ } | undefined;
2132
+ stack?: string[] | undefined;
2133
+ jobFunction?: string[] | undefined;
2134
+ locationType?: string[] | undefined;
2135
+ excludedTitles?: string[] | undefined;
2136
+ muteKeywords?: string[] | undefined;
2137
+ }, {
2138
+ level?: string[] | undefined;
2139
+ experienceYears?: {
2140
+ min?: number | undefined;
2141
+ max?: number | undefined;
2142
+ } | undefined;
2143
+ stack?: string[] | undefined;
2144
+ jobFunction?: string[] | undefined;
2145
+ locationType?: string[] | undefined;
2146
+ excludedTitles?: string[] | undefined;
2147
+ muteKeywords?: string[] | undefined;
2148
+ }>>;
2149
+ }, "strip", import("zod").ZodTypeAny, {
2150
+ filters?: {
2151
+ level?: string[] | undefined;
2152
+ experienceYears?: {
2153
+ min?: number | undefined;
2154
+ max?: number | undefined;
2155
+ } | undefined;
2156
+ stack?: string[] | undefined;
2157
+ jobFunction?: string[] | undefined;
2158
+ locationType?: string[] | undefined;
2159
+ excludedTitles?: string[] | undefined;
2160
+ muteKeywords?: string[] | undefined;
2161
+ } | undefined;
2162
+ }, {
2163
+ filters?: {
2164
+ level?: string[] | undefined;
2165
+ experienceYears?: {
2166
+ min?: number | undefined;
2167
+ max?: number | undefined;
2168
+ } | undefined;
2169
+ stack?: string[] | undefined;
2170
+ jobFunction?: string[] | undefined;
2171
+ locationType?: string[] | undefined;
2172
+ excludedTitles?: string[] | undefined;
2173
+ muteKeywords?: string[] | undefined;
2174
+ } | undefined;
2175
+ }>;
2176
+ }, "strip", import("zod").ZodTypeAny, {
2177
+ message: string;
2178
+ success: true;
2179
+ data: {
2180
+ filters?: {
2181
+ level?: string[] | undefined;
2182
+ experienceYears?: {
2183
+ min?: number | undefined;
2184
+ max?: number | undefined;
2185
+ } | undefined;
2186
+ stack?: string[] | undefined;
2187
+ jobFunction?: string[] | undefined;
2188
+ locationType?: string[] | undefined;
2189
+ excludedTitles?: string[] | undefined;
2190
+ muteKeywords?: string[] | undefined;
2191
+ } | undefined;
2192
+ };
2193
+ }, {
2194
+ message: string;
2195
+ success: true;
2196
+ data: {
2197
+ filters?: {
2198
+ level?: string[] | undefined;
2199
+ experienceYears?: {
2200
+ min?: number | undefined;
2201
+ max?: number | undefined;
2202
+ } | undefined;
2203
+ stack?: string[] | undefined;
2204
+ jobFunction?: string[] | undefined;
2205
+ locationType?: string[] | undefined;
2206
+ excludedTitles?: string[] | undefined;
2207
+ muteKeywords?: string[] | undefined;
2208
+ } | undefined;
2209
+ };
2210
+ }>;
2211
+ 400: import("zod").ZodObject<{
2212
+ success: import("zod").ZodLiteral<false>;
2213
+ message: import("zod").ZodString;
2214
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2215
+ }, "strip", import("zod").ZodTypeAny, {
2216
+ message: string;
2217
+ success: false;
2218
+ errors?: any;
2219
+ }, {
2220
+ message: string;
2221
+ success: false;
2222
+ errors?: any;
2223
+ }>;
2224
+ 401: import("zod").ZodObject<{
2225
+ success: import("zod").ZodLiteral<false>;
2226
+ message: import("zod").ZodString;
2227
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2228
+ }, "strip", import("zod").ZodTypeAny, {
2229
+ message: string;
2230
+ success: false;
2231
+ errors?: any;
2232
+ }, {
2233
+ message: string;
2234
+ success: false;
2235
+ errors?: any;
2236
+ }>;
2237
+ 500: import("zod").ZodObject<{
2238
+ success: import("zod").ZodLiteral<false>;
2239
+ message: import("zod").ZodString;
2240
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2241
+ }, "strip", import("zod").ZodTypeAny, {
2242
+ message: string;
2243
+ success: false;
2244
+ errors?: any;
2245
+ }, {
2246
+ message: string;
2247
+ success: false;
2248
+ errors?: any;
2249
+ }>;
2250
+ };
2251
+ };
2252
+ };
2253
+ resume: {
2254
+ uploadResume: {
2255
+ summary: "Upload master resume (PDF/DOCX)";
2256
+ method: "POST";
2257
+ contentType: "multipart/form-data";
2258
+ body: import("@ts-rest/core").ContractPlainType<{
2259
+ resume: File;
2260
+ }>;
2261
+ path: "/api/resume/upload";
2262
+ responses: {
2263
+ 200: import("zod").ZodObject<{
2264
+ success: import("zod").ZodLiteral<true>;
2265
+ message: import("zod").ZodString;
2266
+ data: import("zod").ZodObject<{
2267
+ message: import("zod").ZodString;
2268
+ resumeText: import("zod").ZodString;
2269
+ fileUrl: import("zod").ZodString;
2270
+ }, "strip", import("zod").ZodTypeAny, {
2271
+ message: string;
2272
+ resumeText: string;
2273
+ fileUrl: string;
2274
+ }, {
2275
+ message: string;
2276
+ resumeText: string;
2277
+ fileUrl: string;
2278
+ }>;
2279
+ }, "strip", import("zod").ZodTypeAny, {
2280
+ message: string;
2281
+ success: true;
2282
+ data: {
2283
+ message: string;
2284
+ resumeText: string;
2285
+ fileUrl: string;
2286
+ };
2287
+ }, {
2288
+ message: string;
2289
+ success: true;
2290
+ data: {
2291
+ message: string;
2292
+ resumeText: string;
2293
+ fileUrl: string;
2294
+ };
2295
+ }>;
2296
+ 400: import("zod").ZodObject<{
2297
+ success: import("zod").ZodLiteral<false>;
2298
+ message: import("zod").ZodString;
2299
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2300
+ }, "strip", import("zod").ZodTypeAny, {
2301
+ message: string;
2302
+ success: false;
2303
+ errors?: any;
2304
+ }, {
2305
+ message: string;
2306
+ success: false;
2307
+ errors?: any;
2308
+ }>;
2309
+ 401: import("zod").ZodObject<{
2310
+ success: import("zod").ZodLiteral<false>;
2311
+ message: import("zod").ZodString;
2312
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2313
+ }, "strip", import("zod").ZodTypeAny, {
2314
+ message: string;
2315
+ success: false;
2316
+ errors?: any;
2317
+ }, {
2318
+ message: string;
2319
+ success: false;
2320
+ errors?: any;
2321
+ }>;
2322
+ 500: import("zod").ZodObject<{
2323
+ success: import("zod").ZodLiteral<false>;
2324
+ message: import("zod").ZodString;
2325
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2326
+ }, "strip", import("zod").ZodTypeAny, {
2327
+ message: string;
2328
+ success: false;
2329
+ errors?: any;
2330
+ }, {
2331
+ message: string;
2332
+ success: false;
2333
+ errors?: any;
2334
+ }>;
2335
+ };
2336
+ };
2337
+ };
2338
+ sniper: {
2339
+ generateTailoredResume: {
2340
+ summary: "Generate tailored resume for job";
2341
+ method: "POST";
2342
+ body: import("zod").ZodObject<{
2343
+ jobId: import("zod").ZodString;
2344
+ }, "strip", import("zod").ZodTypeAny, {
2345
+ jobId: string;
2346
+ }, {
2347
+ jobId: string;
2348
+ }>;
2349
+ path: "/api/sniper/generate";
2350
+ responses: {
2351
+ 200: import("zod").ZodObject<{
2352
+ success: import("zod").ZodLiteral<true>;
2353
+ message: import("zod").ZodString;
2354
+ data: import("zod").ZodObject<{
2355
+ pdfUrl: import("zod").ZodString;
2356
+ docxUrl: import("zod").ZodString;
2357
+ telegramMessage: import("zod").ZodString;
2358
+ coverLetter: import("zod").ZodString;
2359
+ }, "strip", import("zod").ZodTypeAny, {
2360
+ pdfUrl: string;
2361
+ docxUrl: string;
2362
+ telegramMessage: string;
2363
+ coverLetter: string;
2364
+ }, {
2365
+ pdfUrl: string;
2366
+ docxUrl: string;
2367
+ telegramMessage: string;
2368
+ coverLetter: string;
2369
+ }>;
2370
+ }, "strip", import("zod").ZodTypeAny, {
2371
+ message: string;
2372
+ success: true;
2373
+ data: {
2374
+ pdfUrl: string;
2375
+ docxUrl: string;
2376
+ telegramMessage: string;
2377
+ coverLetter: string;
2378
+ };
2379
+ }, {
2380
+ message: string;
2381
+ success: true;
2382
+ data: {
2383
+ pdfUrl: string;
2384
+ docxUrl: string;
2385
+ telegramMessage: string;
2386
+ coverLetter: string;
2387
+ };
2388
+ }>;
2389
+ 400: import("zod").ZodObject<{
2390
+ success: import("zod").ZodLiteral<false>;
2391
+ message: import("zod").ZodString;
2392
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2393
+ }, "strip", import("zod").ZodTypeAny, {
2394
+ message: string;
2395
+ success: false;
2396
+ errors?: any;
2397
+ }, {
2398
+ message: string;
2399
+ success: false;
2400
+ errors?: any;
2401
+ }>;
2402
+ 401: import("zod").ZodObject<{
2403
+ success: import("zod").ZodLiteral<false>;
2404
+ message: import("zod").ZodString;
2405
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2406
+ }, "strip", import("zod").ZodTypeAny, {
2407
+ message: string;
2408
+ success: false;
2409
+ errors?: any;
2410
+ }, {
2411
+ message: string;
2412
+ success: false;
2413
+ errors?: any;
2414
+ }>;
2415
+ 404: import("zod").ZodObject<{
2416
+ success: import("zod").ZodLiteral<false>;
2417
+ message: import("zod").ZodString;
2418
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2419
+ }, "strip", import("zod").ZodTypeAny, {
2420
+ message: string;
2421
+ success: false;
2422
+ errors?: any;
2423
+ }, {
2424
+ message: string;
2425
+ success: false;
2426
+ errors?: any;
2427
+ }>;
2428
+ 500: import("zod").ZodObject<{
2429
+ success: import("zod").ZodLiteral<false>;
2430
+ message: import("zod").ZodString;
2431
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2432
+ }, "strip", import("zod").ZodTypeAny, {
2433
+ message: string;
2434
+ success: false;
2435
+ errors?: any;
2436
+ }, {
2437
+ message: string;
2438
+ success: false;
2439
+ errors?: any;
2440
+ }>;
2441
+ };
2442
+ };
2443
+ };
2444
+ notifications: {
2445
+ getSettings: {
2446
+ summary: "Get notification settings";
2447
+ method: "GET";
2448
+ path: "/api/notifications/settings";
2449
+ responses: {
2450
+ 200: import("zod").ZodObject<{
2451
+ success: import("zod").ZodLiteral<true>;
2452
+ message: import("zod").ZodString;
2453
+ data: import("zod").ZodObject<{
2454
+ enabled: import("zod").ZodBoolean;
2455
+ filters: import("zod").ZodOptional<import("zod").ZodObject<{
2456
+ stack: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2457
+ level: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2458
+ jobFunction: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2459
+ locationType: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2460
+ excludedTitles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2461
+ muteKeywords: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2462
+ experienceYears: import("zod").ZodOptional<import("zod").ZodObject<{
2463
+ min: import("zod").ZodOptional<import("zod").ZodNumber>;
2464
+ max: import("zod").ZodOptional<import("zod").ZodNumber>;
2465
+ }, "strip", import("zod").ZodTypeAny, {
2466
+ min?: number | undefined;
2467
+ max?: number | undefined;
2468
+ }, {
2469
+ min?: number | undefined;
2470
+ max?: number | undefined;
2471
+ }>>;
2472
+ }, "strip", import("zod").ZodTypeAny, {
2473
+ level?: string[] | undefined;
2474
+ experienceYears?: {
2475
+ min?: number | undefined;
2476
+ max?: number | undefined;
2477
+ } | undefined;
2478
+ stack?: string[] | undefined;
2479
+ jobFunction?: string[] | undefined;
2480
+ locationType?: string[] | undefined;
2481
+ excludedTitles?: string[] | undefined;
2482
+ muteKeywords?: string[] | undefined;
2483
+ }, {
2484
+ level?: string[] | undefined;
2485
+ experienceYears?: {
2486
+ min?: number | undefined;
2487
+ max?: number | undefined;
2488
+ } | undefined;
2489
+ stack?: string[] | undefined;
2490
+ jobFunction?: string[] | undefined;
2491
+ locationType?: string[] | undefined;
2492
+ excludedTitles?: string[] | undefined;
2493
+ muteKeywords?: string[] | undefined;
2494
+ }>>;
2495
+ quietHours: import("zod").ZodOptional<import("zod").ZodObject<{
2496
+ enabled: import("zod").ZodBoolean;
2497
+ startHour: import("zod").ZodNumber;
2498
+ endHour: import("zod").ZodNumber;
2499
+ timezone: import("zod").ZodString;
2500
+ }, "strip", import("zod").ZodTypeAny, {
2501
+ enabled: boolean;
2502
+ startHour: number;
2503
+ endHour: number;
2504
+ timezone: string;
2505
+ }, {
2506
+ enabled: boolean;
2507
+ startHour: number;
2508
+ endHour: number;
2509
+ timezone: string;
2510
+ }>>;
2511
+ }, "strip", import("zod").ZodTypeAny, {
2512
+ enabled: boolean;
2513
+ filters?: {
2514
+ level?: string[] | undefined;
2515
+ experienceYears?: {
2516
+ min?: number | undefined;
2517
+ max?: number | undefined;
2518
+ } | undefined;
2519
+ stack?: string[] | undefined;
2520
+ jobFunction?: string[] | undefined;
2521
+ locationType?: string[] | undefined;
2522
+ excludedTitles?: string[] | undefined;
2523
+ muteKeywords?: string[] | undefined;
2524
+ } | undefined;
2525
+ quietHours?: {
2526
+ enabled: boolean;
2527
+ startHour: number;
2528
+ endHour: number;
2529
+ timezone: string;
2530
+ } | undefined;
2531
+ }, {
2532
+ enabled: boolean;
2533
+ filters?: {
2534
+ level?: string[] | undefined;
2535
+ experienceYears?: {
2536
+ min?: number | undefined;
2537
+ max?: number | undefined;
2538
+ } | undefined;
2539
+ stack?: string[] | undefined;
2540
+ jobFunction?: string[] | undefined;
2541
+ locationType?: string[] | undefined;
2542
+ excludedTitles?: string[] | undefined;
2543
+ muteKeywords?: string[] | undefined;
2544
+ } | undefined;
2545
+ quietHours?: {
2546
+ enabled: boolean;
2547
+ startHour: number;
2548
+ endHour: number;
2549
+ timezone: string;
2550
+ } | undefined;
2551
+ }>;
2552
+ }, "strip", import("zod").ZodTypeAny, {
2553
+ message: string;
2554
+ success: true;
2555
+ data: {
2556
+ enabled: boolean;
2557
+ filters?: {
2558
+ level?: string[] | undefined;
2559
+ experienceYears?: {
2560
+ min?: number | undefined;
2561
+ max?: number | undefined;
2562
+ } | undefined;
2563
+ stack?: string[] | undefined;
2564
+ jobFunction?: string[] | undefined;
2565
+ locationType?: string[] | undefined;
2566
+ excludedTitles?: string[] | undefined;
2567
+ muteKeywords?: string[] | undefined;
2568
+ } | undefined;
2569
+ quietHours?: {
2570
+ enabled: boolean;
2571
+ startHour: number;
2572
+ endHour: number;
2573
+ timezone: string;
2574
+ } | undefined;
2575
+ };
2576
+ }, {
2577
+ message: string;
2578
+ success: true;
2579
+ data: {
2580
+ enabled: boolean;
2581
+ filters?: {
2582
+ level?: string[] | undefined;
2583
+ experienceYears?: {
2584
+ min?: number | undefined;
2585
+ max?: number | undefined;
2586
+ } | undefined;
2587
+ stack?: string[] | undefined;
2588
+ jobFunction?: string[] | undefined;
2589
+ locationType?: string[] | undefined;
2590
+ excludedTitles?: string[] | undefined;
2591
+ muteKeywords?: string[] | undefined;
2592
+ } | undefined;
2593
+ quietHours?: {
2594
+ enabled: boolean;
2595
+ startHour: number;
2596
+ endHour: number;
2597
+ timezone: string;
2598
+ } | undefined;
2599
+ };
2600
+ }>;
2601
+ 401: import("zod").ZodObject<{
2602
+ success: import("zod").ZodLiteral<false>;
2603
+ message: import("zod").ZodString;
2604
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2605
+ }, "strip", import("zod").ZodTypeAny, {
2606
+ message: string;
2607
+ success: false;
2608
+ errors?: any;
2609
+ }, {
2610
+ message: string;
2611
+ success: false;
2612
+ errors?: any;
2613
+ }>;
2614
+ 500: import("zod").ZodObject<{
2615
+ success: import("zod").ZodLiteral<false>;
2616
+ message: import("zod").ZodString;
2617
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2618
+ }, "strip", import("zod").ZodTypeAny, {
2619
+ message: string;
2620
+ success: false;
2621
+ errors?: any;
2622
+ }, {
2623
+ message: string;
2624
+ success: false;
2625
+ errors?: any;
2626
+ }>;
2627
+ };
2628
+ };
2629
+ updateSettings: {
2630
+ summary: "Update notification settings";
2631
+ method: "POST";
2632
+ body: import("zod").ZodObject<{
2633
+ enabled: import("zod").ZodBoolean;
2634
+ filters: import("zod").ZodOptional<import("zod").ZodObject<{
2635
+ stack: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2636
+ level: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2637
+ jobFunction: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2638
+ locationType: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2639
+ excludedTitles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2640
+ muteKeywords: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2641
+ experienceYears: import("zod").ZodOptional<import("zod").ZodObject<{
2642
+ min: import("zod").ZodOptional<import("zod").ZodNumber>;
2643
+ max: import("zod").ZodOptional<import("zod").ZodNumber>;
2644
+ }, "strip", import("zod").ZodTypeAny, {
2645
+ min?: number | undefined;
2646
+ max?: number | undefined;
2647
+ }, {
2648
+ min?: number | undefined;
2649
+ max?: number | undefined;
2650
+ }>>;
2651
+ }, "strip", import("zod").ZodTypeAny, {
2652
+ level?: string[] | undefined;
2653
+ experienceYears?: {
2654
+ min?: number | undefined;
2655
+ max?: number | undefined;
2656
+ } | undefined;
2657
+ stack?: string[] | undefined;
2658
+ jobFunction?: string[] | undefined;
2659
+ locationType?: string[] | undefined;
2660
+ excludedTitles?: string[] | undefined;
2661
+ muteKeywords?: string[] | undefined;
2662
+ }, {
2663
+ level?: string[] | undefined;
2664
+ experienceYears?: {
2665
+ min?: number | undefined;
2666
+ max?: number | undefined;
2667
+ } | undefined;
2668
+ stack?: string[] | undefined;
2669
+ jobFunction?: string[] | undefined;
2670
+ locationType?: string[] | undefined;
2671
+ excludedTitles?: string[] | undefined;
2672
+ muteKeywords?: string[] | undefined;
2673
+ }>>;
2674
+ quietHours: import("zod").ZodOptional<import("zod").ZodObject<{
2675
+ enabled: import("zod").ZodBoolean;
2676
+ startHour: import("zod").ZodNumber;
2677
+ endHour: import("zod").ZodNumber;
2678
+ timezone: import("zod").ZodString;
2679
+ }, "strip", import("zod").ZodTypeAny, {
2680
+ enabled: boolean;
2681
+ startHour: number;
2682
+ endHour: number;
2683
+ timezone: string;
2684
+ }, {
2685
+ enabled: boolean;
2686
+ startHour: number;
2687
+ endHour: number;
2688
+ timezone: string;
2689
+ }>>;
2690
+ }, "strip", import("zod").ZodTypeAny, {
2691
+ enabled: boolean;
2692
+ filters?: {
2693
+ level?: string[] | undefined;
2694
+ experienceYears?: {
2695
+ min?: number | undefined;
2696
+ max?: number | undefined;
2697
+ } | undefined;
2698
+ stack?: string[] | undefined;
2699
+ jobFunction?: string[] | undefined;
2700
+ locationType?: string[] | undefined;
2701
+ excludedTitles?: string[] | undefined;
2702
+ muteKeywords?: string[] | undefined;
2703
+ } | undefined;
2704
+ quietHours?: {
2705
+ enabled: boolean;
2706
+ startHour: number;
2707
+ endHour: number;
2708
+ timezone: string;
2709
+ } | undefined;
2710
+ }, {
2711
+ enabled: boolean;
2712
+ filters?: {
2713
+ level?: string[] | undefined;
2714
+ experienceYears?: {
2715
+ min?: number | undefined;
2716
+ max?: number | undefined;
2717
+ } | undefined;
2718
+ stack?: string[] | undefined;
2719
+ jobFunction?: string[] | undefined;
2720
+ locationType?: string[] | undefined;
2721
+ excludedTitles?: string[] | undefined;
2722
+ muteKeywords?: string[] | undefined;
2723
+ } | undefined;
2724
+ quietHours?: {
2725
+ enabled: boolean;
2726
+ startHour: number;
2727
+ endHour: number;
2728
+ timezone: string;
2729
+ } | undefined;
2730
+ }>;
2731
+ path: "/api/notifications/settings";
2732
+ responses: {
2733
+ 200: import("zod").ZodObject<{
2734
+ success: import("zod").ZodLiteral<true>;
2735
+ message: import("zod").ZodString;
2736
+ data: import("zod").ZodObject<{
2737
+ enabled: import("zod").ZodBoolean;
2738
+ filters: import("zod").ZodOptional<import("zod").ZodObject<{
2739
+ stack: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2740
+ level: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2741
+ jobFunction: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2742
+ locationType: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2743
+ excludedTitles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2744
+ muteKeywords: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2745
+ experienceYears: import("zod").ZodOptional<import("zod").ZodObject<{
2746
+ min: import("zod").ZodOptional<import("zod").ZodNumber>;
2747
+ max: import("zod").ZodOptional<import("zod").ZodNumber>;
2748
+ }, "strip", import("zod").ZodTypeAny, {
2749
+ min?: number | undefined;
2750
+ max?: number | undefined;
2751
+ }, {
2752
+ min?: number | undefined;
2753
+ max?: number | undefined;
2754
+ }>>;
2755
+ }, "strip", import("zod").ZodTypeAny, {
2756
+ level?: string[] | undefined;
2757
+ experienceYears?: {
2758
+ min?: number | undefined;
2759
+ max?: number | undefined;
2760
+ } | undefined;
2761
+ stack?: string[] | undefined;
2762
+ jobFunction?: string[] | undefined;
2763
+ locationType?: string[] | undefined;
2764
+ excludedTitles?: string[] | undefined;
2765
+ muteKeywords?: string[] | undefined;
2766
+ }, {
2767
+ level?: string[] | undefined;
2768
+ experienceYears?: {
2769
+ min?: number | undefined;
2770
+ max?: number | undefined;
2771
+ } | undefined;
2772
+ stack?: string[] | undefined;
2773
+ jobFunction?: string[] | undefined;
2774
+ locationType?: string[] | undefined;
2775
+ excludedTitles?: string[] | undefined;
2776
+ muteKeywords?: string[] | undefined;
2777
+ }>>;
2778
+ quietHours: import("zod").ZodOptional<import("zod").ZodObject<{
2779
+ enabled: import("zod").ZodBoolean;
2780
+ startHour: import("zod").ZodNumber;
2781
+ endHour: import("zod").ZodNumber;
2782
+ timezone: import("zod").ZodString;
2783
+ }, "strip", import("zod").ZodTypeAny, {
2784
+ enabled: boolean;
2785
+ startHour: number;
2786
+ endHour: number;
2787
+ timezone: string;
2788
+ }, {
2789
+ enabled: boolean;
2790
+ startHour: number;
2791
+ endHour: number;
2792
+ timezone: string;
2793
+ }>>;
2794
+ }, "strip", import("zod").ZodTypeAny, {
2795
+ enabled: boolean;
2796
+ filters?: {
2797
+ level?: string[] | undefined;
2798
+ experienceYears?: {
2799
+ min?: number | undefined;
2800
+ max?: number | undefined;
2801
+ } | undefined;
2802
+ stack?: string[] | undefined;
2803
+ jobFunction?: string[] | undefined;
2804
+ locationType?: string[] | undefined;
2805
+ excludedTitles?: string[] | undefined;
2806
+ muteKeywords?: string[] | undefined;
2807
+ } | undefined;
2808
+ quietHours?: {
2809
+ enabled: boolean;
2810
+ startHour: number;
2811
+ endHour: number;
2812
+ timezone: string;
2813
+ } | undefined;
2814
+ }, {
2815
+ enabled: boolean;
2816
+ filters?: {
2817
+ level?: string[] | undefined;
2818
+ experienceYears?: {
2819
+ min?: number | undefined;
2820
+ max?: number | undefined;
2821
+ } | undefined;
2822
+ stack?: string[] | undefined;
2823
+ jobFunction?: string[] | undefined;
2824
+ locationType?: string[] | undefined;
2825
+ excludedTitles?: string[] | undefined;
2826
+ muteKeywords?: string[] | undefined;
2827
+ } | undefined;
2828
+ quietHours?: {
2829
+ enabled: boolean;
2830
+ startHour: number;
2831
+ endHour: number;
2832
+ timezone: string;
2833
+ } | undefined;
2834
+ }>;
2835
+ }, "strip", import("zod").ZodTypeAny, {
2836
+ message: string;
2837
+ success: true;
2838
+ data: {
2839
+ enabled: boolean;
2840
+ filters?: {
2841
+ level?: string[] | undefined;
2842
+ experienceYears?: {
2843
+ min?: number | undefined;
2844
+ max?: number | undefined;
2845
+ } | undefined;
2846
+ stack?: string[] | undefined;
2847
+ jobFunction?: string[] | undefined;
2848
+ locationType?: string[] | undefined;
2849
+ excludedTitles?: string[] | undefined;
2850
+ muteKeywords?: string[] | undefined;
2851
+ } | undefined;
2852
+ quietHours?: {
2853
+ enabled: boolean;
2854
+ startHour: number;
2855
+ endHour: number;
2856
+ timezone: string;
2857
+ } | undefined;
2858
+ };
2859
+ }, {
2860
+ message: string;
2861
+ success: true;
2862
+ data: {
2863
+ enabled: boolean;
2864
+ filters?: {
2865
+ level?: string[] | undefined;
2866
+ experienceYears?: {
2867
+ min?: number | undefined;
2868
+ max?: number | undefined;
2869
+ } | undefined;
2870
+ stack?: string[] | undefined;
2871
+ jobFunction?: string[] | undefined;
2872
+ locationType?: string[] | undefined;
2873
+ excludedTitles?: string[] | undefined;
2874
+ muteKeywords?: string[] | undefined;
2875
+ } | undefined;
2876
+ quietHours?: {
2877
+ enabled: boolean;
2878
+ startHour: number;
2879
+ endHour: number;
2880
+ timezone: string;
2881
+ } | undefined;
2882
+ };
2883
+ }>;
2884
+ 400: import("zod").ZodObject<{
2885
+ success: import("zod").ZodLiteral<false>;
2886
+ message: import("zod").ZodString;
2887
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2888
+ }, "strip", import("zod").ZodTypeAny, {
2889
+ message: string;
2890
+ success: false;
2891
+ errors?: any;
2892
+ }, {
2893
+ message: string;
2894
+ success: false;
2895
+ errors?: any;
2896
+ }>;
2897
+ 401: import("zod").ZodObject<{
2898
+ success: import("zod").ZodLiteral<false>;
2899
+ message: import("zod").ZodString;
2900
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2901
+ }, "strip", import("zod").ZodTypeAny, {
2902
+ message: string;
2903
+ success: false;
2904
+ errors?: any;
2905
+ }, {
2906
+ message: string;
2907
+ success: false;
2908
+ errors?: any;
2909
+ }>;
2910
+ 500: import("zod").ZodObject<{
2911
+ success: import("zod").ZodLiteral<false>;
2912
+ message: import("zod").ZodString;
2913
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2914
+ }, "strip", import("zod").ZodTypeAny, {
2915
+ message: string;
2916
+ success: false;
2917
+ errors?: any;
2918
+ }, {
2919
+ message: string;
2920
+ success: false;
2921
+ errors?: any;
2922
+ }>;
2923
+ };
2924
+ };
2925
+ sendTestNotification: {
2926
+ summary: "Send test notification";
2927
+ method: "POST";
2928
+ body: import("zod").ZodObject<{}, "strip", import("zod").ZodTypeAny, {}, {}>;
2929
+ path: "/api/notifications/test";
2930
+ responses: {
2931
+ 200: import("zod").ZodObject<{
2932
+ success: import("zod").ZodLiteral<true>;
2933
+ message: import("zod").ZodString;
2934
+ data: import("zod").ZodObject<{
2935
+ success: import("zod").ZodBoolean;
2936
+ message: import("zod").ZodString;
2937
+ }, "strip", import("zod").ZodTypeAny, {
2938
+ message: string;
2939
+ success: boolean;
2940
+ }, {
2941
+ message: string;
2942
+ success: boolean;
2943
+ }>;
2944
+ }, "strip", import("zod").ZodTypeAny, {
2945
+ message: string;
2946
+ success: true;
2947
+ data: {
2948
+ message: string;
2949
+ success: boolean;
2950
+ };
2951
+ }, {
2952
+ message: string;
2953
+ success: true;
2954
+ data: {
2955
+ message: string;
2956
+ success: boolean;
2957
+ };
2958
+ }>;
2959
+ 401: import("zod").ZodObject<{
2960
+ success: import("zod").ZodLiteral<false>;
2961
+ message: import("zod").ZodString;
2962
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2963
+ }, "strip", import("zod").ZodTypeAny, {
2964
+ message: string;
2965
+ success: false;
2966
+ errors?: any;
2967
+ }, {
2968
+ message: string;
2969
+ success: false;
2970
+ errors?: any;
2971
+ }>;
2972
+ 500: import("zod").ZodObject<{
2973
+ success: import("zod").ZodLiteral<false>;
2974
+ message: import("zod").ZodString;
2975
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
2976
+ }, "strip", import("zod").ZodTypeAny, {
2977
+ message: string;
2978
+ success: false;
2979
+ errors?: any;
2980
+ }, {
2981
+ message: string;
2982
+ success: false;
2983
+ errors?: any;
2984
+ }>;
2985
+ };
2986
+ };
2987
+ generateSubscriptionLink: {
2988
+ summary: "Generate Telegram bot subscription link";
2989
+ method: "POST";
2990
+ body: import("zod").ZodObject<{}, "strip", import("zod").ZodTypeAny, {}, {}>;
2991
+ path: "/api/notifications/generate-link";
2992
+ responses: {
2993
+ 200: import("zod").ZodObject<{
2994
+ success: import("zod").ZodLiteral<true>;
2995
+ message: import("zod").ZodString;
2996
+ data: import("zod").ZodObject<{
2997
+ link: import("zod").ZodString;
2998
+ token: import("zod").ZodString;
2999
+ }, "strip", import("zod").ZodTypeAny, {
3000
+ link: string;
3001
+ token: string;
3002
+ }, {
3003
+ link: string;
3004
+ token: string;
3005
+ }>;
3006
+ }, "strip", import("zod").ZodTypeAny, {
3007
+ message: string;
3008
+ success: true;
3009
+ data: {
3010
+ link: string;
3011
+ token: string;
3012
+ };
3013
+ }, {
3014
+ message: string;
3015
+ success: true;
3016
+ data: {
3017
+ link: string;
3018
+ token: string;
3019
+ };
3020
+ }>;
3021
+ 401: import("zod").ZodObject<{
3022
+ success: import("zod").ZodLiteral<false>;
3023
+ message: import("zod").ZodString;
3024
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
3025
+ }, "strip", import("zod").ZodTypeAny, {
3026
+ message: string;
3027
+ success: false;
3028
+ errors?: any;
3029
+ }, {
3030
+ message: string;
3031
+ success: false;
3032
+ errors?: any;
3033
+ }>;
3034
+ 500: import("zod").ZodObject<{
3035
+ success: import("zod").ZodLiteral<false>;
3036
+ message: import("zod").ZodString;
3037
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
3038
+ }, "strip", import("zod").ZodTypeAny, {
3039
+ message: string;
3040
+ success: false;
3041
+ errors?: any;
3042
+ }, {
3043
+ message: string;
3044
+ success: false;
3045
+ errors?: any;
3046
+ }>;
3047
+ };
3048
+ };
3049
+ handleTelegramWebhook: {
3050
+ summary: "Telegram bot webhook endpoint (public)";
3051
+ method: "POST";
3052
+ body: import("zod").ZodObject<{
3053
+ update_id: import("zod").ZodNumber;
3054
+ message: import("zod").ZodOptional<import("zod").ZodObject<{
3055
+ message_id: import("zod").ZodNumber;
3056
+ from: import("zod").ZodObject<{
3057
+ id: import("zod").ZodNumber;
3058
+ first_name: import("zod").ZodString;
3059
+ }, "strip", import("zod").ZodTypeAny, {
3060
+ id: number;
3061
+ first_name: string;
3062
+ }, {
3063
+ id: number;
3064
+ first_name: string;
3065
+ }>;
3066
+ chat: import("zod").ZodObject<{
3067
+ id: import("zod").ZodNumber;
3068
+ type: import("zod").ZodString;
3069
+ }, "strip", import("zod").ZodTypeAny, {
3070
+ type: string;
3071
+ id: number;
3072
+ }, {
3073
+ type: string;
3074
+ id: number;
3075
+ }>;
3076
+ text: import("zod").ZodOptional<import("zod").ZodString>;
3077
+ }, "strip", import("zod").ZodTypeAny, {
3078
+ message_id: number;
3079
+ from: {
3080
+ id: number;
3081
+ first_name: string;
3082
+ };
3083
+ chat: {
3084
+ type: string;
3085
+ id: number;
3086
+ };
3087
+ text?: string | undefined;
3088
+ }, {
3089
+ message_id: number;
3090
+ from: {
3091
+ id: number;
3092
+ first_name: string;
3093
+ };
3094
+ chat: {
3095
+ type: string;
3096
+ id: number;
3097
+ };
3098
+ text?: string | undefined;
3099
+ }>>;
3100
+ }, "strip", import("zod").ZodTypeAny, {
3101
+ update_id: number;
3102
+ message?: {
3103
+ message_id: number;
3104
+ from: {
3105
+ id: number;
3106
+ first_name: string;
3107
+ };
3108
+ chat: {
3109
+ type: string;
3110
+ id: number;
3111
+ };
3112
+ text?: string | undefined;
3113
+ } | undefined;
3114
+ }, {
3115
+ update_id: number;
3116
+ message?: {
3117
+ message_id: number;
3118
+ from: {
3119
+ id: number;
3120
+ first_name: string;
3121
+ };
3122
+ chat: {
3123
+ type: string;
3124
+ id: number;
3125
+ };
3126
+ text?: string | undefined;
3127
+ } | undefined;
3128
+ }>;
3129
+ path: "/api/notifications/telegram/webhook";
3130
+ responses: {
3131
+ 200: import("zod").ZodObject<{
3132
+ ok: import("zod").ZodBoolean;
3133
+ }, "strip", import("zod").ZodTypeAny, {
3134
+ ok: boolean;
3135
+ }, {
3136
+ ok: boolean;
3137
+ }>;
3138
+ 400: import("zod").ZodObject<{
3139
+ success: import("zod").ZodLiteral<false>;
3140
+ message: import("zod").ZodString;
3141
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
3142
+ }, "strip", import("zod").ZodTypeAny, {
3143
+ message: string;
3144
+ success: false;
3145
+ errors?: any;
3146
+ }, {
3147
+ message: string;
3148
+ success: false;
3149
+ errors?: any;
3150
+ }>;
3151
+ 500: import("zod").ZodObject<{
3152
+ success: import("zod").ZodLiteral<false>;
3153
+ message: import("zod").ZodString;
3154
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
3155
+ }, "strip", import("zod").ZodTypeAny, {
3156
+ message: string;
3157
+ success: false;
3158
+ errors?: any;
3159
+ }, {
3160
+ message: string;
3161
+ success: false;
3162
+ errors?: any;
3163
+ }>;
3164
+ };
3165
+ };
3166
+ };
3167
+ stats: {
3168
+ getPlatformStats: {
3169
+ summary: "Get platform statistics";
3170
+ method: "GET";
3171
+ path: "/api/stats/platform";
3172
+ responses: {
3173
+ 200: import("zod").ZodObject<{
3174
+ success: import("zod").ZodLiteral<true>;
3175
+ message: import("zod").ZodString;
3176
+ data: import("zod").ZodObject<{
3177
+ totalJobs: import("zod").ZodNumber;
3178
+ totalChannels: import("zod").ZodNumber;
3179
+ totalUsers: import("zod").ZodNumber;
3180
+ activeUsers: import("zod").ZodNumber;
3181
+ jobsLast24h: import("zod").ZodNumber;
3182
+ }, "strip", import("zod").ZodTypeAny, {
3183
+ totalJobs: number;
3184
+ totalChannels: number;
3185
+ totalUsers: number;
3186
+ activeUsers: number;
3187
+ jobsLast24h: number;
3188
+ }, {
3189
+ totalJobs: number;
3190
+ totalChannels: number;
3191
+ totalUsers: number;
3192
+ activeUsers: number;
3193
+ jobsLast24h: number;
3194
+ }>;
3195
+ }, "strip", import("zod").ZodTypeAny, {
3196
+ message: string;
3197
+ success: true;
3198
+ data: {
3199
+ totalJobs: number;
3200
+ totalChannels: number;
3201
+ totalUsers: number;
3202
+ activeUsers: number;
3203
+ jobsLast24h: number;
3204
+ };
3205
+ }, {
3206
+ message: string;
3207
+ success: true;
3208
+ data: {
3209
+ totalJobs: number;
3210
+ totalChannels: number;
3211
+ totalUsers: number;
3212
+ activeUsers: number;
3213
+ jobsLast24h: number;
3214
+ };
3215
+ }>;
3216
+ 500: import("zod").ZodObject<{
3217
+ success: import("zod").ZodLiteral<false>;
3218
+ message: import("zod").ZodString;
3219
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
3220
+ }, "strip", import("zod").ZodTypeAny, {
3221
+ message: string;
3222
+ success: false;
3223
+ errors?: any;
3224
+ }, {
3225
+ message: string;
3226
+ success: false;
3227
+ errors?: any;
3228
+ }>;
3229
+ };
3230
+ };
3231
+ };
3232
+ feedback: {
3233
+ submitFeedback: {
3234
+ summary: "Submit user feedback";
3235
+ method: "POST";
3236
+ body: import("zod").ZodObject<{
3237
+ message: import("zod").ZodString;
3238
+ type: import("zod").ZodOptional<import("zod").ZodString>;
3239
+ }, "strip", import("zod").ZodTypeAny, {
3240
+ message: string;
3241
+ type?: string | undefined;
3242
+ }, {
3243
+ message: string;
3244
+ type?: string | undefined;
3245
+ }>;
3246
+ path: "/api/feedback";
3247
+ responses: {
3248
+ 200: import("zod").ZodObject<{
3249
+ success: import("zod").ZodLiteral<true>;
3250
+ message: import("zod").ZodString;
3251
+ data: import("zod").ZodObject<{
3252
+ success: import("zod").ZodBoolean;
3253
+ }, "strip", import("zod").ZodTypeAny, {
3254
+ success: boolean;
3255
+ }, {
3256
+ success: boolean;
3257
+ }>;
3258
+ }, "strip", import("zod").ZodTypeAny, {
3259
+ message: string;
3260
+ success: true;
3261
+ data: {
3262
+ success: boolean;
3263
+ };
3264
+ }, {
3265
+ message: string;
3266
+ success: true;
3267
+ data: {
3268
+ success: boolean;
3269
+ };
3270
+ }>;
3271
+ 400: import("zod").ZodObject<{
3272
+ success: import("zod").ZodLiteral<false>;
3273
+ message: import("zod").ZodString;
3274
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
3275
+ }, "strip", import("zod").ZodTypeAny, {
3276
+ message: string;
3277
+ success: false;
3278
+ errors?: any;
3279
+ }, {
3280
+ message: string;
3281
+ success: false;
3282
+ errors?: any;
3283
+ }>;
3284
+ 401: import("zod").ZodObject<{
3285
+ success: import("zod").ZodLiteral<false>;
3286
+ message: import("zod").ZodString;
3287
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
3288
+ }, "strip", import("zod").ZodTypeAny, {
3289
+ message: string;
3290
+ success: false;
3291
+ errors?: any;
3292
+ }, {
3293
+ message: string;
3294
+ success: false;
3295
+ errors?: any;
3296
+ }>;
3297
+ 500: import("zod").ZodObject<{
3298
+ success: import("zod").ZodLiteral<false>;
3299
+ message: import("zod").ZodString;
3300
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
3301
+ }, "strip", import("zod").ZodTypeAny, {
3302
+ message: string;
3303
+ success: false;
3304
+ errors?: any;
3305
+ }, {
3306
+ message: string;
3307
+ success: false;
3308
+ errors?: any;
3309
+ }>;
3310
+ };
3311
+ };
3312
+ };
3313
+ bundles: {
3314
+ getAllBundles: {
3315
+ summary: "Get all channel bundles";
3316
+ method: "GET";
3317
+ path: "/api/bundles";
3318
+ responses: {
3319
+ 200: import("zod").ZodObject<{
3320
+ success: import("zod").ZodLiteral<true>;
3321
+ message: import("zod").ZodString;
3322
+ data: import("zod").ZodArray<import("zod").ZodObject<{
3323
+ id: import("zod").ZodString;
3324
+ name: import("zod").ZodString;
3325
+ description: import("zod").ZodOptional<import("zod").ZodString>;
3326
+ channels: import("zod").ZodArray<import("zod").ZodString, "many">;
3327
+ category: import("zod").ZodOptional<import("zod").ZodString>;
3328
+ isActive: import("zod").ZodBoolean;
3329
+ order: import("zod").ZodNumber;
3330
+ createdAt: import("zod").ZodString;
3331
+ updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
3332
+ }, "strip", import("zod").ZodTypeAny, {
3333
+ id: string;
3334
+ createdAt: string;
3335
+ isActive: boolean;
3336
+ name: string;
3337
+ channels: string[];
3338
+ order: number;
3339
+ description?: string | undefined;
3340
+ updatedAt?: string | undefined;
3341
+ category?: string | undefined;
3342
+ }, {
3343
+ id: string;
3344
+ createdAt: string;
3345
+ isActive: boolean;
3346
+ name: string;
3347
+ channels: string[];
3348
+ order: number;
3349
+ description?: string | undefined;
3350
+ updatedAt?: string | undefined;
3351
+ category?: string | undefined;
3352
+ }>, "many">;
3353
+ }, "strip", import("zod").ZodTypeAny, {
3354
+ message: string;
3355
+ success: true;
3356
+ data: {
3357
+ id: string;
3358
+ createdAt: string;
3359
+ isActive: boolean;
3360
+ name: string;
3361
+ channels: string[];
3362
+ order: number;
3363
+ description?: string | undefined;
3364
+ updatedAt?: string | undefined;
3365
+ category?: string | undefined;
3366
+ }[];
3367
+ }, {
3368
+ message: string;
3369
+ success: true;
3370
+ data: {
3371
+ id: string;
3372
+ createdAt: string;
3373
+ isActive: boolean;
3374
+ name: string;
3375
+ channels: string[];
3376
+ order: number;
3377
+ description?: string | undefined;
3378
+ updatedAt?: string | undefined;
3379
+ category?: string | undefined;
3380
+ }[];
3381
+ }>;
3382
+ 500: import("zod").ZodObject<{
3383
+ success: import("zod").ZodLiteral<false>;
3384
+ message: import("zod").ZodString;
3385
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
3386
+ }, "strip", import("zod").ZodTypeAny, {
3387
+ message: string;
3388
+ success: false;
3389
+ errors?: any;
3390
+ }, {
3391
+ message: string;
3392
+ success: false;
3393
+ errors?: any;
3394
+ }>;
3395
+ };
3396
+ };
3397
+ getBundleById: {
3398
+ summary: "Get bundle by ID";
3399
+ method: "GET";
3400
+ path: "/api/bundles/:id";
3401
+ responses: {
3402
+ 200: import("zod").ZodObject<{
3403
+ success: import("zod").ZodLiteral<true>;
3404
+ message: import("zod").ZodString;
3405
+ data: import("zod").ZodObject<{
3406
+ id: import("zod").ZodString;
3407
+ name: import("zod").ZodString;
3408
+ description: import("zod").ZodOptional<import("zod").ZodString>;
3409
+ channels: import("zod").ZodArray<import("zod").ZodString, "many">;
3410
+ category: import("zod").ZodOptional<import("zod").ZodString>;
3411
+ isActive: import("zod").ZodBoolean;
3412
+ order: import("zod").ZodNumber;
3413
+ createdAt: import("zod").ZodString;
3414
+ updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
3415
+ }, "strip", import("zod").ZodTypeAny, {
3416
+ id: string;
3417
+ createdAt: string;
3418
+ isActive: boolean;
3419
+ name: string;
3420
+ channels: string[];
3421
+ order: number;
3422
+ description?: string | undefined;
3423
+ updatedAt?: string | undefined;
3424
+ category?: string | undefined;
3425
+ }, {
3426
+ id: string;
3427
+ createdAt: string;
3428
+ isActive: boolean;
3429
+ name: string;
3430
+ channels: string[];
3431
+ order: number;
3432
+ description?: string | undefined;
3433
+ updatedAt?: string | undefined;
3434
+ category?: string | undefined;
3435
+ }>;
3436
+ }, "strip", import("zod").ZodTypeAny, {
3437
+ message: string;
3438
+ success: true;
3439
+ data: {
3440
+ id: string;
3441
+ createdAt: string;
3442
+ isActive: boolean;
3443
+ name: string;
3444
+ channels: string[];
3445
+ order: number;
3446
+ description?: string | undefined;
3447
+ updatedAt?: string | undefined;
3448
+ category?: string | undefined;
3449
+ };
3450
+ }, {
3451
+ message: string;
3452
+ success: true;
3453
+ data: {
3454
+ id: string;
3455
+ createdAt: string;
3456
+ isActive: boolean;
3457
+ name: string;
3458
+ channels: string[];
3459
+ order: number;
3460
+ description?: string | undefined;
3461
+ updatedAt?: string | undefined;
3462
+ category?: string | undefined;
3463
+ };
3464
+ }>;
3465
+ 404: import("zod").ZodObject<{
3466
+ success: import("zod").ZodLiteral<false>;
3467
+ message: import("zod").ZodString;
3468
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
3469
+ }, "strip", import("zod").ZodTypeAny, {
3470
+ message: string;
3471
+ success: false;
3472
+ errors?: any;
3473
+ }, {
3474
+ message: string;
3475
+ success: false;
3476
+ errors?: any;
3477
+ }>;
3478
+ 500: import("zod").ZodObject<{
3479
+ success: import("zod").ZodLiteral<false>;
3480
+ message: import("zod").ZodString;
3481
+ errors: import("zod").ZodOptional<import("zod").ZodAny>;
3482
+ }, "strip", import("zod").ZodTypeAny, {
3483
+ message: string;
3484
+ success: false;
3485
+ errors?: any;
3486
+ }, {
3487
+ message: string;
3488
+ success: false;
3489
+ errors?: any;
3490
+ }>;
3491
+ };
3492
+ };
3493
+ };
3494
+ };
3495
+ export { jobsContract, channelsContract, userContract, resumeContract, sniperContract, notificationsContract, statsContract, feedbackContract, bundlesContract, };
3496
+ export * from './schemas/common';
3497
+ export * from './schemas/jobs';
3498
+ export * from './schemas/channels';
3499
+ export * from './schemas/user';
3500
+ export * from './schemas/bundles';
3501
+ export * from './schemas/errors';
3502
+ export { initContract } from '@ts-rest/core';
3503
+ export type { ClientInferRequest, ClientInferResponses } from '@ts-rest/core';
3504
+ //# sourceMappingURL=index.d.ts.map