@digilogiclabs/platform-core 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.
@@ -0,0 +1,2786 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Database abstraction interface
5
+ * Provides a vendor-agnostic way to interact with SQL databases
6
+ */
7
+ interface QueryResult<T = unknown> {
8
+ data: T[];
9
+ count?: number;
10
+ error?: Error;
11
+ }
12
+ interface IDatabase {
13
+ /**
14
+ * Query data from a table
15
+ */
16
+ from<T = unknown>(table: string): IQueryBuilder<T>;
17
+ /**
18
+ * Execute a raw SQL query
19
+ */
20
+ raw<T = unknown>(sql: string, params?: unknown[]): Promise<QueryResult<T>>;
21
+ /**
22
+ * Begin a transaction
23
+ */
24
+ transaction<T>(fn: (tx: IDatabase) => Promise<T>): Promise<T>;
25
+ /**
26
+ * Check database connectivity
27
+ */
28
+ healthCheck(): Promise<boolean>;
29
+ /**
30
+ * Close database connection
31
+ */
32
+ close(): Promise<void>;
33
+ }
34
+ interface IQueryBuilder<T = unknown> {
35
+ select(columns?: string | string[]): IQueryBuilder<T>;
36
+ insert(data: Partial<T> | Partial<T>[]): IQueryBuilder<T>;
37
+ update(data: Partial<T>): IQueryBuilder<T>;
38
+ delete(): IQueryBuilder<T>;
39
+ where(column: string, operator: string, value: unknown): IQueryBuilder<T>;
40
+ whereIn(column: string, values: unknown[]): IQueryBuilder<T>;
41
+ orderBy(column: string, direction?: 'asc' | 'desc'): IQueryBuilder<T>;
42
+ limit(count: number): IQueryBuilder<T>;
43
+ offset(count: number): IQueryBuilder<T>;
44
+ single(): Promise<{
45
+ data: T | null;
46
+ error?: Error;
47
+ }>;
48
+ execute(): Promise<QueryResult<T>>;
49
+ }
50
+
51
+ /**
52
+ * Cache abstraction interface
53
+ * Provides a vendor-agnostic way to interact with key-value caches
54
+ */
55
+ interface ICacheOptions {
56
+ /** Time to live in seconds */
57
+ ttl?: number;
58
+ /** Cache key prefix */
59
+ prefix?: string;
60
+ }
61
+ interface ICache {
62
+ /**
63
+ * Get a value from cache
64
+ */
65
+ get<T = unknown>(key: string): Promise<T | null>;
66
+ /**
67
+ * Set a value in cache
68
+ */
69
+ set<T = unknown>(key: string, value: T, ttl?: number): Promise<void>;
70
+ /**
71
+ * Delete a value from cache
72
+ */
73
+ delete(key: string): Promise<void>;
74
+ /**
75
+ * Check if key exists
76
+ */
77
+ exists(key: string): Promise<boolean>;
78
+ /**
79
+ * Delete all keys matching pattern
80
+ */
81
+ deletePattern(pattern: string): Promise<number>;
82
+ /**
83
+ * Get multiple values
84
+ */
85
+ mget<T = unknown>(keys: string[]): Promise<(T | null)[]>;
86
+ /**
87
+ * Set multiple values
88
+ */
89
+ mset<T = unknown>(entries: Array<{
90
+ key: string;
91
+ value: T;
92
+ ttl?: number;
93
+ }>): Promise<void>;
94
+ /**
95
+ * Increment a numeric value
96
+ */
97
+ incr(key: string, by?: number): Promise<number>;
98
+ /**
99
+ * Publish a message to a channel
100
+ */
101
+ publish(channel: string, message: string): Promise<void>;
102
+ /**
103
+ * Subscribe to a channel
104
+ */
105
+ subscribe(channel: string, callback: (message: string) => void): Promise<() => void>;
106
+ /**
107
+ * Check cache connectivity
108
+ */
109
+ healthCheck(): Promise<boolean>;
110
+ /**
111
+ * Close cache connection
112
+ */
113
+ close(): Promise<void>;
114
+ }
115
+
116
+ /**
117
+ * Storage abstraction interface
118
+ * Provides a vendor-agnostic way to interact with file/blob storage
119
+ */
120
+ interface StorageFile {
121
+ key: string;
122
+ size: number;
123
+ contentType?: string;
124
+ lastModified?: Date;
125
+ etag?: string;
126
+ }
127
+ interface UploadOptions {
128
+ contentType?: string;
129
+ metadata?: Record<string, string>;
130
+ public?: boolean;
131
+ }
132
+ interface IStorage {
133
+ /**
134
+ * Upload a file
135
+ */
136
+ upload(key: string, data: Buffer | Blob | ReadableStream, options?: UploadOptions): Promise<{
137
+ url: string;
138
+ }>;
139
+ /**
140
+ * Download a file
141
+ */
142
+ download(key: string): Promise<Buffer>;
143
+ /**
144
+ * Get a signed URL for download
145
+ */
146
+ getSignedUrl(key: string, expiresIn?: number): Promise<string>;
147
+ /**
148
+ * Delete a file
149
+ */
150
+ delete(key: string): Promise<void>;
151
+ /**
152
+ * Delete multiple files
153
+ */
154
+ deleteMany(keys: string[]): Promise<void>;
155
+ /**
156
+ * List files in a path
157
+ */
158
+ list(prefix?: string): Promise<StorageFile[]>;
159
+ /**
160
+ * Check if file exists
161
+ */
162
+ exists(key: string): Promise<boolean>;
163
+ /**
164
+ * Get file metadata
165
+ */
166
+ getMetadata(key: string): Promise<StorageFile | null>;
167
+ /**
168
+ * Check storage connectivity
169
+ */
170
+ healthCheck(): Promise<boolean>;
171
+ }
172
+
173
+ /**
174
+ * Email abstraction interface
175
+ * Provides a vendor-agnostic way to send emails
176
+ */
177
+ interface EmailAddress {
178
+ email: string;
179
+ name?: string;
180
+ }
181
+ interface EmailAttachment {
182
+ filename: string;
183
+ content: Buffer | string;
184
+ contentType?: string;
185
+ }
186
+ interface EmailMessage {
187
+ to: EmailAddress | EmailAddress[];
188
+ from?: EmailAddress;
189
+ replyTo?: EmailAddress;
190
+ subject: string;
191
+ text?: string;
192
+ html?: string;
193
+ attachments?: EmailAttachment[];
194
+ headers?: Record<string, string>;
195
+ tags?: string[];
196
+ }
197
+ interface EmailResult {
198
+ id: string;
199
+ success: boolean;
200
+ error?: Error;
201
+ }
202
+ interface IEmail {
203
+ /**
204
+ * Send an email
205
+ */
206
+ send(message: EmailMessage): Promise<EmailResult>;
207
+ /**
208
+ * Send multiple emails (batch)
209
+ */
210
+ sendBatch(messages: EmailMessage[]): Promise<EmailResult[]>;
211
+ /**
212
+ * Check email service connectivity
213
+ */
214
+ healthCheck(): Promise<boolean>;
215
+ }
216
+
217
+ /**
218
+ * Queue abstraction interface
219
+ * Provides a vendor-agnostic way to work with job queues
220
+ */
221
+ interface JobOptions {
222
+ /** Delay before job is processed (ms) */
223
+ delay?: number;
224
+ /** Number of retry attempts */
225
+ attempts?: number;
226
+ /** Backoff strategy */
227
+ backoff?: {
228
+ type: 'fixed' | 'exponential';
229
+ delay: number;
230
+ };
231
+ /** Job priority (higher = more priority) */
232
+ priority?: number;
233
+ /** Remove job after completion */
234
+ removeOnComplete?: boolean | number;
235
+ /** Remove job after failure */
236
+ removeOnFail?: boolean | number;
237
+ }
238
+ interface Job<T = unknown> {
239
+ id: string;
240
+ name: string;
241
+ data: T;
242
+ attemptsMade: number;
243
+ progress: number;
244
+ timestamp: number;
245
+ }
246
+ interface JobResult<T = unknown> {
247
+ jobId: string;
248
+ result?: T;
249
+ error?: Error;
250
+ }
251
+ interface IQueue<T = unknown> {
252
+ /**
253
+ * Add a job to the queue
254
+ */
255
+ add(name: string, data: T, options?: JobOptions): Promise<Job<T>>;
256
+ /**
257
+ * Add multiple jobs
258
+ */
259
+ addBulk(jobs: Array<{
260
+ name: string;
261
+ data: T;
262
+ options?: JobOptions;
263
+ }>): Promise<Job<T>[]>;
264
+ /**
265
+ * Process jobs
266
+ */
267
+ process(handler: (job: Job<T>) => Promise<unknown>): void;
268
+ /**
269
+ * Get a job by ID
270
+ */
271
+ getJob(id: string): Promise<Job<T> | null>;
272
+ /**
273
+ * Remove a job
274
+ */
275
+ removeJob(id: string): Promise<void>;
276
+ /**
277
+ * Pause the queue
278
+ */
279
+ pause(): Promise<void>;
280
+ /**
281
+ * Resume the queue
282
+ */
283
+ resume(): Promise<void>;
284
+ /**
285
+ * Get queue statistics
286
+ */
287
+ getStats(): Promise<{
288
+ waiting: number;
289
+ active: number;
290
+ completed: number;
291
+ failed: number;
292
+ delayed: number;
293
+ }>;
294
+ /**
295
+ * Check queue connectivity
296
+ */
297
+ healthCheck(): Promise<boolean>;
298
+ /**
299
+ * Close queue connection
300
+ */
301
+ close(): Promise<void>;
302
+ }
303
+
304
+ /**
305
+ * Logger Interface
306
+ * Standardizes logging across the platform
307
+ */
308
+ /**
309
+ * Log levels in order of severity
310
+ */
311
+ type LogLevel = 'debug' | 'info' | 'warn' | 'error';
312
+ /**
313
+ * Metadata that can be attached to log entries
314
+ */
315
+ interface LogMeta {
316
+ /** Error object if logging an error */
317
+ error?: Error;
318
+ /** Duration in milliseconds (for timing operations) */
319
+ duration?: number;
320
+ /** Request ID for tracing */
321
+ requestId?: string;
322
+ /** User ID if applicable */
323
+ userId?: string;
324
+ /** Any additional key-value pairs */
325
+ [key: string]: unknown;
326
+ }
327
+ /**
328
+ * A structured log entry
329
+ */
330
+ interface LogEntry {
331
+ /** Log level */
332
+ level: LogLevel;
333
+ /** Log message */
334
+ message: string;
335
+ /** When the log was created */
336
+ timestamp: Date;
337
+ /** Optional metadata */
338
+ meta?: LogMeta;
339
+ /** Logger context (e.g., service name) */
340
+ context?: Record<string, unknown>;
341
+ }
342
+ /**
343
+ * Logger interface for structured logging
344
+ */
345
+ interface ILogger {
346
+ /**
347
+ * Log a debug message (for development/troubleshooting)
348
+ */
349
+ debug(message: string, meta?: LogMeta): void;
350
+ /**
351
+ * Log an informational message
352
+ */
353
+ info(message: string, meta?: LogMeta): void;
354
+ /**
355
+ * Log a warning message
356
+ */
357
+ warn(message: string, meta?: LogMeta): void;
358
+ /**
359
+ * Log an error message
360
+ */
361
+ error(message: string, meta?: LogMeta): void;
362
+ /**
363
+ * Create a child logger with additional context
364
+ * @param context Additional context to include in all logs from this child
365
+ */
366
+ child(context: Record<string, unknown>): ILogger;
367
+ }
368
+ /**
369
+ * Configuration options for loggers
370
+ */
371
+ interface LoggerConfig {
372
+ /** Minimum level to log */
373
+ level?: LogLevel;
374
+ /** Whether to pretty print (for development) */
375
+ pretty?: boolean;
376
+ /** Service name to include in logs */
377
+ service?: string;
378
+ /** Environment name */
379
+ environment?: string;
380
+ }
381
+ /**
382
+ * Console logger implementation (for development)
383
+ */
384
+ declare class ConsoleLogger implements ILogger {
385
+ private context;
386
+ private level;
387
+ private static levelPriority;
388
+ constructor(config?: LoggerConfig);
389
+ private shouldLog;
390
+ private log;
391
+ debug(message: string, meta?: LogMeta): void;
392
+ info(message: string, meta?: LogMeta): void;
393
+ warn(message: string, meta?: LogMeta): void;
394
+ error(message: string, meta?: LogMeta): void;
395
+ child(context: Record<string, unknown>): ILogger;
396
+ }
397
+ /**
398
+ * No-op logger for testing or when logging is disabled
399
+ */
400
+ declare class NoopLogger implements ILogger {
401
+ debug(): void;
402
+ info(): void;
403
+ warn(): void;
404
+ error(): void;
405
+ child(): ILogger;
406
+ }
407
+
408
+ /**
409
+ * Metrics Interface
410
+ *
411
+ * Provides observability through counters, gauges, histograms, and timers.
412
+ */
413
+ /**
414
+ * Tags for metrics (key-value pairs for dimensions)
415
+ */
416
+ type MetricTags = Record<string, string | number | boolean>;
417
+ /**
418
+ * Metrics interface for observability
419
+ */
420
+ interface IMetrics {
421
+ /**
422
+ * Increment a counter by a value (default 1)
423
+ *
424
+ * @example
425
+ * metrics.increment('api.requests', 1, { method: 'GET', path: '/users' })
426
+ */
427
+ increment(name: string, value?: number, tags?: MetricTags): void;
428
+ /**
429
+ * Decrement a counter by a value (default 1)
430
+ *
431
+ * @example
432
+ * metrics.decrement('active.connections', 1, { server: 'api-1' })
433
+ */
434
+ decrement(name: string, value?: number, tags?: MetricTags): void;
435
+ /**
436
+ * Set a gauge to a specific value
437
+ *
438
+ * @example
439
+ * metrics.gauge('queue.size', 42, { queue: 'emails' })
440
+ */
441
+ gauge(name: string, value: number, tags?: MetricTags): void;
442
+ /**
443
+ * Record a value in a histogram (for distributions)
444
+ *
445
+ * @example
446
+ * metrics.histogram('response.size', 1024, { endpoint: '/api/users' })
447
+ */
448
+ histogram(name: string, value: number, tags?: MetricTags): void;
449
+ /**
450
+ * Record a timing value in milliseconds
451
+ *
452
+ * @example
453
+ * metrics.timing('db.query.duration', 42, { table: 'users' })
454
+ */
455
+ timing(name: string, value: number, tags?: MetricTags): void;
456
+ /**
457
+ * Start a timer and return a function to stop it
458
+ *
459
+ * @example
460
+ * const stop = metrics.startTimer('api.request.duration', { method: 'GET' })
461
+ * // ... do work ...
462
+ * stop() // Records the duration
463
+ */
464
+ startTimer(name: string, tags?: MetricTags): () => void;
465
+ /**
466
+ * Record a distribution value (similar to histogram but for Datadog)
467
+ *
468
+ * @example
469
+ * metrics.distribution('payment.amount', 99.99, { currency: 'USD' })
470
+ */
471
+ distribution?(name: string, value: number, tags?: MetricTags): void;
472
+ /**
473
+ * Record a set value (count unique elements)
474
+ *
475
+ * @example
476
+ * metrics.set('unique.users', 'user-123')
477
+ */
478
+ set?(name: string, value: string | number, tags?: MetricTags): void;
479
+ /**
480
+ * Flush all pending metrics to the backend
481
+ */
482
+ flush(): Promise<void>;
483
+ /**
484
+ * Close the metrics client
485
+ */
486
+ close(): Promise<void>;
487
+ }
488
+ /**
489
+ * Memory-based metrics implementation for testing
490
+ */
491
+ declare class MemoryMetrics implements IMetrics {
492
+ private counters;
493
+ private gauges;
494
+ private histograms;
495
+ private timings;
496
+ private sets;
497
+ increment(name: string, value?: number, tags?: MetricTags): void;
498
+ decrement(name: string, value?: number, tags?: MetricTags): void;
499
+ gauge(name: string, value: number, tags?: MetricTags): void;
500
+ histogram(name: string, value: number, tags?: MetricTags): void;
501
+ timing(name: string, value: number, tags?: MetricTags): void;
502
+ startTimer(name: string, tags?: MetricTags): () => void;
503
+ distribution(name: string, value: number, tags?: MetricTags): void;
504
+ set(name: string, value: string | number, tags?: MetricTags): void;
505
+ flush(): Promise<void>;
506
+ close(): Promise<void>;
507
+ /**
508
+ * Get counter value
509
+ */
510
+ getCounter(name: string, tags?: MetricTags): number;
511
+ /**
512
+ * Get gauge value
513
+ */
514
+ getGauge(name: string, tags?: MetricTags): number | undefined;
515
+ /**
516
+ * Get histogram values
517
+ */
518
+ getHistogram(name: string, tags?: MetricTags): number[];
519
+ /**
520
+ * Get timing values
521
+ */
522
+ getTiming(name: string, tags?: MetricTags): number[];
523
+ /**
524
+ * Get set size
525
+ */
526
+ getSetSize(name: string, tags?: MetricTags): number;
527
+ /**
528
+ * Get all metrics as a summary
529
+ */
530
+ getSummary(): MetricsSummary;
531
+ /**
532
+ * Reset all metrics
533
+ */
534
+ reset(): void;
535
+ private createKey;
536
+ private percentile;
537
+ }
538
+ /**
539
+ * No-op metrics implementation
540
+ */
541
+ declare class NoopMetrics implements IMetrics {
542
+ increment(): void;
543
+ decrement(): void;
544
+ gauge(): void;
545
+ histogram(): void;
546
+ timing(): void;
547
+ startTimer(): () => void;
548
+ distribution(): void;
549
+ set(): void;
550
+ flush(): Promise<void>;
551
+ close(): Promise<void>;
552
+ }
553
+ /**
554
+ * Summary of all metrics
555
+ */
556
+ interface MetricsSummary {
557
+ counters: Record<string, number>;
558
+ gauges: Record<string, number>;
559
+ histograms: Record<string, HistogramStats>;
560
+ timings: Record<string, TimingStats>;
561
+ sets: Record<string, number>;
562
+ }
563
+ /**
564
+ * Histogram statistics
565
+ */
566
+ interface HistogramStats {
567
+ count: number;
568
+ sum: number;
569
+ min: number;
570
+ max: number;
571
+ avg: number;
572
+ }
573
+ /**
574
+ * Timing statistics
575
+ */
576
+ interface TimingStats extends HistogramStats {
577
+ p50: number;
578
+ p95: number;
579
+ p99: number;
580
+ }
581
+ /**
582
+ * Create a scoped metrics instance with a prefix
583
+ */
584
+ declare function createScopedMetrics(metrics: IMetrics, prefix: string, defaultTags?: MetricTags): IMetrics;
585
+
586
+ /**
587
+ * Distributed Tracing Interface
588
+ *
589
+ * Provides vendor-agnostic distributed tracing for observability.
590
+ * Supports OpenTelemetry, Jaeger, Zipkin, and custom implementations.
591
+ */
592
+ type SpanKind = 'internal' | 'server' | 'client' | 'producer' | 'consumer';
593
+ type SpanStatusCode = 'unset' | 'ok' | 'error';
594
+ interface SpanStatus {
595
+ code: SpanStatusCode;
596
+ message?: string;
597
+ }
598
+ interface SpanContext {
599
+ traceId: string;
600
+ spanId: string;
601
+ traceFlags: number;
602
+ traceState?: string;
603
+ }
604
+ interface SpanOptions {
605
+ /** Type of span */
606
+ kind?: SpanKind;
607
+ /** Initial attributes */
608
+ attributes?: Record<string, string | number | boolean>;
609
+ /** Parent span (for manual context propagation) */
610
+ parent?: ISpan;
611
+ /** Links to other spans */
612
+ links?: SpanContext[];
613
+ /** Start time (defaults to now) */
614
+ startTime?: number;
615
+ }
616
+ interface SpanEvent {
617
+ name: string;
618
+ timestamp: number;
619
+ attributes?: Record<string, string | number | boolean>;
620
+ }
621
+ interface ISpan {
622
+ /** Span name */
623
+ readonly name: string;
624
+ /** Span context (trace ID, span ID) */
625
+ readonly context: SpanContext;
626
+ /** Whether the span is recording */
627
+ readonly isRecording: boolean;
628
+ /**
629
+ * Set a single attribute
630
+ */
631
+ setAttribute(key: string, value: string | number | boolean): this;
632
+ /**
633
+ * Set multiple attributes
634
+ */
635
+ setAttributes(attributes: Record<string, string | number | boolean>): this;
636
+ /**
637
+ * Add an event to the span
638
+ */
639
+ addEvent(name: string, attributes?: Record<string, string | number | boolean>): this;
640
+ /**
641
+ * Set the span status
642
+ */
643
+ setStatus(status: SpanStatus): this;
644
+ /**
645
+ * Record an exception
646
+ */
647
+ recordException(exception: Error, attributes?: Record<string, string | number | boolean>): this;
648
+ /**
649
+ * Update the span name
650
+ */
651
+ updateName(name: string): this;
652
+ /**
653
+ * End the span (required to export)
654
+ */
655
+ end(endTime?: number): void;
656
+ }
657
+ interface ITracing {
658
+ /**
659
+ * Create and start a new span
660
+ */
661
+ startSpan(name: string, options?: SpanOptions): ISpan;
662
+ /**
663
+ * Get the currently active span
664
+ */
665
+ getCurrentSpan(): ISpan | undefined;
666
+ /**
667
+ * Execute a function within a span context
668
+ */
669
+ withSpan<T>(name: string, fn: (span: ISpan) => T, options?: SpanOptions): T;
670
+ /**
671
+ * Execute an async function within a span context
672
+ */
673
+ withSpanAsync<T>(name: string, fn: (span: ISpan) => Promise<T>, options?: SpanOptions): Promise<T>;
674
+ /**
675
+ * Instrument a function with automatic span creation
676
+ */
677
+ instrument<TArgs extends unknown[], TReturn>(name: string, fn: (...args: TArgs) => TReturn, options?: SpanOptions): (...args: TArgs) => TReturn;
678
+ /**
679
+ * Instrument an async function with automatic span creation
680
+ */
681
+ instrumentAsync<TArgs extends unknown[], TReturn>(name: string, fn: (...args: TArgs) => Promise<TReturn>, options?: SpanOptions): (...args: TArgs) => Promise<TReturn>;
682
+ /**
683
+ * Extract trace context from headers (for incoming requests)
684
+ */
685
+ extractContext(headers: Record<string, string | string[] | undefined>): SpanContext | undefined;
686
+ /**
687
+ * Inject trace context into headers (for outgoing requests)
688
+ */
689
+ injectContext(headers: Record<string, string>): void;
690
+ /**
691
+ * Check if tracing is enabled and healthy
692
+ */
693
+ healthCheck(): Promise<boolean>;
694
+ /**
695
+ * Flush pending spans to the exporter
696
+ */
697
+ flush(): Promise<void>;
698
+ /**
699
+ * Shutdown the tracer
700
+ */
701
+ close(): Promise<void>;
702
+ }
703
+ interface TracingConfig {
704
+ /** Enable tracing */
705
+ enabled: boolean;
706
+ /** Service name for traces */
707
+ serviceName: string;
708
+ /** Service version */
709
+ serviceVersion?: string;
710
+ /** Environment (dev, staging, production) */
711
+ environment?: string;
712
+ /** Sampling rate (0.0 to 1.0) */
713
+ sampleRate?: number;
714
+ /** Exporter type */
715
+ exporter?: 'console' | 'otlp' | 'jaeger' | 'zipkin' | 'none';
716
+ /** Exporter endpoint */
717
+ endpoint?: string;
718
+ /** Additional resource attributes */
719
+ resourceAttributes?: Record<string, string>;
720
+ /** Propagation format */
721
+ propagation?: 'w3c' | 'b3' | 'jaeger';
722
+ }
723
+ declare class MemorySpan implements ISpan {
724
+ readonly name: string;
725
+ readonly context: SpanContext;
726
+ readonly isRecording: boolean;
727
+ private _attributes;
728
+ private _events;
729
+ private _status;
730
+ private _endTime?;
731
+ private _startTime;
732
+ constructor(name: string, traceId: string, parentSpanId?: string);
733
+ private generateSpanId;
734
+ setAttribute(key: string, value: string | number | boolean): this;
735
+ setAttributes(attributes: Record<string, string | number | boolean>): this;
736
+ addEvent(name: string, attributes?: Record<string, string | number | boolean>): this;
737
+ setStatus(status: SpanStatus): this;
738
+ recordException(exception: Error, attributes?: Record<string, string | number | boolean>): this;
739
+ updateName(name: string): this;
740
+ end(endTime?: number): void;
741
+ getAttributes(): Record<string, string | number | boolean>;
742
+ getEvents(): SpanEvent[];
743
+ getStatus(): SpanStatus;
744
+ getDuration(): number | undefined;
745
+ isEnded(): boolean;
746
+ }
747
+ declare class MemoryTracing implements ITracing {
748
+ private spans;
749
+ private currentSpan;
750
+ private traceId;
751
+ constructor();
752
+ private generateTraceId;
753
+ startSpan(name: string, options?: SpanOptions): ISpan;
754
+ getCurrentSpan(): ISpan | undefined;
755
+ withSpan<T>(name: string, fn: (span: ISpan) => T, options?: SpanOptions): T;
756
+ withSpanAsync<T>(name: string, fn: (span: ISpan) => Promise<T>, options?: SpanOptions): Promise<T>;
757
+ instrument<TArgs extends unknown[], TReturn>(name: string, fn: (...args: TArgs) => TReturn, options?: SpanOptions): (...args: TArgs) => TReturn;
758
+ instrumentAsync<TArgs extends unknown[], TReturn>(name: string, fn: (...args: TArgs) => Promise<TReturn>, options?: SpanOptions): (...args: TArgs) => Promise<TReturn>;
759
+ extractContext(headers: Record<string, string | string[] | undefined>): SpanContext | undefined;
760
+ injectContext(headers: Record<string, string>): void;
761
+ healthCheck(): Promise<boolean>;
762
+ flush(): Promise<void>;
763
+ close(): Promise<void>;
764
+ getSpans(): MemorySpan[];
765
+ getCompletedSpans(): MemorySpan[];
766
+ clear(): void;
767
+ }
768
+ declare class NoopTracing implements ITracing {
769
+ private noopSpan;
770
+ startSpan(): ISpan;
771
+ getCurrentSpan(): ISpan | undefined;
772
+ withSpan<T>(_name: string, fn: (span: ISpan) => T): T;
773
+ withSpanAsync<T>(_name: string, fn: (span: ISpan) => Promise<T>): Promise<T>;
774
+ instrument<TArgs extends unknown[], TReturn>(_name: string, fn: (...args: TArgs) => TReturn): (...args: TArgs) => TReturn;
775
+ instrumentAsync<TArgs extends unknown[], TReturn>(_name: string, fn: (...args: TArgs) => Promise<TReturn>): (...args: TArgs) => Promise<TReturn>;
776
+ extractContext(): SpanContext | undefined;
777
+ injectContext(): void;
778
+ healthCheck(): Promise<boolean>;
779
+ flush(): Promise<void>;
780
+ close(): Promise<void>;
781
+ }
782
+
783
+ /**
784
+ * Main Platform interface
785
+ * Combines all infrastructure services into a single entry point
786
+ */
787
+
788
+ interface PlatformHealthStatus {
789
+ healthy: boolean;
790
+ services: {
791
+ database: boolean;
792
+ cache: boolean;
793
+ storage: boolean;
794
+ email: boolean;
795
+ queue: boolean;
796
+ tracing?: boolean;
797
+ };
798
+ timestamp: number;
799
+ }
800
+ interface IPlatform {
801
+ /** Database service */
802
+ readonly db: IDatabase;
803
+ /** Cache service */
804
+ readonly cache: ICache;
805
+ /** Storage service */
806
+ readonly storage: IStorage;
807
+ /** Email service */
808
+ readonly email: IEmail;
809
+ /** Queue service */
810
+ readonly queue: IQueue;
811
+ /** Logger service (optional) */
812
+ readonly logger?: ILogger;
813
+ /** Metrics service (optional) */
814
+ readonly metrics?: IMetrics;
815
+ /** Tracing service (optional) */
816
+ readonly tracing?: ITracing;
817
+ /**
818
+ * Check health of all services
819
+ */
820
+ healthCheck(): Promise<PlatformHealthStatus>;
821
+ /**
822
+ * Close all connections
823
+ */
824
+ close(): Promise<void>;
825
+ }
826
+
827
+ /**
828
+ * Secrets Management Interface
829
+ *
830
+ * Provides a vendor-agnostic abstraction for secrets management.
831
+ * Supports various backends: Environment variables, HashiCorp Vault,
832
+ * AWS Secrets Manager, Azure Key Vault, GCP Secret Manager, etc.
833
+ */
834
+ /**
835
+ * Secret metadata
836
+ */
837
+ interface SecretMetadata {
838
+ /** Secret version or ETag */
839
+ version?: string;
840
+ /** Creation timestamp */
841
+ createdAt?: Date;
842
+ /** Last updated timestamp */
843
+ updatedAt?: Date;
844
+ /** Expiration timestamp */
845
+ expiresAt?: Date;
846
+ /** Custom tags/labels */
847
+ tags?: Record<string, string>;
848
+ }
849
+ /**
850
+ * Secret with metadata
851
+ */
852
+ interface Secret<T = string> {
853
+ /** Secret key/name */
854
+ key: string;
855
+ /** Secret value */
856
+ value: T;
857
+ /** Secret metadata */
858
+ metadata?: SecretMetadata;
859
+ }
860
+ /**
861
+ * Options for getting secrets
862
+ */
863
+ interface GetSecretOptions {
864
+ /** Specific version to retrieve */
865
+ version?: string;
866
+ /** Include metadata in response */
867
+ includeMetadata?: boolean;
868
+ /** Cache TTL in seconds (0 = no cache) */
869
+ cacheTtl?: number;
870
+ }
871
+ /**
872
+ * Options for setting secrets
873
+ */
874
+ interface SetSecretOptions {
875
+ /** Expiration timestamp */
876
+ expiresAt?: Date;
877
+ /** Custom tags/labels */
878
+ tags?: Record<string, string>;
879
+ /** Description */
880
+ description?: string;
881
+ }
882
+ /**
883
+ * Options for rotating secrets
884
+ */
885
+ interface RotateSecretOptions {
886
+ /** Custom rotation function */
887
+ rotationFn?: () => Promise<string>;
888
+ /** Rotation period in days */
889
+ rotationPeriodDays?: number;
890
+ /** Keep previous version count */
891
+ keepPreviousVersions?: number;
892
+ }
893
+ /**
894
+ * Result of a rotation operation
895
+ */
896
+ interface RotationResult {
897
+ /** New secret value */
898
+ newValue: string;
899
+ /** Previous secret value (for rollback) */
900
+ previousValue?: string;
901
+ /** New version identifier */
902
+ newVersion: string;
903
+ /** Previous version identifier */
904
+ previousVersion?: string;
905
+ }
906
+ /**
907
+ * Secrets Management Interface
908
+ */
909
+ interface ISecrets {
910
+ /**
911
+ * Get a secret value by key
912
+ */
913
+ get(key: string, options?: GetSecretOptions): Promise<string | null>;
914
+ /**
915
+ * Get a secret with metadata
916
+ */
917
+ getWithMetadata(key: string, options?: GetSecretOptions): Promise<Secret | null>;
918
+ /**
919
+ * Get multiple secrets at once
920
+ */
921
+ mget(keys: string[]): Promise<Map<string, string | null>>;
922
+ /**
923
+ * Set a secret value
924
+ */
925
+ set(key: string, value: string, options?: SetSecretOptions): Promise<void>;
926
+ /**
927
+ * Delete a secret
928
+ */
929
+ delete(key: string): Promise<void>;
930
+ /**
931
+ * Check if a secret exists
932
+ */
933
+ exists(key: string): Promise<boolean>;
934
+ /**
935
+ * List all secret keys (optionally filtered by prefix)
936
+ */
937
+ list(prefix?: string): Promise<string[]>;
938
+ /**
939
+ * Rotate a secret (generate new value)
940
+ */
941
+ rotate(key: string, options?: RotateSecretOptions): Promise<RotationResult>;
942
+ /**
943
+ * Get all versions of a secret
944
+ */
945
+ getVersions(key: string): Promise<SecretMetadata[]>;
946
+ /**
947
+ * Health check
948
+ */
949
+ healthCheck(): Promise<boolean>;
950
+ }
951
+ /**
952
+ * Environment Variables Secrets Adapter
953
+ * Simple implementation using process.env - suitable for development
954
+ * and containerized deployments with injected secrets
955
+ */
956
+ declare class EnvSecrets implements ISecrets {
957
+ private prefix;
958
+ private cache;
959
+ constructor(options?: {
960
+ prefix?: string;
961
+ });
962
+ private getEnvKey;
963
+ get(key: string, options?: GetSecretOptions): Promise<string | null>;
964
+ getWithMetadata(key: string, options?: GetSecretOptions): Promise<Secret | null>;
965
+ mget(keys: string[]): Promise<Map<string, string | null>>;
966
+ set(key: string, value: string, _options?: SetSecretOptions): Promise<void>;
967
+ delete(key: string): Promise<void>;
968
+ exists(key: string): Promise<boolean>;
969
+ list(prefix?: string): Promise<string[]>;
970
+ rotate(key: string, options?: RotateSecretOptions): Promise<RotationResult>;
971
+ getVersions(_key: string): Promise<SecretMetadata[]>;
972
+ healthCheck(): Promise<boolean>;
973
+ private generateSecureValue;
974
+ /**
975
+ * Clear the internal cache
976
+ */
977
+ clearCache(): void;
978
+ }
979
+ /**
980
+ * Memory-based Secrets Adapter
981
+ * For testing purposes only - stores secrets in memory
982
+ */
983
+ declare class MemorySecrets implements ISecrets {
984
+ private secrets;
985
+ private versions;
986
+ get(key: string, _options?: GetSecretOptions): Promise<string | null>;
987
+ getWithMetadata(key: string, options?: GetSecretOptions): Promise<Secret | null>;
988
+ mget(keys: string[]): Promise<Map<string, string | null>>;
989
+ set(key: string, value: string, options?: SetSecretOptions): Promise<void>;
990
+ delete(key: string): Promise<void>;
991
+ exists(key: string): Promise<boolean>;
992
+ list(prefix?: string): Promise<string[]>;
993
+ rotate(key: string, options?: RotateSecretOptions): Promise<RotationResult>;
994
+ getVersions(key: string): Promise<SecretMetadata[]>;
995
+ healthCheck(): Promise<boolean>;
996
+ private generateSecureValue;
997
+ /**
998
+ * Clear all secrets (for testing)
999
+ */
1000
+ clear(): void;
1001
+ /**
1002
+ * Get count of secrets (for testing)
1003
+ */
1004
+ get size(): number;
1005
+ }
1006
+
1007
+ /**
1008
+ * Platform Configuration
1009
+ * Comprehensive Zod schema for all platform options with validation
1010
+ */
1011
+
1012
+ declare const DatabaseProviderSchema: z.ZodEnum<["memory", "postgres", "supabase"]>;
1013
+ declare const CacheProviderSchema: z.ZodEnum<["memory", "redis", "upstash"]>;
1014
+ declare const StorageProviderSchema: z.ZodEnum<["memory", "s3", "minio", "r2", "supabase"]>;
1015
+ declare const EmailProviderSchema: z.ZodEnum<["memory", "console", "smtp", "resend"]>;
1016
+ declare const QueueProviderSchema: z.ZodEnum<["memory", "bullmq"]>;
1017
+ declare const TracingProviderSchema: z.ZodEnum<["noop", "memory", "otlp"]>;
1018
+ declare const LogLevelSchema: z.ZodEnum<["debug", "info", "warn", "error"]>;
1019
+ declare const DatabaseConfigSchema: z.ZodEffects<z.ZodObject<{
1020
+ provider: z.ZodDefault<z.ZodEnum<["memory", "postgres", "supabase"]>>;
1021
+ url: z.ZodOptional<z.ZodString>;
1022
+ connectionString: z.ZodOptional<z.ZodString>;
1023
+ supabaseUrl: z.ZodOptional<z.ZodString>;
1024
+ supabaseAnonKey: z.ZodOptional<z.ZodString>;
1025
+ supabaseServiceRoleKey: z.ZodOptional<z.ZodString>;
1026
+ poolSize: z.ZodDefault<z.ZodNumber>;
1027
+ connectionTimeout: z.ZodDefault<z.ZodNumber>;
1028
+ ssl: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
1029
+ rejectUnauthorized: z.ZodOptional<z.ZodBoolean>;
1030
+ }, "strip", z.ZodTypeAny, {
1031
+ rejectUnauthorized?: boolean | undefined;
1032
+ }, {
1033
+ rejectUnauthorized?: boolean | undefined;
1034
+ }>]>>;
1035
+ }, "strip", z.ZodTypeAny, {
1036
+ provider: "memory" | "postgres" | "supabase";
1037
+ poolSize: number;
1038
+ connectionTimeout: number;
1039
+ url?: string | undefined;
1040
+ connectionString?: string | undefined;
1041
+ supabaseUrl?: string | undefined;
1042
+ supabaseAnonKey?: string | undefined;
1043
+ supabaseServiceRoleKey?: string | undefined;
1044
+ ssl?: boolean | {
1045
+ rejectUnauthorized?: boolean | undefined;
1046
+ } | undefined;
1047
+ }, {
1048
+ provider?: "memory" | "postgres" | "supabase" | undefined;
1049
+ url?: string | undefined;
1050
+ connectionString?: string | undefined;
1051
+ supabaseUrl?: string | undefined;
1052
+ supabaseAnonKey?: string | undefined;
1053
+ supabaseServiceRoleKey?: string | undefined;
1054
+ poolSize?: number | undefined;
1055
+ connectionTimeout?: number | undefined;
1056
+ ssl?: boolean | {
1057
+ rejectUnauthorized?: boolean | undefined;
1058
+ } | undefined;
1059
+ }>, {
1060
+ provider: "memory" | "postgres" | "supabase";
1061
+ poolSize: number;
1062
+ connectionTimeout: number;
1063
+ url?: string | undefined;
1064
+ connectionString?: string | undefined;
1065
+ supabaseUrl?: string | undefined;
1066
+ supabaseAnonKey?: string | undefined;
1067
+ supabaseServiceRoleKey?: string | undefined;
1068
+ ssl?: boolean | {
1069
+ rejectUnauthorized?: boolean | undefined;
1070
+ } | undefined;
1071
+ }, {
1072
+ provider?: "memory" | "postgres" | "supabase" | undefined;
1073
+ url?: string | undefined;
1074
+ connectionString?: string | undefined;
1075
+ supabaseUrl?: string | undefined;
1076
+ supabaseAnonKey?: string | undefined;
1077
+ supabaseServiceRoleKey?: string | undefined;
1078
+ poolSize?: number | undefined;
1079
+ connectionTimeout?: number | undefined;
1080
+ ssl?: boolean | {
1081
+ rejectUnauthorized?: boolean | undefined;
1082
+ } | undefined;
1083
+ }>;
1084
+ declare const CacheConfigSchema: z.ZodEffects<z.ZodObject<{
1085
+ provider: z.ZodDefault<z.ZodEnum<["memory", "redis", "upstash"]>>;
1086
+ url: z.ZodOptional<z.ZodString>;
1087
+ upstashUrl: z.ZodOptional<z.ZodString>;
1088
+ upstashToken: z.ZodOptional<z.ZodString>;
1089
+ defaultTTL: z.ZodDefault<z.ZodNumber>;
1090
+ keyPrefix: z.ZodDefault<z.ZodString>;
1091
+ maxRetries: z.ZodDefault<z.ZodNumber>;
1092
+ }, "strip", z.ZodTypeAny, {
1093
+ provider: "memory" | "redis" | "upstash";
1094
+ defaultTTL: number;
1095
+ keyPrefix: string;
1096
+ maxRetries: number;
1097
+ url?: string | undefined;
1098
+ upstashUrl?: string | undefined;
1099
+ upstashToken?: string | undefined;
1100
+ }, {
1101
+ provider?: "memory" | "redis" | "upstash" | undefined;
1102
+ url?: string | undefined;
1103
+ upstashUrl?: string | undefined;
1104
+ upstashToken?: string | undefined;
1105
+ defaultTTL?: number | undefined;
1106
+ keyPrefix?: string | undefined;
1107
+ maxRetries?: number | undefined;
1108
+ }>, {
1109
+ provider: "memory" | "redis" | "upstash";
1110
+ defaultTTL: number;
1111
+ keyPrefix: string;
1112
+ maxRetries: number;
1113
+ url?: string | undefined;
1114
+ upstashUrl?: string | undefined;
1115
+ upstashToken?: string | undefined;
1116
+ }, {
1117
+ provider?: "memory" | "redis" | "upstash" | undefined;
1118
+ url?: string | undefined;
1119
+ upstashUrl?: string | undefined;
1120
+ upstashToken?: string | undefined;
1121
+ defaultTTL?: number | undefined;
1122
+ keyPrefix?: string | undefined;
1123
+ maxRetries?: number | undefined;
1124
+ }>;
1125
+ declare const StorageConfigSchema: z.ZodEffects<z.ZodObject<{
1126
+ provider: z.ZodDefault<z.ZodEnum<["memory", "s3", "minio", "r2", "supabase"]>>;
1127
+ endpoint: z.ZodOptional<z.ZodString>;
1128
+ region: z.ZodDefault<z.ZodString>;
1129
+ accessKey: z.ZodOptional<z.ZodString>;
1130
+ secretKey: z.ZodOptional<z.ZodString>;
1131
+ bucket: z.ZodOptional<z.ZodString>;
1132
+ publicUrl: z.ZodOptional<z.ZodString>;
1133
+ forcePathStyle: z.ZodDefault<z.ZodBoolean>;
1134
+ signedUrlExpiry: z.ZodDefault<z.ZodNumber>;
1135
+ }, "strip", z.ZodTypeAny, {
1136
+ provider: "memory" | "supabase" | "s3" | "minio" | "r2";
1137
+ region: string;
1138
+ forcePathStyle: boolean;
1139
+ signedUrlExpiry: number;
1140
+ endpoint?: string | undefined;
1141
+ accessKey?: string | undefined;
1142
+ secretKey?: string | undefined;
1143
+ bucket?: string | undefined;
1144
+ publicUrl?: string | undefined;
1145
+ }, {
1146
+ provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1147
+ endpoint?: string | undefined;
1148
+ region?: string | undefined;
1149
+ accessKey?: string | undefined;
1150
+ secretKey?: string | undefined;
1151
+ bucket?: string | undefined;
1152
+ publicUrl?: string | undefined;
1153
+ forcePathStyle?: boolean | undefined;
1154
+ signedUrlExpiry?: number | undefined;
1155
+ }>, {
1156
+ provider: "memory" | "supabase" | "s3" | "minio" | "r2";
1157
+ region: string;
1158
+ forcePathStyle: boolean;
1159
+ signedUrlExpiry: number;
1160
+ endpoint?: string | undefined;
1161
+ accessKey?: string | undefined;
1162
+ secretKey?: string | undefined;
1163
+ bucket?: string | undefined;
1164
+ publicUrl?: string | undefined;
1165
+ }, {
1166
+ provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1167
+ endpoint?: string | undefined;
1168
+ region?: string | undefined;
1169
+ accessKey?: string | undefined;
1170
+ secretKey?: string | undefined;
1171
+ bucket?: string | undefined;
1172
+ publicUrl?: string | undefined;
1173
+ forcePathStyle?: boolean | undefined;
1174
+ signedUrlExpiry?: number | undefined;
1175
+ }>;
1176
+ declare const EmailConfigSchema: z.ZodEffects<z.ZodObject<{
1177
+ provider: z.ZodDefault<z.ZodEnum<["memory", "console", "smtp", "resend"]>>;
1178
+ host: z.ZodOptional<z.ZodString>;
1179
+ port: z.ZodOptional<z.ZodNumber>;
1180
+ secure: z.ZodDefault<z.ZodBoolean>;
1181
+ username: z.ZodOptional<z.ZodString>;
1182
+ password: z.ZodOptional<z.ZodString>;
1183
+ apiKey: z.ZodOptional<z.ZodString>;
1184
+ from: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodString]>>;
1185
+ replyTo: z.ZodOptional<z.ZodString>;
1186
+ rateLimitPerSecond: z.ZodDefault<z.ZodNumber>;
1187
+ }, "strip", z.ZodTypeAny, {
1188
+ provider: "console" | "memory" | "smtp" | "resend";
1189
+ secure: boolean;
1190
+ rateLimitPerSecond: number;
1191
+ host?: string | undefined;
1192
+ port?: number | undefined;
1193
+ username?: string | undefined;
1194
+ password?: string | undefined;
1195
+ apiKey?: string | undefined;
1196
+ from?: string | undefined;
1197
+ replyTo?: string | undefined;
1198
+ }, {
1199
+ provider?: "console" | "memory" | "smtp" | "resend" | undefined;
1200
+ host?: string | undefined;
1201
+ port?: number | undefined;
1202
+ secure?: boolean | undefined;
1203
+ username?: string | undefined;
1204
+ password?: string | undefined;
1205
+ apiKey?: string | undefined;
1206
+ from?: string | undefined;
1207
+ replyTo?: string | undefined;
1208
+ rateLimitPerSecond?: number | undefined;
1209
+ }>, {
1210
+ provider: "console" | "memory" | "smtp" | "resend";
1211
+ secure: boolean;
1212
+ rateLimitPerSecond: number;
1213
+ host?: string | undefined;
1214
+ port?: number | undefined;
1215
+ username?: string | undefined;
1216
+ password?: string | undefined;
1217
+ apiKey?: string | undefined;
1218
+ from?: string | undefined;
1219
+ replyTo?: string | undefined;
1220
+ }, {
1221
+ provider?: "console" | "memory" | "smtp" | "resend" | undefined;
1222
+ host?: string | undefined;
1223
+ port?: number | undefined;
1224
+ secure?: boolean | undefined;
1225
+ username?: string | undefined;
1226
+ password?: string | undefined;
1227
+ apiKey?: string | undefined;
1228
+ from?: string | undefined;
1229
+ replyTo?: string | undefined;
1230
+ rateLimitPerSecond?: number | undefined;
1231
+ }>;
1232
+ declare const QueueConfigSchema: z.ZodEffects<z.ZodObject<{
1233
+ provider: z.ZodDefault<z.ZodEnum<["memory", "bullmq"]>>;
1234
+ redisUrl: z.ZodOptional<z.ZodString>;
1235
+ queueName: z.ZodDefault<z.ZodString>;
1236
+ concurrency: z.ZodDefault<z.ZodNumber>;
1237
+ maxRetries: z.ZodDefault<z.ZodNumber>;
1238
+ retryDelay: z.ZodDefault<z.ZodNumber>;
1239
+ removeOnComplete: z.ZodDefault<z.ZodBoolean>;
1240
+ removeOnFail: z.ZodDefault<z.ZodBoolean>;
1241
+ }, "strip", z.ZodTypeAny, {
1242
+ provider: "memory" | "bullmq";
1243
+ maxRetries: number;
1244
+ queueName: string;
1245
+ concurrency: number;
1246
+ retryDelay: number;
1247
+ removeOnComplete: boolean;
1248
+ removeOnFail: boolean;
1249
+ redisUrl?: string | undefined;
1250
+ }, {
1251
+ provider?: "memory" | "bullmq" | undefined;
1252
+ maxRetries?: number | undefined;
1253
+ redisUrl?: string | undefined;
1254
+ queueName?: string | undefined;
1255
+ concurrency?: number | undefined;
1256
+ retryDelay?: number | undefined;
1257
+ removeOnComplete?: boolean | undefined;
1258
+ removeOnFail?: boolean | undefined;
1259
+ }>, {
1260
+ provider: "memory" | "bullmq";
1261
+ maxRetries: number;
1262
+ queueName: string;
1263
+ concurrency: number;
1264
+ retryDelay: number;
1265
+ removeOnComplete: boolean;
1266
+ removeOnFail: boolean;
1267
+ redisUrl?: string | undefined;
1268
+ }, {
1269
+ provider?: "memory" | "bullmq" | undefined;
1270
+ maxRetries?: number | undefined;
1271
+ redisUrl?: string | undefined;
1272
+ queueName?: string | undefined;
1273
+ concurrency?: number | undefined;
1274
+ retryDelay?: number | undefined;
1275
+ removeOnComplete?: boolean | undefined;
1276
+ removeOnFail?: boolean | undefined;
1277
+ }>;
1278
+ declare const RetryConfigSchema: z.ZodObject<{
1279
+ enabled: z.ZodDefault<z.ZodBoolean>;
1280
+ maxAttempts: z.ZodDefault<z.ZodNumber>;
1281
+ baseDelay: z.ZodDefault<z.ZodNumber>;
1282
+ maxDelay: z.ZodDefault<z.ZodNumber>;
1283
+ backoffMultiplier: z.ZodDefault<z.ZodNumber>;
1284
+ jitter: z.ZodDefault<z.ZodBoolean>;
1285
+ }, "strip", z.ZodTypeAny, {
1286
+ enabled: boolean;
1287
+ maxAttempts: number;
1288
+ baseDelay: number;
1289
+ maxDelay: number;
1290
+ backoffMultiplier: number;
1291
+ jitter: boolean;
1292
+ }, {
1293
+ enabled?: boolean | undefined;
1294
+ maxAttempts?: number | undefined;
1295
+ baseDelay?: number | undefined;
1296
+ maxDelay?: number | undefined;
1297
+ backoffMultiplier?: number | undefined;
1298
+ jitter?: boolean | undefined;
1299
+ }>;
1300
+ declare const CircuitBreakerConfigSchema: z.ZodObject<{
1301
+ enabled: z.ZodDefault<z.ZodBoolean>;
1302
+ failureThreshold: z.ZodDefault<z.ZodNumber>;
1303
+ resetTimeout: z.ZodDefault<z.ZodNumber>;
1304
+ halfOpenRequests: z.ZodDefault<z.ZodNumber>;
1305
+ monitorInterval: z.ZodDefault<z.ZodNumber>;
1306
+ }, "strip", z.ZodTypeAny, {
1307
+ enabled: boolean;
1308
+ failureThreshold: number;
1309
+ resetTimeout: number;
1310
+ halfOpenRequests: number;
1311
+ monitorInterval: number;
1312
+ }, {
1313
+ enabled?: boolean | undefined;
1314
+ failureThreshold?: number | undefined;
1315
+ resetTimeout?: number | undefined;
1316
+ halfOpenRequests?: number | undefined;
1317
+ monitorInterval?: number | undefined;
1318
+ }>;
1319
+ declare const TimeoutConfigSchema: z.ZodObject<{
1320
+ enabled: z.ZodDefault<z.ZodBoolean>;
1321
+ default: z.ZodDefault<z.ZodNumber>;
1322
+ database: z.ZodDefault<z.ZodNumber>;
1323
+ cache: z.ZodDefault<z.ZodNumber>;
1324
+ storage: z.ZodDefault<z.ZodNumber>;
1325
+ email: z.ZodDefault<z.ZodNumber>;
1326
+ queue: z.ZodDefault<z.ZodNumber>;
1327
+ }, "strip", z.ZodTypeAny, {
1328
+ enabled: boolean;
1329
+ default: number;
1330
+ database: number;
1331
+ cache: number;
1332
+ storage: number;
1333
+ email: number;
1334
+ queue: number;
1335
+ }, {
1336
+ enabled?: boolean | undefined;
1337
+ default?: number | undefined;
1338
+ database?: number | undefined;
1339
+ cache?: number | undefined;
1340
+ storage?: number | undefined;
1341
+ email?: number | undefined;
1342
+ queue?: number | undefined;
1343
+ }>;
1344
+ declare const BulkheadConfigSchema: z.ZodObject<{
1345
+ enabled: z.ZodDefault<z.ZodBoolean>;
1346
+ maxConcurrent: z.ZodDefault<z.ZodNumber>;
1347
+ maxQueued: z.ZodDefault<z.ZodNumber>;
1348
+ timeout: z.ZodDefault<z.ZodNumber>;
1349
+ }, "strip", z.ZodTypeAny, {
1350
+ enabled: boolean;
1351
+ maxConcurrent: number;
1352
+ maxQueued: number;
1353
+ timeout: number;
1354
+ }, {
1355
+ enabled?: boolean | undefined;
1356
+ maxConcurrent?: number | undefined;
1357
+ maxQueued?: number | undefined;
1358
+ timeout?: number | undefined;
1359
+ }>;
1360
+ declare const ResilienceConfigSchema: z.ZodObject<{
1361
+ retry: z.ZodDefault<z.ZodObject<{
1362
+ enabled: z.ZodDefault<z.ZodBoolean>;
1363
+ maxAttempts: z.ZodDefault<z.ZodNumber>;
1364
+ baseDelay: z.ZodDefault<z.ZodNumber>;
1365
+ maxDelay: z.ZodDefault<z.ZodNumber>;
1366
+ backoffMultiplier: z.ZodDefault<z.ZodNumber>;
1367
+ jitter: z.ZodDefault<z.ZodBoolean>;
1368
+ }, "strip", z.ZodTypeAny, {
1369
+ enabled: boolean;
1370
+ maxAttempts: number;
1371
+ baseDelay: number;
1372
+ maxDelay: number;
1373
+ backoffMultiplier: number;
1374
+ jitter: boolean;
1375
+ }, {
1376
+ enabled?: boolean | undefined;
1377
+ maxAttempts?: number | undefined;
1378
+ baseDelay?: number | undefined;
1379
+ maxDelay?: number | undefined;
1380
+ backoffMultiplier?: number | undefined;
1381
+ jitter?: boolean | undefined;
1382
+ }>>;
1383
+ circuitBreaker: z.ZodDefault<z.ZodObject<{
1384
+ enabled: z.ZodDefault<z.ZodBoolean>;
1385
+ failureThreshold: z.ZodDefault<z.ZodNumber>;
1386
+ resetTimeout: z.ZodDefault<z.ZodNumber>;
1387
+ halfOpenRequests: z.ZodDefault<z.ZodNumber>;
1388
+ monitorInterval: z.ZodDefault<z.ZodNumber>;
1389
+ }, "strip", z.ZodTypeAny, {
1390
+ enabled: boolean;
1391
+ failureThreshold: number;
1392
+ resetTimeout: number;
1393
+ halfOpenRequests: number;
1394
+ monitorInterval: number;
1395
+ }, {
1396
+ enabled?: boolean | undefined;
1397
+ failureThreshold?: number | undefined;
1398
+ resetTimeout?: number | undefined;
1399
+ halfOpenRequests?: number | undefined;
1400
+ monitorInterval?: number | undefined;
1401
+ }>>;
1402
+ timeout: z.ZodDefault<z.ZodObject<{
1403
+ enabled: z.ZodDefault<z.ZodBoolean>;
1404
+ default: z.ZodDefault<z.ZodNumber>;
1405
+ database: z.ZodDefault<z.ZodNumber>;
1406
+ cache: z.ZodDefault<z.ZodNumber>;
1407
+ storage: z.ZodDefault<z.ZodNumber>;
1408
+ email: z.ZodDefault<z.ZodNumber>;
1409
+ queue: z.ZodDefault<z.ZodNumber>;
1410
+ }, "strip", z.ZodTypeAny, {
1411
+ enabled: boolean;
1412
+ default: number;
1413
+ database: number;
1414
+ cache: number;
1415
+ storage: number;
1416
+ email: number;
1417
+ queue: number;
1418
+ }, {
1419
+ enabled?: boolean | undefined;
1420
+ default?: number | undefined;
1421
+ database?: number | undefined;
1422
+ cache?: number | undefined;
1423
+ storage?: number | undefined;
1424
+ email?: number | undefined;
1425
+ queue?: number | undefined;
1426
+ }>>;
1427
+ bulkhead: z.ZodDefault<z.ZodObject<{
1428
+ enabled: z.ZodDefault<z.ZodBoolean>;
1429
+ maxConcurrent: z.ZodDefault<z.ZodNumber>;
1430
+ maxQueued: z.ZodDefault<z.ZodNumber>;
1431
+ timeout: z.ZodDefault<z.ZodNumber>;
1432
+ }, "strip", z.ZodTypeAny, {
1433
+ enabled: boolean;
1434
+ maxConcurrent: number;
1435
+ maxQueued: number;
1436
+ timeout: number;
1437
+ }, {
1438
+ enabled?: boolean | undefined;
1439
+ maxConcurrent?: number | undefined;
1440
+ maxQueued?: number | undefined;
1441
+ timeout?: number | undefined;
1442
+ }>>;
1443
+ }, "strip", z.ZodTypeAny, {
1444
+ timeout: {
1445
+ enabled: boolean;
1446
+ default: number;
1447
+ database: number;
1448
+ cache: number;
1449
+ storage: number;
1450
+ email: number;
1451
+ queue: number;
1452
+ };
1453
+ retry: {
1454
+ enabled: boolean;
1455
+ maxAttempts: number;
1456
+ baseDelay: number;
1457
+ maxDelay: number;
1458
+ backoffMultiplier: number;
1459
+ jitter: boolean;
1460
+ };
1461
+ circuitBreaker: {
1462
+ enabled: boolean;
1463
+ failureThreshold: number;
1464
+ resetTimeout: number;
1465
+ halfOpenRequests: number;
1466
+ monitorInterval: number;
1467
+ };
1468
+ bulkhead: {
1469
+ enabled: boolean;
1470
+ maxConcurrent: number;
1471
+ maxQueued: number;
1472
+ timeout: number;
1473
+ };
1474
+ }, {
1475
+ timeout?: {
1476
+ enabled?: boolean | undefined;
1477
+ default?: number | undefined;
1478
+ database?: number | undefined;
1479
+ cache?: number | undefined;
1480
+ storage?: number | undefined;
1481
+ email?: number | undefined;
1482
+ queue?: number | undefined;
1483
+ } | undefined;
1484
+ retry?: {
1485
+ enabled?: boolean | undefined;
1486
+ maxAttempts?: number | undefined;
1487
+ baseDelay?: number | undefined;
1488
+ maxDelay?: number | undefined;
1489
+ backoffMultiplier?: number | undefined;
1490
+ jitter?: boolean | undefined;
1491
+ } | undefined;
1492
+ circuitBreaker?: {
1493
+ enabled?: boolean | undefined;
1494
+ failureThreshold?: number | undefined;
1495
+ resetTimeout?: number | undefined;
1496
+ halfOpenRequests?: number | undefined;
1497
+ monitorInterval?: number | undefined;
1498
+ } | undefined;
1499
+ bulkhead?: {
1500
+ enabled?: boolean | undefined;
1501
+ maxConcurrent?: number | undefined;
1502
+ maxQueued?: number | undefined;
1503
+ timeout?: number | undefined;
1504
+ } | undefined;
1505
+ }>;
1506
+ declare const LoggingConfigSchema: z.ZodObject<{
1507
+ level: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
1508
+ format: z.ZodDefault<z.ZodEnum<["json", "pretty"]>>;
1509
+ includeTimestamp: z.ZodDefault<z.ZodBoolean>;
1510
+ includeCorrelationId: z.ZodDefault<z.ZodBoolean>;
1511
+ redactKeys: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1512
+ }, "strip", z.ZodTypeAny, {
1513
+ level: "debug" | "info" | "warn" | "error";
1514
+ format: "json" | "pretty";
1515
+ includeTimestamp: boolean;
1516
+ includeCorrelationId: boolean;
1517
+ redactKeys: string[];
1518
+ }, {
1519
+ level?: "debug" | "info" | "warn" | "error" | undefined;
1520
+ format?: "json" | "pretty" | undefined;
1521
+ includeTimestamp?: boolean | undefined;
1522
+ includeCorrelationId?: boolean | undefined;
1523
+ redactKeys?: string[] | undefined;
1524
+ }>;
1525
+ declare const MetricsConfigSchema: z.ZodObject<{
1526
+ enabled: z.ZodDefault<z.ZodBoolean>;
1527
+ prefix: z.ZodDefault<z.ZodString>;
1528
+ defaultTags: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
1529
+ flushInterval: z.ZodDefault<z.ZodNumber>;
1530
+ histogramBuckets: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
1531
+ }, "strip", z.ZodTypeAny, {
1532
+ enabled: boolean;
1533
+ prefix: string;
1534
+ defaultTags: Record<string, string>;
1535
+ flushInterval: number;
1536
+ histogramBuckets: number[];
1537
+ }, {
1538
+ enabled?: boolean | undefined;
1539
+ prefix?: string | undefined;
1540
+ defaultTags?: Record<string, string> | undefined;
1541
+ flushInterval?: number | undefined;
1542
+ histogramBuckets?: number[] | undefined;
1543
+ }>;
1544
+ declare const TracingConfigSchema: z.ZodObject<{
1545
+ enabled: z.ZodDefault<z.ZodBoolean>;
1546
+ provider: z.ZodDefault<z.ZodEnum<["noop", "memory", "otlp"]>>;
1547
+ serviceName: z.ZodOptional<z.ZodString>;
1548
+ serviceVersion: z.ZodOptional<z.ZodString>;
1549
+ environment: z.ZodOptional<z.ZodString>;
1550
+ sampleRate: z.ZodDefault<z.ZodNumber>;
1551
+ propagateContext: z.ZodDefault<z.ZodBoolean>;
1552
+ endpoint: z.ZodOptional<z.ZodString>;
1553
+ exporterType: z.ZodDefault<z.ZodEnum<["otlp-http", "otlp-grpc", "console"]>>;
1554
+ }, "strip", z.ZodTypeAny, {
1555
+ provider: "otlp" | "memory" | "noop";
1556
+ enabled: boolean;
1557
+ sampleRate: number;
1558
+ propagateContext: boolean;
1559
+ exporterType: "console" | "otlp-http" | "otlp-grpc";
1560
+ environment?: string | undefined;
1561
+ endpoint?: string | undefined;
1562
+ serviceName?: string | undefined;
1563
+ serviceVersion?: string | undefined;
1564
+ }, {
1565
+ environment?: string | undefined;
1566
+ provider?: "otlp" | "memory" | "noop" | undefined;
1567
+ endpoint?: string | undefined;
1568
+ enabled?: boolean | undefined;
1569
+ serviceName?: string | undefined;
1570
+ serviceVersion?: string | undefined;
1571
+ sampleRate?: number | undefined;
1572
+ propagateContext?: boolean | undefined;
1573
+ exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
1574
+ }>;
1575
+ declare const ObservabilityConfigSchema: z.ZodObject<{
1576
+ logging: z.ZodDefault<z.ZodObject<{
1577
+ level: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
1578
+ format: z.ZodDefault<z.ZodEnum<["json", "pretty"]>>;
1579
+ includeTimestamp: z.ZodDefault<z.ZodBoolean>;
1580
+ includeCorrelationId: z.ZodDefault<z.ZodBoolean>;
1581
+ redactKeys: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1582
+ }, "strip", z.ZodTypeAny, {
1583
+ level: "debug" | "info" | "warn" | "error";
1584
+ format: "json" | "pretty";
1585
+ includeTimestamp: boolean;
1586
+ includeCorrelationId: boolean;
1587
+ redactKeys: string[];
1588
+ }, {
1589
+ level?: "debug" | "info" | "warn" | "error" | undefined;
1590
+ format?: "json" | "pretty" | undefined;
1591
+ includeTimestamp?: boolean | undefined;
1592
+ includeCorrelationId?: boolean | undefined;
1593
+ redactKeys?: string[] | undefined;
1594
+ }>>;
1595
+ metrics: z.ZodDefault<z.ZodObject<{
1596
+ enabled: z.ZodDefault<z.ZodBoolean>;
1597
+ prefix: z.ZodDefault<z.ZodString>;
1598
+ defaultTags: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
1599
+ flushInterval: z.ZodDefault<z.ZodNumber>;
1600
+ histogramBuckets: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
1601
+ }, "strip", z.ZodTypeAny, {
1602
+ enabled: boolean;
1603
+ prefix: string;
1604
+ defaultTags: Record<string, string>;
1605
+ flushInterval: number;
1606
+ histogramBuckets: number[];
1607
+ }, {
1608
+ enabled?: boolean | undefined;
1609
+ prefix?: string | undefined;
1610
+ defaultTags?: Record<string, string> | undefined;
1611
+ flushInterval?: number | undefined;
1612
+ histogramBuckets?: number[] | undefined;
1613
+ }>>;
1614
+ tracing: z.ZodDefault<z.ZodObject<{
1615
+ enabled: z.ZodDefault<z.ZodBoolean>;
1616
+ provider: z.ZodDefault<z.ZodEnum<["noop", "memory", "otlp"]>>;
1617
+ serviceName: z.ZodOptional<z.ZodString>;
1618
+ serviceVersion: z.ZodOptional<z.ZodString>;
1619
+ environment: z.ZodOptional<z.ZodString>;
1620
+ sampleRate: z.ZodDefault<z.ZodNumber>;
1621
+ propagateContext: z.ZodDefault<z.ZodBoolean>;
1622
+ endpoint: z.ZodOptional<z.ZodString>;
1623
+ exporterType: z.ZodDefault<z.ZodEnum<["otlp-http", "otlp-grpc", "console"]>>;
1624
+ }, "strip", z.ZodTypeAny, {
1625
+ provider: "otlp" | "memory" | "noop";
1626
+ enabled: boolean;
1627
+ sampleRate: number;
1628
+ propagateContext: boolean;
1629
+ exporterType: "console" | "otlp-http" | "otlp-grpc";
1630
+ environment?: string | undefined;
1631
+ endpoint?: string | undefined;
1632
+ serviceName?: string | undefined;
1633
+ serviceVersion?: string | undefined;
1634
+ }, {
1635
+ environment?: string | undefined;
1636
+ provider?: "otlp" | "memory" | "noop" | undefined;
1637
+ endpoint?: string | undefined;
1638
+ enabled?: boolean | undefined;
1639
+ serviceName?: string | undefined;
1640
+ serviceVersion?: string | undefined;
1641
+ sampleRate?: number | undefined;
1642
+ propagateContext?: boolean | undefined;
1643
+ exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
1644
+ }>>;
1645
+ }, "strip", z.ZodTypeAny, {
1646
+ logging: {
1647
+ level: "debug" | "info" | "warn" | "error";
1648
+ format: "json" | "pretty";
1649
+ includeTimestamp: boolean;
1650
+ includeCorrelationId: boolean;
1651
+ redactKeys: string[];
1652
+ };
1653
+ metrics: {
1654
+ enabled: boolean;
1655
+ prefix: string;
1656
+ defaultTags: Record<string, string>;
1657
+ flushInterval: number;
1658
+ histogramBuckets: number[];
1659
+ };
1660
+ tracing: {
1661
+ provider: "otlp" | "memory" | "noop";
1662
+ enabled: boolean;
1663
+ sampleRate: number;
1664
+ propagateContext: boolean;
1665
+ exporterType: "console" | "otlp-http" | "otlp-grpc";
1666
+ environment?: string | undefined;
1667
+ endpoint?: string | undefined;
1668
+ serviceName?: string | undefined;
1669
+ serviceVersion?: string | undefined;
1670
+ };
1671
+ }, {
1672
+ logging?: {
1673
+ level?: "debug" | "info" | "warn" | "error" | undefined;
1674
+ format?: "json" | "pretty" | undefined;
1675
+ includeTimestamp?: boolean | undefined;
1676
+ includeCorrelationId?: boolean | undefined;
1677
+ redactKeys?: string[] | undefined;
1678
+ } | undefined;
1679
+ metrics?: {
1680
+ enabled?: boolean | undefined;
1681
+ prefix?: string | undefined;
1682
+ defaultTags?: Record<string, string> | undefined;
1683
+ flushInterval?: number | undefined;
1684
+ histogramBuckets?: number[] | undefined;
1685
+ } | undefined;
1686
+ tracing?: {
1687
+ environment?: string | undefined;
1688
+ provider?: "otlp" | "memory" | "noop" | undefined;
1689
+ endpoint?: string | undefined;
1690
+ enabled?: boolean | undefined;
1691
+ serviceName?: string | undefined;
1692
+ serviceVersion?: string | undefined;
1693
+ sampleRate?: number | undefined;
1694
+ propagateContext?: boolean | undefined;
1695
+ exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
1696
+ } | undefined;
1697
+ }>;
1698
+ declare const MiddlewareConfigSchema: z.ZodObject<{
1699
+ enabled: z.ZodDefault<z.ZodBoolean>;
1700
+ logging: z.ZodDefault<z.ZodBoolean>;
1701
+ metrics: z.ZodDefault<z.ZodBoolean>;
1702
+ slowQuery: z.ZodDefault<z.ZodObject<{
1703
+ enabled: z.ZodDefault<z.ZodBoolean>;
1704
+ thresholdMs: z.ZodDefault<z.ZodNumber>;
1705
+ }, "strip", z.ZodTypeAny, {
1706
+ enabled: boolean;
1707
+ thresholdMs: number;
1708
+ }, {
1709
+ enabled?: boolean | undefined;
1710
+ thresholdMs?: number | undefined;
1711
+ }>>;
1712
+ cache: z.ZodDefault<z.ZodObject<{
1713
+ enabled: z.ZodDefault<z.ZodBoolean>;
1714
+ defaultTTL: z.ZodDefault<z.ZodNumber>;
1715
+ }, "strip", z.ZodTypeAny, {
1716
+ defaultTTL: number;
1717
+ enabled: boolean;
1718
+ }, {
1719
+ defaultTTL?: number | undefined;
1720
+ enabled?: boolean | undefined;
1721
+ }>>;
1722
+ }, "strip", z.ZodTypeAny, {
1723
+ enabled: boolean;
1724
+ cache: {
1725
+ defaultTTL: number;
1726
+ enabled: boolean;
1727
+ };
1728
+ logging: boolean;
1729
+ metrics: boolean;
1730
+ slowQuery: {
1731
+ enabled: boolean;
1732
+ thresholdMs: number;
1733
+ };
1734
+ }, {
1735
+ enabled?: boolean | undefined;
1736
+ cache?: {
1737
+ defaultTTL?: number | undefined;
1738
+ enabled?: boolean | undefined;
1739
+ } | undefined;
1740
+ logging?: boolean | undefined;
1741
+ metrics?: boolean | undefined;
1742
+ slowQuery?: {
1743
+ enabled?: boolean | undefined;
1744
+ thresholdMs?: number | undefined;
1745
+ } | undefined;
1746
+ }>;
1747
+ declare const PlatformConfigSchema: z.ZodObject<{
1748
+ database: z.ZodDefault<z.ZodEffects<z.ZodObject<{
1749
+ provider: z.ZodDefault<z.ZodEnum<["memory", "postgres", "supabase"]>>;
1750
+ url: z.ZodOptional<z.ZodString>;
1751
+ connectionString: z.ZodOptional<z.ZodString>;
1752
+ supabaseUrl: z.ZodOptional<z.ZodString>;
1753
+ supabaseAnonKey: z.ZodOptional<z.ZodString>;
1754
+ supabaseServiceRoleKey: z.ZodOptional<z.ZodString>;
1755
+ poolSize: z.ZodDefault<z.ZodNumber>;
1756
+ connectionTimeout: z.ZodDefault<z.ZodNumber>;
1757
+ ssl: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
1758
+ rejectUnauthorized: z.ZodOptional<z.ZodBoolean>;
1759
+ }, "strip", z.ZodTypeAny, {
1760
+ rejectUnauthorized?: boolean | undefined;
1761
+ }, {
1762
+ rejectUnauthorized?: boolean | undefined;
1763
+ }>]>>;
1764
+ }, "strip", z.ZodTypeAny, {
1765
+ provider: "memory" | "postgres" | "supabase";
1766
+ poolSize: number;
1767
+ connectionTimeout: number;
1768
+ url?: string | undefined;
1769
+ connectionString?: string | undefined;
1770
+ supabaseUrl?: string | undefined;
1771
+ supabaseAnonKey?: string | undefined;
1772
+ supabaseServiceRoleKey?: string | undefined;
1773
+ ssl?: boolean | {
1774
+ rejectUnauthorized?: boolean | undefined;
1775
+ } | undefined;
1776
+ }, {
1777
+ provider?: "memory" | "postgres" | "supabase" | undefined;
1778
+ url?: string | undefined;
1779
+ connectionString?: string | undefined;
1780
+ supabaseUrl?: string | undefined;
1781
+ supabaseAnonKey?: string | undefined;
1782
+ supabaseServiceRoleKey?: string | undefined;
1783
+ poolSize?: number | undefined;
1784
+ connectionTimeout?: number | undefined;
1785
+ ssl?: boolean | {
1786
+ rejectUnauthorized?: boolean | undefined;
1787
+ } | undefined;
1788
+ }>, {
1789
+ provider: "memory" | "postgres" | "supabase";
1790
+ poolSize: number;
1791
+ connectionTimeout: number;
1792
+ url?: string | undefined;
1793
+ connectionString?: string | undefined;
1794
+ supabaseUrl?: string | undefined;
1795
+ supabaseAnonKey?: string | undefined;
1796
+ supabaseServiceRoleKey?: string | undefined;
1797
+ ssl?: boolean | {
1798
+ rejectUnauthorized?: boolean | undefined;
1799
+ } | undefined;
1800
+ }, {
1801
+ provider?: "memory" | "postgres" | "supabase" | undefined;
1802
+ url?: string | undefined;
1803
+ connectionString?: string | undefined;
1804
+ supabaseUrl?: string | undefined;
1805
+ supabaseAnonKey?: string | undefined;
1806
+ supabaseServiceRoleKey?: string | undefined;
1807
+ poolSize?: number | undefined;
1808
+ connectionTimeout?: number | undefined;
1809
+ ssl?: boolean | {
1810
+ rejectUnauthorized?: boolean | undefined;
1811
+ } | undefined;
1812
+ }>>;
1813
+ cache: z.ZodDefault<z.ZodEffects<z.ZodObject<{
1814
+ provider: z.ZodDefault<z.ZodEnum<["memory", "redis", "upstash"]>>;
1815
+ url: z.ZodOptional<z.ZodString>;
1816
+ upstashUrl: z.ZodOptional<z.ZodString>;
1817
+ upstashToken: z.ZodOptional<z.ZodString>;
1818
+ defaultTTL: z.ZodDefault<z.ZodNumber>;
1819
+ keyPrefix: z.ZodDefault<z.ZodString>;
1820
+ maxRetries: z.ZodDefault<z.ZodNumber>;
1821
+ }, "strip", z.ZodTypeAny, {
1822
+ provider: "memory" | "redis" | "upstash";
1823
+ defaultTTL: number;
1824
+ keyPrefix: string;
1825
+ maxRetries: number;
1826
+ url?: string | undefined;
1827
+ upstashUrl?: string | undefined;
1828
+ upstashToken?: string | undefined;
1829
+ }, {
1830
+ provider?: "memory" | "redis" | "upstash" | undefined;
1831
+ url?: string | undefined;
1832
+ upstashUrl?: string | undefined;
1833
+ upstashToken?: string | undefined;
1834
+ defaultTTL?: number | undefined;
1835
+ keyPrefix?: string | undefined;
1836
+ maxRetries?: number | undefined;
1837
+ }>, {
1838
+ provider: "memory" | "redis" | "upstash";
1839
+ defaultTTL: number;
1840
+ keyPrefix: string;
1841
+ maxRetries: number;
1842
+ url?: string | undefined;
1843
+ upstashUrl?: string | undefined;
1844
+ upstashToken?: string | undefined;
1845
+ }, {
1846
+ provider?: "memory" | "redis" | "upstash" | undefined;
1847
+ url?: string | undefined;
1848
+ upstashUrl?: string | undefined;
1849
+ upstashToken?: string | undefined;
1850
+ defaultTTL?: number | undefined;
1851
+ keyPrefix?: string | undefined;
1852
+ maxRetries?: number | undefined;
1853
+ }>>;
1854
+ storage: z.ZodDefault<z.ZodEffects<z.ZodObject<{
1855
+ provider: z.ZodDefault<z.ZodEnum<["memory", "s3", "minio", "r2", "supabase"]>>;
1856
+ endpoint: z.ZodOptional<z.ZodString>;
1857
+ region: z.ZodDefault<z.ZodString>;
1858
+ accessKey: z.ZodOptional<z.ZodString>;
1859
+ secretKey: z.ZodOptional<z.ZodString>;
1860
+ bucket: z.ZodOptional<z.ZodString>;
1861
+ publicUrl: z.ZodOptional<z.ZodString>;
1862
+ forcePathStyle: z.ZodDefault<z.ZodBoolean>;
1863
+ signedUrlExpiry: z.ZodDefault<z.ZodNumber>;
1864
+ }, "strip", z.ZodTypeAny, {
1865
+ provider: "memory" | "supabase" | "s3" | "minio" | "r2";
1866
+ region: string;
1867
+ forcePathStyle: boolean;
1868
+ signedUrlExpiry: number;
1869
+ endpoint?: string | undefined;
1870
+ accessKey?: string | undefined;
1871
+ secretKey?: string | undefined;
1872
+ bucket?: string | undefined;
1873
+ publicUrl?: string | undefined;
1874
+ }, {
1875
+ provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1876
+ endpoint?: string | undefined;
1877
+ region?: string | undefined;
1878
+ accessKey?: string | undefined;
1879
+ secretKey?: string | undefined;
1880
+ bucket?: string | undefined;
1881
+ publicUrl?: string | undefined;
1882
+ forcePathStyle?: boolean | undefined;
1883
+ signedUrlExpiry?: number | undefined;
1884
+ }>, {
1885
+ provider: "memory" | "supabase" | "s3" | "minio" | "r2";
1886
+ region: string;
1887
+ forcePathStyle: boolean;
1888
+ signedUrlExpiry: number;
1889
+ endpoint?: string | undefined;
1890
+ accessKey?: string | undefined;
1891
+ secretKey?: string | undefined;
1892
+ bucket?: string | undefined;
1893
+ publicUrl?: string | undefined;
1894
+ }, {
1895
+ provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1896
+ endpoint?: string | undefined;
1897
+ region?: string | undefined;
1898
+ accessKey?: string | undefined;
1899
+ secretKey?: string | undefined;
1900
+ bucket?: string | undefined;
1901
+ publicUrl?: string | undefined;
1902
+ forcePathStyle?: boolean | undefined;
1903
+ signedUrlExpiry?: number | undefined;
1904
+ }>>;
1905
+ email: z.ZodDefault<z.ZodEffects<z.ZodObject<{
1906
+ provider: z.ZodDefault<z.ZodEnum<["memory", "console", "smtp", "resend"]>>;
1907
+ host: z.ZodOptional<z.ZodString>;
1908
+ port: z.ZodOptional<z.ZodNumber>;
1909
+ secure: z.ZodDefault<z.ZodBoolean>;
1910
+ username: z.ZodOptional<z.ZodString>;
1911
+ password: z.ZodOptional<z.ZodString>;
1912
+ apiKey: z.ZodOptional<z.ZodString>;
1913
+ from: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodString]>>;
1914
+ replyTo: z.ZodOptional<z.ZodString>;
1915
+ rateLimitPerSecond: z.ZodDefault<z.ZodNumber>;
1916
+ }, "strip", z.ZodTypeAny, {
1917
+ provider: "console" | "memory" | "smtp" | "resend";
1918
+ secure: boolean;
1919
+ rateLimitPerSecond: number;
1920
+ host?: string | undefined;
1921
+ port?: number | undefined;
1922
+ username?: string | undefined;
1923
+ password?: string | undefined;
1924
+ apiKey?: string | undefined;
1925
+ from?: string | undefined;
1926
+ replyTo?: string | undefined;
1927
+ }, {
1928
+ provider?: "console" | "memory" | "smtp" | "resend" | undefined;
1929
+ host?: string | undefined;
1930
+ port?: number | undefined;
1931
+ secure?: boolean | undefined;
1932
+ username?: string | undefined;
1933
+ password?: string | undefined;
1934
+ apiKey?: string | undefined;
1935
+ from?: string | undefined;
1936
+ replyTo?: string | undefined;
1937
+ rateLimitPerSecond?: number | undefined;
1938
+ }>, {
1939
+ provider: "console" | "memory" | "smtp" | "resend";
1940
+ secure: boolean;
1941
+ rateLimitPerSecond: number;
1942
+ host?: string | undefined;
1943
+ port?: number | undefined;
1944
+ username?: string | undefined;
1945
+ password?: string | undefined;
1946
+ apiKey?: string | undefined;
1947
+ from?: string | undefined;
1948
+ replyTo?: string | undefined;
1949
+ }, {
1950
+ provider?: "console" | "memory" | "smtp" | "resend" | undefined;
1951
+ host?: string | undefined;
1952
+ port?: number | undefined;
1953
+ secure?: boolean | undefined;
1954
+ username?: string | undefined;
1955
+ password?: string | undefined;
1956
+ apiKey?: string | undefined;
1957
+ from?: string | undefined;
1958
+ replyTo?: string | undefined;
1959
+ rateLimitPerSecond?: number | undefined;
1960
+ }>>;
1961
+ queue: z.ZodDefault<z.ZodEffects<z.ZodObject<{
1962
+ provider: z.ZodDefault<z.ZodEnum<["memory", "bullmq"]>>;
1963
+ redisUrl: z.ZodOptional<z.ZodString>;
1964
+ queueName: z.ZodDefault<z.ZodString>;
1965
+ concurrency: z.ZodDefault<z.ZodNumber>;
1966
+ maxRetries: z.ZodDefault<z.ZodNumber>;
1967
+ retryDelay: z.ZodDefault<z.ZodNumber>;
1968
+ removeOnComplete: z.ZodDefault<z.ZodBoolean>;
1969
+ removeOnFail: z.ZodDefault<z.ZodBoolean>;
1970
+ }, "strip", z.ZodTypeAny, {
1971
+ provider: "memory" | "bullmq";
1972
+ maxRetries: number;
1973
+ queueName: string;
1974
+ concurrency: number;
1975
+ retryDelay: number;
1976
+ removeOnComplete: boolean;
1977
+ removeOnFail: boolean;
1978
+ redisUrl?: string | undefined;
1979
+ }, {
1980
+ provider?: "memory" | "bullmq" | undefined;
1981
+ maxRetries?: number | undefined;
1982
+ redisUrl?: string | undefined;
1983
+ queueName?: string | undefined;
1984
+ concurrency?: number | undefined;
1985
+ retryDelay?: number | undefined;
1986
+ removeOnComplete?: boolean | undefined;
1987
+ removeOnFail?: boolean | undefined;
1988
+ }>, {
1989
+ provider: "memory" | "bullmq";
1990
+ maxRetries: number;
1991
+ queueName: string;
1992
+ concurrency: number;
1993
+ retryDelay: number;
1994
+ removeOnComplete: boolean;
1995
+ removeOnFail: boolean;
1996
+ redisUrl?: string | undefined;
1997
+ }, {
1998
+ provider?: "memory" | "bullmq" | undefined;
1999
+ maxRetries?: number | undefined;
2000
+ redisUrl?: string | undefined;
2001
+ queueName?: string | undefined;
2002
+ concurrency?: number | undefined;
2003
+ retryDelay?: number | undefined;
2004
+ removeOnComplete?: boolean | undefined;
2005
+ removeOnFail?: boolean | undefined;
2006
+ }>>;
2007
+ resilience: z.ZodDefault<z.ZodObject<{
2008
+ retry: z.ZodDefault<z.ZodObject<{
2009
+ enabled: z.ZodDefault<z.ZodBoolean>;
2010
+ maxAttempts: z.ZodDefault<z.ZodNumber>;
2011
+ baseDelay: z.ZodDefault<z.ZodNumber>;
2012
+ maxDelay: z.ZodDefault<z.ZodNumber>;
2013
+ backoffMultiplier: z.ZodDefault<z.ZodNumber>;
2014
+ jitter: z.ZodDefault<z.ZodBoolean>;
2015
+ }, "strip", z.ZodTypeAny, {
2016
+ enabled: boolean;
2017
+ maxAttempts: number;
2018
+ baseDelay: number;
2019
+ maxDelay: number;
2020
+ backoffMultiplier: number;
2021
+ jitter: boolean;
2022
+ }, {
2023
+ enabled?: boolean | undefined;
2024
+ maxAttempts?: number | undefined;
2025
+ baseDelay?: number | undefined;
2026
+ maxDelay?: number | undefined;
2027
+ backoffMultiplier?: number | undefined;
2028
+ jitter?: boolean | undefined;
2029
+ }>>;
2030
+ circuitBreaker: z.ZodDefault<z.ZodObject<{
2031
+ enabled: z.ZodDefault<z.ZodBoolean>;
2032
+ failureThreshold: z.ZodDefault<z.ZodNumber>;
2033
+ resetTimeout: z.ZodDefault<z.ZodNumber>;
2034
+ halfOpenRequests: z.ZodDefault<z.ZodNumber>;
2035
+ monitorInterval: z.ZodDefault<z.ZodNumber>;
2036
+ }, "strip", z.ZodTypeAny, {
2037
+ enabled: boolean;
2038
+ failureThreshold: number;
2039
+ resetTimeout: number;
2040
+ halfOpenRequests: number;
2041
+ monitorInterval: number;
2042
+ }, {
2043
+ enabled?: boolean | undefined;
2044
+ failureThreshold?: number | undefined;
2045
+ resetTimeout?: number | undefined;
2046
+ halfOpenRequests?: number | undefined;
2047
+ monitorInterval?: number | undefined;
2048
+ }>>;
2049
+ timeout: z.ZodDefault<z.ZodObject<{
2050
+ enabled: z.ZodDefault<z.ZodBoolean>;
2051
+ default: z.ZodDefault<z.ZodNumber>;
2052
+ database: z.ZodDefault<z.ZodNumber>;
2053
+ cache: z.ZodDefault<z.ZodNumber>;
2054
+ storage: z.ZodDefault<z.ZodNumber>;
2055
+ email: z.ZodDefault<z.ZodNumber>;
2056
+ queue: z.ZodDefault<z.ZodNumber>;
2057
+ }, "strip", z.ZodTypeAny, {
2058
+ enabled: boolean;
2059
+ default: number;
2060
+ database: number;
2061
+ cache: number;
2062
+ storage: number;
2063
+ email: number;
2064
+ queue: number;
2065
+ }, {
2066
+ enabled?: boolean | undefined;
2067
+ default?: number | undefined;
2068
+ database?: number | undefined;
2069
+ cache?: number | undefined;
2070
+ storage?: number | undefined;
2071
+ email?: number | undefined;
2072
+ queue?: number | undefined;
2073
+ }>>;
2074
+ bulkhead: z.ZodDefault<z.ZodObject<{
2075
+ enabled: z.ZodDefault<z.ZodBoolean>;
2076
+ maxConcurrent: z.ZodDefault<z.ZodNumber>;
2077
+ maxQueued: z.ZodDefault<z.ZodNumber>;
2078
+ timeout: z.ZodDefault<z.ZodNumber>;
2079
+ }, "strip", z.ZodTypeAny, {
2080
+ enabled: boolean;
2081
+ maxConcurrent: number;
2082
+ maxQueued: number;
2083
+ timeout: number;
2084
+ }, {
2085
+ enabled?: boolean | undefined;
2086
+ maxConcurrent?: number | undefined;
2087
+ maxQueued?: number | undefined;
2088
+ timeout?: number | undefined;
2089
+ }>>;
2090
+ }, "strip", z.ZodTypeAny, {
2091
+ timeout: {
2092
+ enabled: boolean;
2093
+ default: number;
2094
+ database: number;
2095
+ cache: number;
2096
+ storage: number;
2097
+ email: number;
2098
+ queue: number;
2099
+ };
2100
+ retry: {
2101
+ enabled: boolean;
2102
+ maxAttempts: number;
2103
+ baseDelay: number;
2104
+ maxDelay: number;
2105
+ backoffMultiplier: number;
2106
+ jitter: boolean;
2107
+ };
2108
+ circuitBreaker: {
2109
+ enabled: boolean;
2110
+ failureThreshold: number;
2111
+ resetTimeout: number;
2112
+ halfOpenRequests: number;
2113
+ monitorInterval: number;
2114
+ };
2115
+ bulkhead: {
2116
+ enabled: boolean;
2117
+ maxConcurrent: number;
2118
+ maxQueued: number;
2119
+ timeout: number;
2120
+ };
2121
+ }, {
2122
+ timeout?: {
2123
+ enabled?: boolean | undefined;
2124
+ default?: number | undefined;
2125
+ database?: number | undefined;
2126
+ cache?: number | undefined;
2127
+ storage?: number | undefined;
2128
+ email?: number | undefined;
2129
+ queue?: number | undefined;
2130
+ } | undefined;
2131
+ retry?: {
2132
+ enabled?: boolean | undefined;
2133
+ maxAttempts?: number | undefined;
2134
+ baseDelay?: number | undefined;
2135
+ maxDelay?: number | undefined;
2136
+ backoffMultiplier?: number | undefined;
2137
+ jitter?: boolean | undefined;
2138
+ } | undefined;
2139
+ circuitBreaker?: {
2140
+ enabled?: boolean | undefined;
2141
+ failureThreshold?: number | undefined;
2142
+ resetTimeout?: number | undefined;
2143
+ halfOpenRequests?: number | undefined;
2144
+ monitorInterval?: number | undefined;
2145
+ } | undefined;
2146
+ bulkhead?: {
2147
+ enabled?: boolean | undefined;
2148
+ maxConcurrent?: number | undefined;
2149
+ maxQueued?: number | undefined;
2150
+ timeout?: number | undefined;
2151
+ } | undefined;
2152
+ }>>;
2153
+ observability: z.ZodDefault<z.ZodObject<{
2154
+ logging: z.ZodDefault<z.ZodObject<{
2155
+ level: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
2156
+ format: z.ZodDefault<z.ZodEnum<["json", "pretty"]>>;
2157
+ includeTimestamp: z.ZodDefault<z.ZodBoolean>;
2158
+ includeCorrelationId: z.ZodDefault<z.ZodBoolean>;
2159
+ redactKeys: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
2160
+ }, "strip", z.ZodTypeAny, {
2161
+ level: "debug" | "info" | "warn" | "error";
2162
+ format: "json" | "pretty";
2163
+ includeTimestamp: boolean;
2164
+ includeCorrelationId: boolean;
2165
+ redactKeys: string[];
2166
+ }, {
2167
+ level?: "debug" | "info" | "warn" | "error" | undefined;
2168
+ format?: "json" | "pretty" | undefined;
2169
+ includeTimestamp?: boolean | undefined;
2170
+ includeCorrelationId?: boolean | undefined;
2171
+ redactKeys?: string[] | undefined;
2172
+ }>>;
2173
+ metrics: z.ZodDefault<z.ZodObject<{
2174
+ enabled: z.ZodDefault<z.ZodBoolean>;
2175
+ prefix: z.ZodDefault<z.ZodString>;
2176
+ defaultTags: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
2177
+ flushInterval: z.ZodDefault<z.ZodNumber>;
2178
+ histogramBuckets: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
2179
+ }, "strip", z.ZodTypeAny, {
2180
+ enabled: boolean;
2181
+ prefix: string;
2182
+ defaultTags: Record<string, string>;
2183
+ flushInterval: number;
2184
+ histogramBuckets: number[];
2185
+ }, {
2186
+ enabled?: boolean | undefined;
2187
+ prefix?: string | undefined;
2188
+ defaultTags?: Record<string, string> | undefined;
2189
+ flushInterval?: number | undefined;
2190
+ histogramBuckets?: number[] | undefined;
2191
+ }>>;
2192
+ tracing: z.ZodDefault<z.ZodObject<{
2193
+ enabled: z.ZodDefault<z.ZodBoolean>;
2194
+ provider: z.ZodDefault<z.ZodEnum<["noop", "memory", "otlp"]>>;
2195
+ serviceName: z.ZodOptional<z.ZodString>;
2196
+ serviceVersion: z.ZodOptional<z.ZodString>;
2197
+ environment: z.ZodOptional<z.ZodString>;
2198
+ sampleRate: z.ZodDefault<z.ZodNumber>;
2199
+ propagateContext: z.ZodDefault<z.ZodBoolean>;
2200
+ endpoint: z.ZodOptional<z.ZodString>;
2201
+ exporterType: z.ZodDefault<z.ZodEnum<["otlp-http", "otlp-grpc", "console"]>>;
2202
+ }, "strip", z.ZodTypeAny, {
2203
+ provider: "otlp" | "memory" | "noop";
2204
+ enabled: boolean;
2205
+ sampleRate: number;
2206
+ propagateContext: boolean;
2207
+ exporterType: "console" | "otlp-http" | "otlp-grpc";
2208
+ environment?: string | undefined;
2209
+ endpoint?: string | undefined;
2210
+ serviceName?: string | undefined;
2211
+ serviceVersion?: string | undefined;
2212
+ }, {
2213
+ environment?: string | undefined;
2214
+ provider?: "otlp" | "memory" | "noop" | undefined;
2215
+ endpoint?: string | undefined;
2216
+ enabled?: boolean | undefined;
2217
+ serviceName?: string | undefined;
2218
+ serviceVersion?: string | undefined;
2219
+ sampleRate?: number | undefined;
2220
+ propagateContext?: boolean | undefined;
2221
+ exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
2222
+ }>>;
2223
+ }, "strip", z.ZodTypeAny, {
2224
+ logging: {
2225
+ level: "debug" | "info" | "warn" | "error";
2226
+ format: "json" | "pretty";
2227
+ includeTimestamp: boolean;
2228
+ includeCorrelationId: boolean;
2229
+ redactKeys: string[];
2230
+ };
2231
+ metrics: {
2232
+ enabled: boolean;
2233
+ prefix: string;
2234
+ defaultTags: Record<string, string>;
2235
+ flushInterval: number;
2236
+ histogramBuckets: number[];
2237
+ };
2238
+ tracing: {
2239
+ provider: "otlp" | "memory" | "noop";
2240
+ enabled: boolean;
2241
+ sampleRate: number;
2242
+ propagateContext: boolean;
2243
+ exporterType: "console" | "otlp-http" | "otlp-grpc";
2244
+ environment?: string | undefined;
2245
+ endpoint?: string | undefined;
2246
+ serviceName?: string | undefined;
2247
+ serviceVersion?: string | undefined;
2248
+ };
2249
+ }, {
2250
+ logging?: {
2251
+ level?: "debug" | "info" | "warn" | "error" | undefined;
2252
+ format?: "json" | "pretty" | undefined;
2253
+ includeTimestamp?: boolean | undefined;
2254
+ includeCorrelationId?: boolean | undefined;
2255
+ redactKeys?: string[] | undefined;
2256
+ } | undefined;
2257
+ metrics?: {
2258
+ enabled?: boolean | undefined;
2259
+ prefix?: string | undefined;
2260
+ defaultTags?: Record<string, string> | undefined;
2261
+ flushInterval?: number | undefined;
2262
+ histogramBuckets?: number[] | undefined;
2263
+ } | undefined;
2264
+ tracing?: {
2265
+ environment?: string | undefined;
2266
+ provider?: "otlp" | "memory" | "noop" | undefined;
2267
+ endpoint?: string | undefined;
2268
+ enabled?: boolean | undefined;
2269
+ serviceName?: string | undefined;
2270
+ serviceVersion?: string | undefined;
2271
+ sampleRate?: number | undefined;
2272
+ propagateContext?: boolean | undefined;
2273
+ exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
2274
+ } | undefined;
2275
+ }>>;
2276
+ middleware: z.ZodDefault<z.ZodObject<{
2277
+ enabled: z.ZodDefault<z.ZodBoolean>;
2278
+ logging: z.ZodDefault<z.ZodBoolean>;
2279
+ metrics: z.ZodDefault<z.ZodBoolean>;
2280
+ slowQuery: z.ZodDefault<z.ZodObject<{
2281
+ enabled: z.ZodDefault<z.ZodBoolean>;
2282
+ thresholdMs: z.ZodDefault<z.ZodNumber>;
2283
+ }, "strip", z.ZodTypeAny, {
2284
+ enabled: boolean;
2285
+ thresholdMs: number;
2286
+ }, {
2287
+ enabled?: boolean | undefined;
2288
+ thresholdMs?: number | undefined;
2289
+ }>>;
2290
+ cache: z.ZodDefault<z.ZodObject<{
2291
+ enabled: z.ZodDefault<z.ZodBoolean>;
2292
+ defaultTTL: z.ZodDefault<z.ZodNumber>;
2293
+ }, "strip", z.ZodTypeAny, {
2294
+ defaultTTL: number;
2295
+ enabled: boolean;
2296
+ }, {
2297
+ defaultTTL?: number | undefined;
2298
+ enabled?: boolean | undefined;
2299
+ }>>;
2300
+ }, "strip", z.ZodTypeAny, {
2301
+ enabled: boolean;
2302
+ cache: {
2303
+ defaultTTL: number;
2304
+ enabled: boolean;
2305
+ };
2306
+ logging: boolean;
2307
+ metrics: boolean;
2308
+ slowQuery: {
2309
+ enabled: boolean;
2310
+ thresholdMs: number;
2311
+ };
2312
+ }, {
2313
+ enabled?: boolean | undefined;
2314
+ cache?: {
2315
+ defaultTTL?: number | undefined;
2316
+ enabled?: boolean | undefined;
2317
+ } | undefined;
2318
+ logging?: boolean | undefined;
2319
+ metrics?: boolean | undefined;
2320
+ slowQuery?: {
2321
+ enabled?: boolean | undefined;
2322
+ thresholdMs?: number | undefined;
2323
+ } | undefined;
2324
+ }>>;
2325
+ }, "strip", z.ZodTypeAny, {
2326
+ database: {
2327
+ provider: "memory" | "postgres" | "supabase";
2328
+ poolSize: number;
2329
+ connectionTimeout: number;
2330
+ url?: string | undefined;
2331
+ connectionString?: string | undefined;
2332
+ supabaseUrl?: string | undefined;
2333
+ supabaseAnonKey?: string | undefined;
2334
+ supabaseServiceRoleKey?: string | undefined;
2335
+ ssl?: boolean | {
2336
+ rejectUnauthorized?: boolean | undefined;
2337
+ } | undefined;
2338
+ };
2339
+ cache: {
2340
+ provider: "memory" | "redis" | "upstash";
2341
+ defaultTTL: number;
2342
+ keyPrefix: string;
2343
+ maxRetries: number;
2344
+ url?: string | undefined;
2345
+ upstashUrl?: string | undefined;
2346
+ upstashToken?: string | undefined;
2347
+ };
2348
+ storage: {
2349
+ provider: "memory" | "supabase" | "s3" | "minio" | "r2";
2350
+ region: string;
2351
+ forcePathStyle: boolean;
2352
+ signedUrlExpiry: number;
2353
+ endpoint?: string | undefined;
2354
+ accessKey?: string | undefined;
2355
+ secretKey?: string | undefined;
2356
+ bucket?: string | undefined;
2357
+ publicUrl?: string | undefined;
2358
+ };
2359
+ email: {
2360
+ provider: "console" | "memory" | "smtp" | "resend";
2361
+ secure: boolean;
2362
+ rateLimitPerSecond: number;
2363
+ host?: string | undefined;
2364
+ port?: number | undefined;
2365
+ username?: string | undefined;
2366
+ password?: string | undefined;
2367
+ apiKey?: string | undefined;
2368
+ from?: string | undefined;
2369
+ replyTo?: string | undefined;
2370
+ };
2371
+ queue: {
2372
+ provider: "memory" | "bullmq";
2373
+ maxRetries: number;
2374
+ queueName: string;
2375
+ concurrency: number;
2376
+ retryDelay: number;
2377
+ removeOnComplete: boolean;
2378
+ removeOnFail: boolean;
2379
+ redisUrl?: string | undefined;
2380
+ };
2381
+ resilience: {
2382
+ timeout: {
2383
+ enabled: boolean;
2384
+ default: number;
2385
+ database: number;
2386
+ cache: number;
2387
+ storage: number;
2388
+ email: number;
2389
+ queue: number;
2390
+ };
2391
+ retry: {
2392
+ enabled: boolean;
2393
+ maxAttempts: number;
2394
+ baseDelay: number;
2395
+ maxDelay: number;
2396
+ backoffMultiplier: number;
2397
+ jitter: boolean;
2398
+ };
2399
+ circuitBreaker: {
2400
+ enabled: boolean;
2401
+ failureThreshold: number;
2402
+ resetTimeout: number;
2403
+ halfOpenRequests: number;
2404
+ monitorInterval: number;
2405
+ };
2406
+ bulkhead: {
2407
+ enabled: boolean;
2408
+ maxConcurrent: number;
2409
+ maxQueued: number;
2410
+ timeout: number;
2411
+ };
2412
+ };
2413
+ observability: {
2414
+ logging: {
2415
+ level: "debug" | "info" | "warn" | "error";
2416
+ format: "json" | "pretty";
2417
+ includeTimestamp: boolean;
2418
+ includeCorrelationId: boolean;
2419
+ redactKeys: string[];
2420
+ };
2421
+ metrics: {
2422
+ enabled: boolean;
2423
+ prefix: string;
2424
+ defaultTags: Record<string, string>;
2425
+ flushInterval: number;
2426
+ histogramBuckets: number[];
2427
+ };
2428
+ tracing: {
2429
+ provider: "otlp" | "memory" | "noop";
2430
+ enabled: boolean;
2431
+ sampleRate: number;
2432
+ propagateContext: boolean;
2433
+ exporterType: "console" | "otlp-http" | "otlp-grpc";
2434
+ environment?: string | undefined;
2435
+ endpoint?: string | undefined;
2436
+ serviceName?: string | undefined;
2437
+ serviceVersion?: string | undefined;
2438
+ };
2439
+ };
2440
+ middleware: {
2441
+ enabled: boolean;
2442
+ cache: {
2443
+ defaultTTL: number;
2444
+ enabled: boolean;
2445
+ };
2446
+ logging: boolean;
2447
+ metrics: boolean;
2448
+ slowQuery: {
2449
+ enabled: boolean;
2450
+ thresholdMs: number;
2451
+ };
2452
+ };
2453
+ }, {
2454
+ database?: {
2455
+ provider?: "memory" | "postgres" | "supabase" | undefined;
2456
+ url?: string | undefined;
2457
+ connectionString?: string | undefined;
2458
+ supabaseUrl?: string | undefined;
2459
+ supabaseAnonKey?: string | undefined;
2460
+ supabaseServiceRoleKey?: string | undefined;
2461
+ poolSize?: number | undefined;
2462
+ connectionTimeout?: number | undefined;
2463
+ ssl?: boolean | {
2464
+ rejectUnauthorized?: boolean | undefined;
2465
+ } | undefined;
2466
+ } | undefined;
2467
+ cache?: {
2468
+ provider?: "memory" | "redis" | "upstash" | undefined;
2469
+ url?: string | undefined;
2470
+ upstashUrl?: string | undefined;
2471
+ upstashToken?: string | undefined;
2472
+ defaultTTL?: number | undefined;
2473
+ keyPrefix?: string | undefined;
2474
+ maxRetries?: number | undefined;
2475
+ } | undefined;
2476
+ storage?: {
2477
+ provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
2478
+ endpoint?: string | undefined;
2479
+ region?: string | undefined;
2480
+ accessKey?: string | undefined;
2481
+ secretKey?: string | undefined;
2482
+ bucket?: string | undefined;
2483
+ publicUrl?: string | undefined;
2484
+ forcePathStyle?: boolean | undefined;
2485
+ signedUrlExpiry?: number | undefined;
2486
+ } | undefined;
2487
+ email?: {
2488
+ provider?: "console" | "memory" | "smtp" | "resend" | undefined;
2489
+ host?: string | undefined;
2490
+ port?: number | undefined;
2491
+ secure?: boolean | undefined;
2492
+ username?: string | undefined;
2493
+ password?: string | undefined;
2494
+ apiKey?: string | undefined;
2495
+ from?: string | undefined;
2496
+ replyTo?: string | undefined;
2497
+ rateLimitPerSecond?: number | undefined;
2498
+ } | undefined;
2499
+ queue?: {
2500
+ provider?: "memory" | "bullmq" | undefined;
2501
+ maxRetries?: number | undefined;
2502
+ redisUrl?: string | undefined;
2503
+ queueName?: string | undefined;
2504
+ concurrency?: number | undefined;
2505
+ retryDelay?: number | undefined;
2506
+ removeOnComplete?: boolean | undefined;
2507
+ removeOnFail?: boolean | undefined;
2508
+ } | undefined;
2509
+ resilience?: {
2510
+ timeout?: {
2511
+ enabled?: boolean | undefined;
2512
+ default?: number | undefined;
2513
+ database?: number | undefined;
2514
+ cache?: number | undefined;
2515
+ storage?: number | undefined;
2516
+ email?: number | undefined;
2517
+ queue?: number | undefined;
2518
+ } | undefined;
2519
+ retry?: {
2520
+ enabled?: boolean | undefined;
2521
+ maxAttempts?: number | undefined;
2522
+ baseDelay?: number | undefined;
2523
+ maxDelay?: number | undefined;
2524
+ backoffMultiplier?: number | undefined;
2525
+ jitter?: boolean | undefined;
2526
+ } | undefined;
2527
+ circuitBreaker?: {
2528
+ enabled?: boolean | undefined;
2529
+ failureThreshold?: number | undefined;
2530
+ resetTimeout?: number | undefined;
2531
+ halfOpenRequests?: number | undefined;
2532
+ monitorInterval?: number | undefined;
2533
+ } | undefined;
2534
+ bulkhead?: {
2535
+ enabled?: boolean | undefined;
2536
+ maxConcurrent?: number | undefined;
2537
+ maxQueued?: number | undefined;
2538
+ timeout?: number | undefined;
2539
+ } | undefined;
2540
+ } | undefined;
2541
+ observability?: {
2542
+ logging?: {
2543
+ level?: "debug" | "info" | "warn" | "error" | undefined;
2544
+ format?: "json" | "pretty" | undefined;
2545
+ includeTimestamp?: boolean | undefined;
2546
+ includeCorrelationId?: boolean | undefined;
2547
+ redactKeys?: string[] | undefined;
2548
+ } | undefined;
2549
+ metrics?: {
2550
+ enabled?: boolean | undefined;
2551
+ prefix?: string | undefined;
2552
+ defaultTags?: Record<string, string> | undefined;
2553
+ flushInterval?: number | undefined;
2554
+ histogramBuckets?: number[] | undefined;
2555
+ } | undefined;
2556
+ tracing?: {
2557
+ environment?: string | undefined;
2558
+ provider?: "otlp" | "memory" | "noop" | undefined;
2559
+ endpoint?: string | undefined;
2560
+ enabled?: boolean | undefined;
2561
+ serviceName?: string | undefined;
2562
+ serviceVersion?: string | undefined;
2563
+ sampleRate?: number | undefined;
2564
+ propagateContext?: boolean | undefined;
2565
+ exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
2566
+ } | undefined;
2567
+ } | undefined;
2568
+ middleware?: {
2569
+ enabled?: boolean | undefined;
2570
+ cache?: {
2571
+ defaultTTL?: number | undefined;
2572
+ enabled?: boolean | undefined;
2573
+ } | undefined;
2574
+ logging?: boolean | undefined;
2575
+ metrics?: boolean | undefined;
2576
+ slowQuery?: {
2577
+ enabled?: boolean | undefined;
2578
+ thresholdMs?: number | undefined;
2579
+ } | undefined;
2580
+ } | undefined;
2581
+ }>;
2582
+ type PlatformConfig = z.infer<typeof PlatformConfigSchema>;
2583
+ type DatabaseConfig = z.infer<typeof DatabaseConfigSchema>;
2584
+ type CacheConfig = z.infer<typeof CacheConfigSchema>;
2585
+ type StorageConfig = z.infer<typeof StorageConfigSchema>;
2586
+ type EmailConfig = z.infer<typeof EmailConfigSchema>;
2587
+ type QueueConfig = z.infer<typeof QueueConfigSchema>;
2588
+ type ResilienceConfig = z.infer<typeof ResilienceConfigSchema>;
2589
+ type ObservabilityConfig = z.infer<typeof ObservabilityConfigSchema>;
2590
+ type MiddlewareConfig = z.infer<typeof MiddlewareConfigSchema>;
2591
+ /**
2592
+ * Load configuration from environment variables
2593
+ */
2594
+ declare function loadConfig(): PlatformConfig;
2595
+ /**
2596
+ * Validate configuration object
2597
+ * @throws ZodError if validation fails
2598
+ */
2599
+ declare function validateConfig(config: unknown): PlatformConfig;
2600
+ /**
2601
+ * Safely validate configuration, returning errors instead of throwing
2602
+ */
2603
+ declare function safeValidateConfig(config: unknown): {
2604
+ success: boolean;
2605
+ data?: PlatformConfig;
2606
+ errors?: z.ZodError;
2607
+ };
2608
+ /**
2609
+ * Get configuration with defaults applied
2610
+ */
2611
+ declare function getDefaultConfig(): PlatformConfig;
2612
+
2613
+ /**
2614
+ * Platform Factory
2615
+ * Create a platform instance with configured adapters
2616
+ */
2617
+
2618
+ /**
2619
+ * Create a platform instance (async version)
2620
+ */
2621
+ declare function createPlatformAsync(config?: Partial<PlatformConfig>): Promise<IPlatform>;
2622
+ /**
2623
+ * Create a platform instance (sync version - uses memory adapters only)
2624
+ * For production adapters, use createPlatformAsync
2625
+ */
2626
+ declare function createPlatform(config?: Partial<PlatformConfig>): IPlatform;
2627
+
2628
+ /**
2629
+ * Memory Database Adapter
2630
+ * In-memory implementation for testing
2631
+ */
2632
+
2633
+ declare class MemoryDatabase implements IDatabase {
2634
+ private tables;
2635
+ from<T = unknown>(table: string): IQueryBuilder<T>;
2636
+ raw<T = unknown>(sql: string, params?: unknown[]): Promise<QueryResult<T>>;
2637
+ transaction<T>(fn: (tx: IDatabase) => Promise<T>): Promise<T>;
2638
+ healthCheck(): Promise<boolean>;
2639
+ close(): Promise<void>;
2640
+ /**
2641
+ * Clear all data (for testing)
2642
+ */
2643
+ clear(): void;
2644
+ /**
2645
+ * Get table data (for testing)
2646
+ */
2647
+ getTable<T = unknown>(tableName: string): T[];
2648
+ }
2649
+
2650
+ /**
2651
+ * Memory Cache Adapter
2652
+ * In-memory implementation for testing
2653
+ */
2654
+
2655
+ declare class MemoryCache implements ICache {
2656
+ private store;
2657
+ private subscriptions;
2658
+ get<T = unknown>(key: string): Promise<T | null>;
2659
+ set<T = unknown>(key: string, value: T, ttl?: number): Promise<void>;
2660
+ delete(key: string): Promise<void>;
2661
+ exists(key: string): Promise<boolean>;
2662
+ deletePattern(pattern: string): Promise<number>;
2663
+ mget<T = unknown>(keys: string[]): Promise<(T | null)[]>;
2664
+ mset<T = unknown>(entries: Array<{
2665
+ key: string;
2666
+ value: T;
2667
+ ttl?: number;
2668
+ }>): Promise<void>;
2669
+ incr(key: string, by?: number): Promise<number>;
2670
+ publish(channel: string, message: string): Promise<void>;
2671
+ subscribe(channel: string, callback: (message: string) => void): Promise<() => void>;
2672
+ healthCheck(): Promise<boolean>;
2673
+ close(): Promise<void>;
2674
+ /**
2675
+ * Clear all cached data (for testing)
2676
+ */
2677
+ clear(): void;
2678
+ /**
2679
+ * Get number of cached items (for testing)
2680
+ */
2681
+ get size(): number;
2682
+ }
2683
+
2684
+ declare class MemoryStorage implements IStorage {
2685
+ private files;
2686
+ upload(key: string, data: Buffer | Blob | ReadableStream, options?: UploadOptions): Promise<{
2687
+ url: string;
2688
+ }>;
2689
+ download(key: string): Promise<Buffer<ArrayBufferLike>>;
2690
+ getSignedUrl(key: string): Promise<string>;
2691
+ delete(key: string): Promise<void>;
2692
+ deleteMany(keys: string[]): Promise<void>;
2693
+ list(prefix?: string): Promise<StorageFile[]>;
2694
+ exists(key: string): Promise<boolean>;
2695
+ getMetadata(key: string): Promise<null>;
2696
+ healthCheck(): Promise<boolean>;
2697
+ /**
2698
+ * Clear all files (for testing)
2699
+ */
2700
+ clear(): void;
2701
+ /**
2702
+ * Get number of stored files (for testing)
2703
+ */
2704
+ get size(): number;
2705
+ }
2706
+
2707
+ declare class MemoryEmail implements IEmail {
2708
+ private sentEmails;
2709
+ send(message: EmailMessage): Promise<EmailResult>;
2710
+ sendBatch(messages: EmailMessage[]): Promise<EmailResult[]>;
2711
+ healthCheck(): Promise<boolean>;
2712
+ getSentEmails(): EmailMessage[];
2713
+ /**
2714
+ * Clear sent emails (for testing)
2715
+ */
2716
+ clear(): void;
2717
+ /**
2718
+ * Get number of sent emails (for testing)
2719
+ */
2720
+ get size(): number;
2721
+ }
2722
+
2723
+ declare class MemoryQueue<T = unknown> implements IQueue<T> {
2724
+ private jobs;
2725
+ private handlers;
2726
+ add(name: string, data: T, options?: JobOptions): Promise<Job<T>>;
2727
+ addBulk(jobs: Array<{
2728
+ name: string;
2729
+ data: T;
2730
+ options?: JobOptions;
2731
+ }>): Promise<Job<T>[]>;
2732
+ process(handler: (job: Job<T>) => Promise<unknown>): void;
2733
+ getJob(id: string): Promise<Job<T> | null>;
2734
+ removeJob(id: string): Promise<void>;
2735
+ pause(): Promise<void>;
2736
+ resume(): Promise<void>;
2737
+ getStats(): Promise<{
2738
+ waiting: number;
2739
+ active: number;
2740
+ completed: number;
2741
+ failed: number;
2742
+ delayed: number;
2743
+ }>;
2744
+ healthCheck(): Promise<boolean>;
2745
+ close(): Promise<void>;
2746
+ /**
2747
+ * Clear all jobs (for testing)
2748
+ */
2749
+ clear(): void;
2750
+ /**
2751
+ * Get all jobs (for testing)
2752
+ */
2753
+ getJobs(): Job<T>[];
2754
+ /**
2755
+ * Get pending jobs (for testing)
2756
+ */
2757
+ getPendingJobs(): Job<T>[];
2758
+ /**
2759
+ * Get number of jobs (for testing)
2760
+ */
2761
+ get size(): number;
2762
+ }
2763
+
2764
+ /**
2765
+ * Console Email Adapter
2766
+ * Development implementation that logs emails to console instead of sending
2767
+ */
2768
+
2769
+ declare class ConsoleEmail implements IEmail {
2770
+ private sentEmails;
2771
+ send(message: EmailMessage): Promise<EmailResult>;
2772
+ sendBatch(messages: EmailMessage[]): Promise<EmailResult[]>;
2773
+ healthCheck(): Promise<boolean>;
2774
+ /**
2775
+ * Get all sent emails (for testing)
2776
+ */
2777
+ getSentEmails(): EmailMessage[];
2778
+ /**
2779
+ * Clear sent emails (for testing)
2780
+ */
2781
+ clearSentEmails(): void;
2782
+ private formatAddress;
2783
+ private formatAddresses;
2784
+ }
2785
+
2786
+ export { type SpanContext as $, type LoggerConfig as A, type MetricTags as B, ConsoleEmail as C, type Secret as D, EnvSecrets as E, type SecretMetadata as F, type GetSecretOptions as G, type HistogramStats as H, type IPlatform as I, type Job as J, type SetSecretOptions as K, type LogLevel as L, MemoryDatabase as M, NoopLogger as N, type RotationResult as O, type PlatformHealthStatus as P, type QueryResult as Q, type RotateSecretOptions as R, type StorageFile as S, type TimingStats as T, type UploadOptions as U, createPlatformAsync as V, createScopedMetrics as W, MemoryTracing as X, NoopTracing as Y, type ITracing as Z, type ISpan as _, MemoryCache as a, type SpanOptions as a0, type SpanStatus as a1, type SpanKind as a2, type TracingConfig as a3, type EmailAddress as a4, type EmailAttachment as a5, type SpanStatusCode as a6, type SpanEvent as a7, DatabaseProviderSchema as a8, CacheProviderSchema as a9, type QueueConfig as aA, type ResilienceConfig as aB, type ObservabilityConfig as aC, type MiddlewareConfig as aD, loadConfig as aE, validateConfig as aF, safeValidateConfig as aG, getDefaultConfig as aH, StorageProviderSchema as aa, EmailProviderSchema as ab, QueueProviderSchema as ac, TracingProviderSchema as ad, LogLevelSchema as ae, DatabaseConfigSchema as af, CacheConfigSchema as ag, StorageConfigSchema as ah, EmailConfigSchema as ai, QueueConfigSchema as aj, RetryConfigSchema as ak, CircuitBreakerConfigSchema as al, TimeoutConfigSchema as am, BulkheadConfigSchema as an, ResilienceConfigSchema as ao, LoggingConfigSchema as ap, MetricsConfigSchema as aq, TracingConfigSchema as ar, ObservabilityConfigSchema as as, MiddlewareConfigSchema as at, PlatformConfigSchema as au, type PlatformConfig as av, type DatabaseConfig as aw, type CacheConfig as ax, type StorageConfig as ay, type EmailConfig as az, MemoryStorage as b, MemoryEmail as c, MemoryQueue as d, type IDatabase as e, MemorySecrets as f, createPlatform as g, ConsoleLogger as h, MemoryMetrics as i, NoopMetrics as j, type IQueryBuilder as k, type ICache as l, type IStorage as m, type IEmail as n, type IQueue as o, type ILogger as p, type IMetrics as q, type ISecrets as r, type JobOptions as s, type EmailMessage as t, type MetricsSummary as u, type EmailResult as v, type ICacheOptions as w, type JobResult as x, type LogMeta as y, type LogEntry as z };