@bernierllc/email-manager 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,867 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Zod schema for email manager suite runtime configuration
4
+ * Provides runtime validation and type safety
5
+ */
6
+ export declare const emailManagerConfigSchema: z.ZodObject<{
7
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
8
+ defaultProvider: z.ZodOptional<z.ZodOptional<z.ZodString>>;
9
+ providers: z.ZodOptional<z.ZodDefault<z.ZodObject<{
10
+ configDir: z.ZodDefault<z.ZodString>;
11
+ failover: z.ZodDefault<z.ZodObject<{
12
+ enabled: z.ZodDefault<z.ZodBoolean>;
13
+ maxAttempts: z.ZodDefault<z.ZodNumber>;
14
+ delayMs: z.ZodDefault<z.ZodNumber>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ enabled: boolean;
17
+ maxAttempts: number;
18
+ delayMs: number;
19
+ }, {
20
+ enabled?: boolean | undefined;
21
+ maxAttempts?: number | undefined;
22
+ delayMs?: number | undefined;
23
+ }>>;
24
+ healthCheck: z.ZodDefault<z.ZodObject<{
25
+ enabled: z.ZodDefault<z.ZodBoolean>;
26
+ intervalMs: z.ZodDefault<z.ZodNumber>;
27
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ enabled: boolean;
30
+ intervalMs: number;
31
+ timeoutMs: number;
32
+ }, {
33
+ enabled?: boolean | undefined;
34
+ intervalMs?: number | undefined;
35
+ timeoutMs?: number | undefined;
36
+ }>>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ configDir: string;
39
+ failover: {
40
+ enabled: boolean;
41
+ maxAttempts: number;
42
+ delayMs: number;
43
+ };
44
+ healthCheck: {
45
+ enabled: boolean;
46
+ intervalMs: number;
47
+ timeoutMs: number;
48
+ };
49
+ }, {
50
+ configDir?: string | undefined;
51
+ failover?: {
52
+ enabled?: boolean | undefined;
53
+ maxAttempts?: number | undefined;
54
+ delayMs?: number | undefined;
55
+ } | undefined;
56
+ healthCheck?: {
57
+ enabled?: boolean | undefined;
58
+ intervalMs?: number | undefined;
59
+ timeoutMs?: number | undefined;
60
+ } | undefined;
61
+ }>>>;
62
+ templates: z.ZodOptional<z.ZodDefault<z.ZodObject<{
63
+ storageDir: z.ZodDefault<z.ZodString>;
64
+ maxPerCategory: z.ZodDefault<z.ZodNumber>;
65
+ cacheTtlMs: z.ZodDefault<z.ZodNumber>;
66
+ versioningEnabled: z.ZodDefault<z.ZodBoolean>;
67
+ validationEnabled: z.ZodDefault<z.ZodBoolean>;
68
+ compilation: z.ZodDefault<z.ZodObject<{
69
+ enabled: z.ZodDefault<z.ZodBoolean>;
70
+ engine: z.ZodDefault<z.ZodEnum<["handlebars", "mustache", "pug", "ejs"]>>;
71
+ cacheSize: z.ZodDefault<z.ZodNumber>;
72
+ }, "strip", z.ZodTypeAny, {
73
+ enabled: boolean;
74
+ engine: "handlebars" | "mustache" | "pug" | "ejs";
75
+ cacheSize: number;
76
+ }, {
77
+ enabled?: boolean | undefined;
78
+ engine?: "handlebars" | "mustache" | "pug" | "ejs" | undefined;
79
+ cacheSize?: number | undefined;
80
+ }>>;
81
+ }, "strip", z.ZodTypeAny, {
82
+ storageDir: string;
83
+ maxPerCategory: number;
84
+ cacheTtlMs: number;
85
+ versioningEnabled: boolean;
86
+ validationEnabled: boolean;
87
+ compilation: {
88
+ enabled: boolean;
89
+ engine: "handlebars" | "mustache" | "pug" | "ejs";
90
+ cacheSize: number;
91
+ };
92
+ }, {
93
+ storageDir?: string | undefined;
94
+ maxPerCategory?: number | undefined;
95
+ cacheTtlMs?: number | undefined;
96
+ versioningEnabled?: boolean | undefined;
97
+ validationEnabled?: boolean | undefined;
98
+ compilation?: {
99
+ enabled?: boolean | undefined;
100
+ engine?: "handlebars" | "mustache" | "pug" | "ejs" | undefined;
101
+ cacheSize?: number | undefined;
102
+ } | undefined;
103
+ }>>>;
104
+ scheduling: z.ZodOptional<z.ZodDefault<z.ZodObject<{
105
+ enabled: z.ZodDefault<z.ZodBoolean>;
106
+ maxQueueSize: z.ZodDefault<z.ZodNumber>;
107
+ pollIntervalMs: z.ZodDefault<z.ZodNumber>;
108
+ maxAheadMs: z.ZodDefault<z.ZodNumber>;
109
+ persistence: z.ZodDefault<z.ZodObject<{
110
+ enabled: z.ZodDefault<z.ZodBoolean>;
111
+ provider: z.ZodDefault<z.ZodEnum<["file", "database", "redis"]>>;
112
+ path: z.ZodOptional<z.ZodString>;
113
+ }, "strip", z.ZodTypeAny, {
114
+ provider: "file" | "database" | "redis";
115
+ enabled: boolean;
116
+ path?: string | undefined;
117
+ }, {
118
+ path?: string | undefined;
119
+ provider?: "file" | "database" | "redis" | undefined;
120
+ enabled?: boolean | undefined;
121
+ }>>;
122
+ }, "strip", z.ZodTypeAny, {
123
+ enabled: boolean;
124
+ maxQueueSize: number;
125
+ pollIntervalMs: number;
126
+ maxAheadMs: number;
127
+ persistence: {
128
+ provider: "file" | "database" | "redis";
129
+ enabled: boolean;
130
+ path?: string | undefined;
131
+ };
132
+ }, {
133
+ enabled?: boolean | undefined;
134
+ maxQueueSize?: number | undefined;
135
+ pollIntervalMs?: number | undefined;
136
+ maxAheadMs?: number | undefined;
137
+ persistence?: {
138
+ path?: string | undefined;
139
+ provider?: "file" | "database" | "redis" | undefined;
140
+ enabled?: boolean | undefined;
141
+ } | undefined;
142
+ }>>>;
143
+ analytics: z.ZodOptional<z.ZodDefault<z.ZodObject<{
144
+ enabled: z.ZodDefault<z.ZodBoolean>;
145
+ retentionDays: z.ZodDefault<z.ZodNumber>;
146
+ aggregationIntervalMs: z.ZodDefault<z.ZodNumber>;
147
+ detailedTracking: z.ZodDefault<z.ZodBoolean>;
148
+ webhooks: z.ZodDefault<z.ZodObject<{
149
+ enabled: z.ZodDefault<z.ZodBoolean>;
150
+ url: z.ZodOptional<z.ZodString>;
151
+ secret: z.ZodOptional<z.ZodString>;
152
+ events: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
153
+ }, "strip", z.ZodTypeAny, {
154
+ enabled: boolean;
155
+ events: string[];
156
+ url?: string | undefined;
157
+ secret?: string | undefined;
158
+ }, {
159
+ url?: string | undefined;
160
+ enabled?: boolean | undefined;
161
+ secret?: string | undefined;
162
+ events?: string[] | undefined;
163
+ }>>;
164
+ }, "strip", z.ZodTypeAny, {
165
+ enabled: boolean;
166
+ retentionDays: number;
167
+ aggregationIntervalMs: number;
168
+ detailedTracking: boolean;
169
+ webhooks: {
170
+ enabled: boolean;
171
+ events: string[];
172
+ url?: string | undefined;
173
+ secret?: string | undefined;
174
+ };
175
+ }, {
176
+ enabled?: boolean | undefined;
177
+ retentionDays?: number | undefined;
178
+ aggregationIntervalMs?: number | undefined;
179
+ detailedTracking?: boolean | undefined;
180
+ webhooks?: {
181
+ url?: string | undefined;
182
+ enabled?: boolean | undefined;
183
+ secret?: string | undefined;
184
+ events?: string[] | undefined;
185
+ } | undefined;
186
+ }>>>;
187
+ rateLimiting: z.ZodOptional<z.ZodDefault<z.ZodObject<{
188
+ enabled: z.ZodDefault<z.ZodBoolean>;
189
+ emailsPerMinute: z.ZodDefault<z.ZodNumber>;
190
+ windowMs: z.ZodDefault<z.ZodNumber>;
191
+ perRecipient: z.ZodDefault<z.ZodObject<{
192
+ enabled: z.ZodDefault<z.ZodBoolean>;
193
+ emailsPerHour: z.ZodDefault<z.ZodNumber>;
194
+ }, "strip", z.ZodTypeAny, {
195
+ enabled: boolean;
196
+ emailsPerHour: number;
197
+ }, {
198
+ enabled?: boolean | undefined;
199
+ emailsPerHour?: number | undefined;
200
+ }>>;
201
+ perTemplate: z.ZodDefault<z.ZodObject<{
202
+ enabled: z.ZodDefault<z.ZodBoolean>;
203
+ limits: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
204
+ }, "strip", z.ZodTypeAny, {
205
+ enabled: boolean;
206
+ limits: Record<string, number>;
207
+ }, {
208
+ enabled?: boolean | undefined;
209
+ limits?: Record<string, number> | undefined;
210
+ }>>;
211
+ }, "strip", z.ZodTypeAny, {
212
+ enabled: boolean;
213
+ emailsPerMinute: number;
214
+ windowMs: number;
215
+ perRecipient: {
216
+ enabled: boolean;
217
+ emailsPerHour: number;
218
+ };
219
+ perTemplate: {
220
+ enabled: boolean;
221
+ limits: Record<string, number>;
222
+ };
223
+ }, {
224
+ enabled?: boolean | undefined;
225
+ emailsPerMinute?: number | undefined;
226
+ windowMs?: number | undefined;
227
+ perRecipient?: {
228
+ enabled?: boolean | undefined;
229
+ emailsPerHour?: number | undefined;
230
+ } | undefined;
231
+ perTemplate?: {
232
+ enabled?: boolean | undefined;
233
+ limits?: Record<string, number> | undefined;
234
+ } | undefined;
235
+ }>>>;
236
+ security: z.ZodOptional<z.ZodDefault<z.ZodObject<{
237
+ dkimEnabled: z.ZodDefault<z.ZodBoolean>;
238
+ dkimPrivateKeyPath: z.ZodOptional<z.ZodString>;
239
+ dkimSelector: z.ZodOptional<z.ZodString>;
240
+ spfCheckEnabled: z.ZodDefault<z.ZodBoolean>;
241
+ contentFiltering: z.ZodDefault<z.ZodObject<{
242
+ enabled: z.ZodDefault<z.ZodBoolean>;
243
+ blockSuspicious: z.ZodDefault<z.ZodBoolean>;
244
+ customFiltersDir: z.ZodOptional<z.ZodString>;
245
+ }, "strip", z.ZodTypeAny, {
246
+ enabled: boolean;
247
+ blockSuspicious: boolean;
248
+ customFiltersDir?: string | undefined;
249
+ }, {
250
+ enabled?: boolean | undefined;
251
+ blockSuspicious?: boolean | undefined;
252
+ customFiltersDir?: string | undefined;
253
+ }>>;
254
+ privacy: z.ZodDefault<z.ZodObject<{
255
+ piiDetection: z.ZodDefault<z.ZodBoolean>;
256
+ autoRedactLogs: z.ZodDefault<z.ZodBoolean>;
257
+ dataRetentionDays: z.ZodDefault<z.ZodNumber>;
258
+ }, "strip", z.ZodTypeAny, {
259
+ piiDetection: boolean;
260
+ autoRedactLogs: boolean;
261
+ dataRetentionDays: number;
262
+ }, {
263
+ piiDetection?: boolean | undefined;
264
+ autoRedactLogs?: boolean | undefined;
265
+ dataRetentionDays?: number | undefined;
266
+ }>>;
267
+ }, "strip", z.ZodTypeAny, {
268
+ dkimEnabled: boolean;
269
+ spfCheckEnabled: boolean;
270
+ contentFiltering: {
271
+ enabled: boolean;
272
+ blockSuspicious: boolean;
273
+ customFiltersDir?: string | undefined;
274
+ };
275
+ privacy: {
276
+ piiDetection: boolean;
277
+ autoRedactLogs: boolean;
278
+ dataRetentionDays: number;
279
+ };
280
+ dkimPrivateKeyPath?: string | undefined;
281
+ dkimSelector?: string | undefined;
282
+ }, {
283
+ dkimEnabled?: boolean | undefined;
284
+ dkimPrivateKeyPath?: string | undefined;
285
+ dkimSelector?: string | undefined;
286
+ spfCheckEnabled?: boolean | undefined;
287
+ contentFiltering?: {
288
+ enabled?: boolean | undefined;
289
+ blockSuspicious?: boolean | undefined;
290
+ customFiltersDir?: string | undefined;
291
+ } | undefined;
292
+ privacy?: {
293
+ piiDetection?: boolean | undefined;
294
+ autoRedactLogs?: boolean | undefined;
295
+ dataRetentionDays?: number | undefined;
296
+ } | undefined;
297
+ }>>>;
298
+ delivery: z.ZodOptional<z.ZodDefault<z.ZodObject<{
299
+ optimizationEnabled: z.ZodDefault<z.ZodBoolean>;
300
+ batching: z.ZodDefault<z.ZodObject<{
301
+ enabled: z.ZodDefault<z.ZodBoolean>;
302
+ size: z.ZodDefault<z.ZodNumber>;
303
+ intervalMs: z.ZodDefault<z.ZodNumber>;
304
+ }, "strip", z.ZodTypeAny, {
305
+ enabled: boolean;
306
+ intervalMs: number;
307
+ size: number;
308
+ }, {
309
+ enabled?: boolean | undefined;
310
+ intervalMs?: number | undefined;
311
+ size?: number | undefined;
312
+ }>>;
313
+ retry: z.ZodDefault<z.ZodObject<{
314
+ enabled: z.ZodDefault<z.ZodBoolean>;
315
+ maxAttempts: z.ZodDefault<z.ZodNumber>;
316
+ initialDelayMs: z.ZodDefault<z.ZodNumber>;
317
+ maxDelayMs: z.ZodDefault<z.ZodNumber>;
318
+ backoffFactor: z.ZodDefault<z.ZodNumber>;
319
+ }, "strip", z.ZodTypeAny, {
320
+ enabled: boolean;
321
+ maxAttempts: number;
322
+ initialDelayMs: number;
323
+ maxDelayMs: number;
324
+ backoffFactor: number;
325
+ }, {
326
+ enabled?: boolean | undefined;
327
+ maxAttempts?: number | undefined;
328
+ initialDelayMs?: number | undefined;
329
+ maxDelayMs?: number | undefined;
330
+ backoffFactor?: number | undefined;
331
+ }>>;
332
+ }, "strip", z.ZodTypeAny, {
333
+ retry: {
334
+ enabled: boolean;
335
+ maxAttempts: number;
336
+ initialDelayMs: number;
337
+ maxDelayMs: number;
338
+ backoffFactor: number;
339
+ };
340
+ optimizationEnabled: boolean;
341
+ batching: {
342
+ enabled: boolean;
343
+ intervalMs: number;
344
+ size: number;
345
+ };
346
+ }, {
347
+ retry?: {
348
+ enabled?: boolean | undefined;
349
+ maxAttempts?: number | undefined;
350
+ initialDelayMs?: number | undefined;
351
+ maxDelayMs?: number | undefined;
352
+ backoffFactor?: number | undefined;
353
+ } | undefined;
354
+ optimizationEnabled?: boolean | undefined;
355
+ batching?: {
356
+ enabled?: boolean | undefined;
357
+ intervalMs?: number | undefined;
358
+ size?: number | undefined;
359
+ } | undefined;
360
+ }>>>;
361
+ cache: z.ZodOptional<z.ZodDefault<z.ZodObject<{
362
+ enabled: z.ZodDefault<z.ZodBoolean>;
363
+ provider: z.ZodDefault<z.ZodEnum<["memory", "redis", "memcached"]>>;
364
+ templatesTtlMs: z.ZodDefault<z.ZodNumber>;
365
+ providerStatusTtlMs: z.ZodDefault<z.ZodNumber>;
366
+ analyticsTtlMs: z.ZodDefault<z.ZodNumber>;
367
+ url: z.ZodOptional<z.ZodString>;
368
+ }, "strip", z.ZodTypeAny, {
369
+ provider: "redis" | "memory" | "memcached";
370
+ enabled: boolean;
371
+ templatesTtlMs: number;
372
+ providerStatusTtlMs: number;
373
+ analyticsTtlMs: number;
374
+ url?: string | undefined;
375
+ }, {
376
+ provider?: "redis" | "memory" | "memcached" | undefined;
377
+ url?: string | undefined;
378
+ enabled?: boolean | undefined;
379
+ templatesTtlMs?: number | undefined;
380
+ providerStatusTtlMs?: number | undefined;
381
+ analyticsTtlMs?: number | undefined;
382
+ }>>>;
383
+ database: z.ZodOptional<z.ZodDefault<z.ZodObject<{
384
+ provider: z.ZodDefault<z.ZodEnum<["sqlite", "postgresql", "mysql", "mongodb"]>>;
385
+ url: z.ZodOptional<z.ZodString>;
386
+ pool: z.ZodDefault<z.ZodObject<{
387
+ min: z.ZodDefault<z.ZodNumber>;
388
+ max: z.ZodDefault<z.ZodNumber>;
389
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
390
+ }, "strip", z.ZodTypeAny, {
391
+ timeoutMs: number;
392
+ min: number;
393
+ max: number;
394
+ }, {
395
+ timeoutMs?: number | undefined;
396
+ min?: number | undefined;
397
+ max?: number | undefined;
398
+ }>>;
399
+ logQueries: z.ZodDefault<z.ZodBoolean>;
400
+ }, "strip", z.ZodTypeAny, {
401
+ provider: "sqlite" | "postgresql" | "mysql" | "mongodb";
402
+ pool: {
403
+ timeoutMs: number;
404
+ min: number;
405
+ max: number;
406
+ };
407
+ logQueries: boolean;
408
+ url?: string | undefined;
409
+ }, {
410
+ provider?: "sqlite" | "postgresql" | "mysql" | "mongodb" | undefined;
411
+ url?: string | undefined;
412
+ pool?: {
413
+ timeoutMs?: number | undefined;
414
+ min?: number | undefined;
415
+ max?: number | undefined;
416
+ } | undefined;
417
+ logQueries?: boolean | undefined;
418
+ }>>>;
419
+ logger: z.ZodOptional<z.ZodDefault<z.ZodObject<{
420
+ level: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
421
+ enabled: z.ZodDefault<z.ZodBoolean>;
422
+ includeEmails: z.ZodDefault<z.ZodBoolean>;
423
+ includeContent: z.ZodDefault<z.ZodBoolean>;
424
+ logDeliveryEvents: z.ZodDefault<z.ZodBoolean>;
425
+ logTemplateOperations: z.ZodDefault<z.ZodBoolean>;
426
+ }, "strip", z.ZodTypeAny, {
427
+ enabled: boolean;
428
+ level: "error" | "info" | "debug" | "warn";
429
+ includeEmails: boolean;
430
+ includeContent: boolean;
431
+ logDeliveryEvents: boolean;
432
+ logTemplateOperations: boolean;
433
+ }, {
434
+ enabled?: boolean | undefined;
435
+ level?: "error" | "info" | "debug" | "warn" | undefined;
436
+ includeEmails?: boolean | undefined;
437
+ includeContent?: boolean | undefined;
438
+ logDeliveryEvents?: boolean | undefined;
439
+ logTemplateOperations?: boolean | undefined;
440
+ }>>>;
441
+ monitoring: z.ZodOptional<z.ZodDefault<z.ZodObject<{
442
+ enabled: z.ZodDefault<z.ZodBoolean>;
443
+ metricsIntervalMs: z.ZodDefault<z.ZodNumber>;
444
+ performanceEnabled: z.ZodDefault<z.ZodBoolean>;
445
+ alertingEnabled: z.ZodDefault<z.ZodBoolean>;
446
+ alertThresholds: z.ZodDefault<z.ZodObject<{
447
+ deliveryFailureRate: z.ZodDefault<z.ZodNumber>;
448
+ queueSize: z.ZodDefault<z.ZodNumber>;
449
+ processingDelayMs: z.ZodDefault<z.ZodNumber>;
450
+ }, "strip", z.ZodTypeAny, {
451
+ deliveryFailureRate: number;
452
+ queueSize: number;
453
+ processingDelayMs: number;
454
+ }, {
455
+ deliveryFailureRate?: number | undefined;
456
+ queueSize?: number | undefined;
457
+ processingDelayMs?: number | undefined;
458
+ }>>;
459
+ }, "strip", z.ZodTypeAny, {
460
+ enabled: boolean;
461
+ metricsIntervalMs: number;
462
+ performanceEnabled: boolean;
463
+ alertingEnabled: boolean;
464
+ alertThresholds: {
465
+ deliveryFailureRate: number;
466
+ queueSize: number;
467
+ processingDelayMs: number;
468
+ };
469
+ }, {
470
+ enabled?: boolean | undefined;
471
+ metricsIntervalMs?: number | undefined;
472
+ performanceEnabled?: boolean | undefined;
473
+ alertingEnabled?: boolean | undefined;
474
+ alertThresholds?: {
475
+ deliveryFailureRate?: number | undefined;
476
+ queueSize?: number | undefined;
477
+ processingDelayMs?: number | undefined;
478
+ } | undefined;
479
+ }>>>;
480
+ corePackages: z.ZodOptional<z.ZodDefault<z.ZodObject<{
481
+ emailSender: z.ZodDefault<z.ZodObject<{
482
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
483
+ deliveryConfirmation: z.ZodDefault<z.ZodBoolean>;
484
+ }, "strip", z.ZodTypeAny, {
485
+ timeoutMs: number;
486
+ deliveryConfirmation: boolean;
487
+ }, {
488
+ timeoutMs?: number | undefined;
489
+ deliveryConfirmation?: boolean | undefined;
490
+ }>>;
491
+ templateEngine: z.ZodDefault<z.ZodObject<{
492
+ strictMode: z.ZodDefault<z.ZodBoolean>;
493
+ cacheSize: z.ZodDefault<z.ZodNumber>;
494
+ }, "strip", z.ZodTypeAny, {
495
+ cacheSize: number;
496
+ strictMode: boolean;
497
+ }, {
498
+ cacheSize?: number | undefined;
499
+ strictMode?: boolean | undefined;
500
+ }>>;
501
+ cryptoUtils: z.ZodDefault<z.ZodObject<{
502
+ algorithm: z.ZodDefault<z.ZodString>;
503
+ }, "strip", z.ZodTypeAny, {
504
+ algorithm: string;
505
+ }, {
506
+ algorithm?: string | undefined;
507
+ }>>;
508
+ }, "strip", z.ZodTypeAny, {
509
+ emailSender: {
510
+ timeoutMs: number;
511
+ deliveryConfirmation: boolean;
512
+ };
513
+ templateEngine: {
514
+ cacheSize: number;
515
+ strictMode: boolean;
516
+ };
517
+ cryptoUtils: {
518
+ algorithm: string;
519
+ };
520
+ }, {
521
+ emailSender?: {
522
+ timeoutMs?: number | undefined;
523
+ deliveryConfirmation?: boolean | undefined;
524
+ } | undefined;
525
+ templateEngine?: {
526
+ cacheSize?: number | undefined;
527
+ strictMode?: boolean | undefined;
528
+ } | undefined;
529
+ cryptoUtils?: {
530
+ algorithm?: string | undefined;
531
+ } | undefined;
532
+ }>>>;
533
+ }, "strip", z.ZodTypeAny, {
534
+ templates?: {
535
+ storageDir: string;
536
+ maxPerCategory: number;
537
+ cacheTtlMs: number;
538
+ versioningEnabled: boolean;
539
+ validationEnabled: boolean;
540
+ compilation: {
541
+ enabled: boolean;
542
+ engine: "handlebars" | "mustache" | "pug" | "ejs";
543
+ cacheSize: number;
544
+ };
545
+ } | undefined;
546
+ providers?: {
547
+ configDir: string;
548
+ failover: {
549
+ enabled: boolean;
550
+ maxAttempts: number;
551
+ delayMs: number;
552
+ };
553
+ healthCheck: {
554
+ enabled: boolean;
555
+ intervalMs: number;
556
+ timeoutMs: number;
557
+ };
558
+ } | undefined;
559
+ enabled?: boolean | undefined;
560
+ defaultProvider?: string | undefined;
561
+ scheduling?: {
562
+ enabled: boolean;
563
+ maxQueueSize: number;
564
+ pollIntervalMs: number;
565
+ maxAheadMs: number;
566
+ persistence: {
567
+ provider: "file" | "database" | "redis";
568
+ enabled: boolean;
569
+ path?: string | undefined;
570
+ };
571
+ } | undefined;
572
+ analytics?: {
573
+ enabled: boolean;
574
+ retentionDays: number;
575
+ aggregationIntervalMs: number;
576
+ detailedTracking: boolean;
577
+ webhooks: {
578
+ enabled: boolean;
579
+ events: string[];
580
+ url?: string | undefined;
581
+ secret?: string | undefined;
582
+ };
583
+ } | undefined;
584
+ delivery?: {
585
+ retry: {
586
+ enabled: boolean;
587
+ maxAttempts: number;
588
+ initialDelayMs: number;
589
+ maxDelayMs: number;
590
+ backoffFactor: number;
591
+ };
592
+ optimizationEnabled: boolean;
593
+ batching: {
594
+ enabled: boolean;
595
+ intervalMs: number;
596
+ size: number;
597
+ };
598
+ } | undefined;
599
+ database?: {
600
+ provider: "sqlite" | "postgresql" | "mysql" | "mongodb";
601
+ pool: {
602
+ timeoutMs: number;
603
+ min: number;
604
+ max: number;
605
+ };
606
+ logQueries: boolean;
607
+ url?: string | undefined;
608
+ } | undefined;
609
+ rateLimiting?: {
610
+ enabled: boolean;
611
+ emailsPerMinute: number;
612
+ windowMs: number;
613
+ perRecipient: {
614
+ enabled: boolean;
615
+ emailsPerHour: number;
616
+ };
617
+ perTemplate: {
618
+ enabled: boolean;
619
+ limits: Record<string, number>;
620
+ };
621
+ } | undefined;
622
+ security?: {
623
+ dkimEnabled: boolean;
624
+ spfCheckEnabled: boolean;
625
+ contentFiltering: {
626
+ enabled: boolean;
627
+ blockSuspicious: boolean;
628
+ customFiltersDir?: string | undefined;
629
+ };
630
+ privacy: {
631
+ piiDetection: boolean;
632
+ autoRedactLogs: boolean;
633
+ dataRetentionDays: number;
634
+ };
635
+ dkimPrivateKeyPath?: string | undefined;
636
+ dkimSelector?: string | undefined;
637
+ } | undefined;
638
+ cache?: {
639
+ provider: "redis" | "memory" | "memcached";
640
+ enabled: boolean;
641
+ templatesTtlMs: number;
642
+ providerStatusTtlMs: number;
643
+ analyticsTtlMs: number;
644
+ url?: string | undefined;
645
+ } | undefined;
646
+ logger?: {
647
+ enabled: boolean;
648
+ level: "error" | "info" | "debug" | "warn";
649
+ includeEmails: boolean;
650
+ includeContent: boolean;
651
+ logDeliveryEvents: boolean;
652
+ logTemplateOperations: boolean;
653
+ } | undefined;
654
+ monitoring?: {
655
+ enabled: boolean;
656
+ metricsIntervalMs: number;
657
+ performanceEnabled: boolean;
658
+ alertingEnabled: boolean;
659
+ alertThresholds: {
660
+ deliveryFailureRate: number;
661
+ queueSize: number;
662
+ processingDelayMs: number;
663
+ };
664
+ } | undefined;
665
+ corePackages?: {
666
+ emailSender: {
667
+ timeoutMs: number;
668
+ deliveryConfirmation: boolean;
669
+ };
670
+ templateEngine: {
671
+ cacheSize: number;
672
+ strictMode: boolean;
673
+ };
674
+ cryptoUtils: {
675
+ algorithm: string;
676
+ };
677
+ } | undefined;
678
+ }, {
679
+ templates?: {
680
+ storageDir?: string | undefined;
681
+ maxPerCategory?: number | undefined;
682
+ cacheTtlMs?: number | undefined;
683
+ versioningEnabled?: boolean | undefined;
684
+ validationEnabled?: boolean | undefined;
685
+ compilation?: {
686
+ enabled?: boolean | undefined;
687
+ engine?: "handlebars" | "mustache" | "pug" | "ejs" | undefined;
688
+ cacheSize?: number | undefined;
689
+ } | undefined;
690
+ } | undefined;
691
+ providers?: {
692
+ configDir?: string | undefined;
693
+ failover?: {
694
+ enabled?: boolean | undefined;
695
+ maxAttempts?: number | undefined;
696
+ delayMs?: number | undefined;
697
+ } | undefined;
698
+ healthCheck?: {
699
+ enabled?: boolean | undefined;
700
+ intervalMs?: number | undefined;
701
+ timeoutMs?: number | undefined;
702
+ } | undefined;
703
+ } | undefined;
704
+ enabled?: boolean | undefined;
705
+ defaultProvider?: string | undefined;
706
+ scheduling?: {
707
+ enabled?: boolean | undefined;
708
+ maxQueueSize?: number | undefined;
709
+ pollIntervalMs?: number | undefined;
710
+ maxAheadMs?: number | undefined;
711
+ persistence?: {
712
+ path?: string | undefined;
713
+ provider?: "file" | "database" | "redis" | undefined;
714
+ enabled?: boolean | undefined;
715
+ } | undefined;
716
+ } | undefined;
717
+ analytics?: {
718
+ enabled?: boolean | undefined;
719
+ retentionDays?: number | undefined;
720
+ aggregationIntervalMs?: number | undefined;
721
+ detailedTracking?: boolean | undefined;
722
+ webhooks?: {
723
+ url?: string | undefined;
724
+ enabled?: boolean | undefined;
725
+ secret?: string | undefined;
726
+ events?: string[] | undefined;
727
+ } | undefined;
728
+ } | undefined;
729
+ delivery?: {
730
+ retry?: {
731
+ enabled?: boolean | undefined;
732
+ maxAttempts?: number | undefined;
733
+ initialDelayMs?: number | undefined;
734
+ maxDelayMs?: number | undefined;
735
+ backoffFactor?: number | undefined;
736
+ } | undefined;
737
+ optimizationEnabled?: boolean | undefined;
738
+ batching?: {
739
+ enabled?: boolean | undefined;
740
+ intervalMs?: number | undefined;
741
+ size?: number | undefined;
742
+ } | undefined;
743
+ } | undefined;
744
+ database?: {
745
+ provider?: "sqlite" | "postgresql" | "mysql" | "mongodb" | undefined;
746
+ url?: string | undefined;
747
+ pool?: {
748
+ timeoutMs?: number | undefined;
749
+ min?: number | undefined;
750
+ max?: number | undefined;
751
+ } | undefined;
752
+ logQueries?: boolean | undefined;
753
+ } | undefined;
754
+ rateLimiting?: {
755
+ enabled?: boolean | undefined;
756
+ emailsPerMinute?: number | undefined;
757
+ windowMs?: number | undefined;
758
+ perRecipient?: {
759
+ enabled?: boolean | undefined;
760
+ emailsPerHour?: number | undefined;
761
+ } | undefined;
762
+ perTemplate?: {
763
+ enabled?: boolean | undefined;
764
+ limits?: Record<string, number> | undefined;
765
+ } | undefined;
766
+ } | undefined;
767
+ security?: {
768
+ dkimEnabled?: boolean | undefined;
769
+ dkimPrivateKeyPath?: string | undefined;
770
+ dkimSelector?: string | undefined;
771
+ spfCheckEnabled?: boolean | undefined;
772
+ contentFiltering?: {
773
+ enabled?: boolean | undefined;
774
+ blockSuspicious?: boolean | undefined;
775
+ customFiltersDir?: string | undefined;
776
+ } | undefined;
777
+ privacy?: {
778
+ piiDetection?: boolean | undefined;
779
+ autoRedactLogs?: boolean | undefined;
780
+ dataRetentionDays?: number | undefined;
781
+ } | undefined;
782
+ } | undefined;
783
+ cache?: {
784
+ provider?: "redis" | "memory" | "memcached" | undefined;
785
+ url?: string | undefined;
786
+ enabled?: boolean | undefined;
787
+ templatesTtlMs?: number | undefined;
788
+ providerStatusTtlMs?: number | undefined;
789
+ analyticsTtlMs?: number | undefined;
790
+ } | undefined;
791
+ logger?: {
792
+ enabled?: boolean | undefined;
793
+ level?: "error" | "info" | "debug" | "warn" | undefined;
794
+ includeEmails?: boolean | undefined;
795
+ includeContent?: boolean | undefined;
796
+ logDeliveryEvents?: boolean | undefined;
797
+ logTemplateOperations?: boolean | undefined;
798
+ } | undefined;
799
+ monitoring?: {
800
+ enabled?: boolean | undefined;
801
+ metricsIntervalMs?: number | undefined;
802
+ performanceEnabled?: boolean | undefined;
803
+ alertingEnabled?: boolean | undefined;
804
+ alertThresholds?: {
805
+ deliveryFailureRate?: number | undefined;
806
+ queueSize?: number | undefined;
807
+ processingDelayMs?: number | undefined;
808
+ } | undefined;
809
+ } | undefined;
810
+ corePackages?: {
811
+ emailSender?: {
812
+ timeoutMs?: number | undefined;
813
+ deliveryConfirmation?: boolean | undefined;
814
+ } | undefined;
815
+ templateEngine?: {
816
+ cacheSize?: number | undefined;
817
+ strictMode?: boolean | undefined;
818
+ } | undefined;
819
+ cryptoUtils?: {
820
+ algorithm?: string | undefined;
821
+ } | undefined;
822
+ } | undefined;
823
+ }>;
824
+ /**
825
+ * Type-safe configuration validation
826
+ */
827
+ export type ValidatedEmailManagerConfig = z.infer<typeof emailManagerConfigSchema>;
828
+ /**
829
+ * Validate security configurations
830
+ */
831
+ export declare function validateSecurityConfiguration(config: any): string[];
832
+ /**
833
+ * Validate provider configuration
834
+ */
835
+ export declare function validateProviderConfiguration(config: any): string[];
836
+ /**
837
+ * Validate analytics configuration
838
+ */
839
+ export declare function validateAnalyticsConfiguration(config: any): string[];
840
+ /**
841
+ * Validate rate limiting configuration
842
+ */
843
+ export declare function validateRateLimitingConfiguration(config: any): string[];
844
+ /**
845
+ * Validate database configuration
846
+ */
847
+ export declare function validateDatabaseConfiguration(config: any): string[];
848
+ /**
849
+ * Validate cache configuration
850
+ */
851
+ export declare function validateCacheConfiguration(config: any): string[];
852
+ /**
853
+ * Validate scheduling configuration
854
+ */
855
+ export declare function validateSchedulingConfiguration(config: any): string[];
856
+ /**
857
+ * Validate template configuration
858
+ */
859
+ export declare function validateTemplateConfiguration(config: any): string[];
860
+ /**
861
+ * Comprehensive configuration validation
862
+ */
863
+ export declare function validateEmailManagerConfig(config: any): {
864
+ isValid: boolean;
865
+ errors: string[];
866
+ };
867
+ //# sourceMappingURL=schema.d.ts.map