@plyaz/types 1.11.4 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/index.cjs +345 -0
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.js +328 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/payments/currency/index.d.ts +37 -0
  7. package/dist/payments/events/emitter/index.d.ts +1 -0
  8. package/dist/payments/events/emitter/types.d.ts +333 -0
  9. package/dist/payments/events/enums.d.ts +110 -0
  10. package/dist/payments/events/index.d.ts +4 -0
  11. package/dist/payments/events/types.d.ts +151 -0
  12. package/dist/payments/events/unified-event/enums.d.ts +14 -0
  13. package/dist/payments/events/unified-event/index.d.ts +2 -0
  14. package/dist/payments/events/unified-event/types.d.ts +346 -0
  15. package/dist/payments/gateways/index.d.ts +2 -0
  16. package/dist/payments/gateways/provider/index.d.ts +1 -0
  17. package/dist/payments/gateways/provider/types.d.ts +435 -0
  18. package/dist/payments/gateways/routings/enums.d.ts +87 -0
  19. package/dist/payments/gateways/routings/index.d.ts +2 -0
  20. package/dist/payments/gateways/routings/types.d.ts +512 -0
  21. package/dist/payments/index.cjs +351 -0
  22. package/dist/payments/index.cjs.map +1 -0
  23. package/dist/payments/index.d.ts +7 -0
  24. package/dist/payments/index.js +332 -0
  25. package/dist/payments/index.js.map +1 -0
  26. package/dist/payments/provider/adapter/index.d.ts +1 -0
  27. package/dist/payments/provider/adapter/types.d.ts +208 -0
  28. package/dist/payments/provider/core/index.d.ts +1 -0
  29. package/dist/payments/provider/core/types.d.ts +508 -0
  30. package/dist/payments/provider/index.d.ts +4 -0
  31. package/dist/payments/provider/payment-provider/index.d.ts +1 -0
  32. package/dist/payments/provider/payment-provider/types.d.ts +269 -0
  33. package/dist/payments/provider/provider-capability/enums.d.ts +116 -0
  34. package/dist/payments/provider/provider-capability/index.d.ts +1 -0
  35. package/dist/payments/request/enums.d.ts +19 -0
  36. package/dist/payments/request/index.d.ts +2 -0
  37. package/dist/payments/request/types.d.ts +221 -0
  38. package/dist/payments/service/index.d.ts +1 -0
  39. package/dist/payments/service/types.d.ts +48 -0
  40. package/dist/payments/transaction/index.d.ts +1 -0
  41. package/dist/payments/transaction/types.d.ts +120 -0
  42. package/package.json +6 -1
@@ -0,0 +1,333 @@
1
+ import type { PAYMENTEVENTTYPE } from '../enums';
2
+ import type { EventRetryConfig, PaymentEvent, PaymentEventPayload } from '../types';
3
+ /**
4
+ * Payment event emitter interface that extends the base event system
5
+ * with payment-specific functionality and type safety.
6
+ *
7
+ * Design Goals:
8
+ * - Type-safe event emission and subscription
9
+ * - Support for synchronous and asynchronous event processing
10
+ * - Comprehensive error handling and retry mechanismss
11
+ * - Event filtering and routing capabilities
12
+ * - Performance monitoring and metrics
13
+ */
14
+ /**
15
+ * Aggregated result of processing a single emitted event by all handlers.
16
+ * Returned by `emitAndWait` to give a complete view of what happened.
17
+ */
18
+ export interface EventProcessingResult<TMetadata extends object = {}> {
19
+ /** Unique emission ID for tracking this processing */
20
+ emissionId: string;
21
+ /** Event type that was processed */
22
+ eventType: PAYMENTEVENTTYPE;
23
+ /** Total number of handlers triggered */
24
+ totalHandlers: number;
25
+ /** Number of handlers that succeeded */
26
+ successfulHandlers: number;
27
+ /** Number of handlers that failed */
28
+ failedHandlers: number;
29
+ /** Total time taken for processing all handlers */
30
+ totalProcessingTime: number;
31
+ /** Individual handler execution results */
32
+ handlerResults: EventHandlerResult[];
33
+ /** Whether all handlers executed successfully */
34
+ fullySuccessful: boolean;
35
+ /** Any errors encountered during processing */
36
+ errors?: EventEmissionError[];
37
+ /** Additional metadata about the emission */
38
+ metadata?: TMetadata;
39
+ }
40
+ export interface PaymentEventEmitter {
41
+ /**
42
+ * Emit a payment event to all registered handlers.
43
+ * This method should:
44
+ * - Validate event data before emission
45
+ * - Route events to appropriate handlers
46
+ * - Handle emission errors gracefully
47
+ * - Provide emission metrics
48
+ *
49
+ * @param eventType - Type of payment event to emit
50
+ * @param payload - Event payload with business data
51
+ * @param options - Additional emission options
52
+ * @returns Promise that resolves when emission is complete
53
+ */
54
+ emit(eventType: PAYMENTEVENTTYPE, payload: PaymentEventPayload, options?: EventEmissionOptions): Promise<EventEmissionResult>;
55
+ /**
56
+ * Emit event and wait for all handlers to complete processing.
57
+ * Useful for critical events that require synchronous processing.
58
+ *
59
+ * @param eventType - Type of payment event to emit
60
+ * @param payload - Event payload with business data
61
+ * @param timeout - Maximum wait time in milliseconds
62
+ * @returns Promise with aggregated handler results
63
+ */
64
+ emitAndWait(eventType: PAYMENTEVENTTYPE, payload: PaymentEventPayload, timeout?: number): Promise<EventProcessingResult[]>;
65
+ /**
66
+ * Subscribe to specific payment event types with typed handlers.
67
+ * Handlers will be called for matching events.
68
+ *
69
+ * @param eventType - Event type to subscribe to
70
+ * @param handler - Typed event handler function
71
+ * @param options - Handler configuration options
72
+ */
73
+ on(eventType: PAYMENTEVENTTYPE, handler: PaymentEventHandler, options?: EventHandlerOptions): void;
74
+ /**
75
+ * Subscribe to multiple event types with pattern matching.
76
+ * Supports wildcards and complex filtering patterns.
77
+ *
78
+ * @param pattern - Event pattern (e.g., 'payment.*', 'refund.completed')
79
+ * @param handler - Event handler function
80
+ * @param options - Handler configuration options
81
+ */
82
+ onPattern(pattern: string, handler: PaymentEventHandler, options?: EventHandlerOptions): void;
83
+ /**
84
+ * Subscribe to events with advanced filtering capabilities.
85
+ * Allows complex event filtering based on payload content.
86
+ *
87
+ * @param filter - Event filter function
88
+ * @param handler - Event handler function
89
+ * @param options - Handler configuration options
90
+ */
91
+ onFiltered(filter: PaymentEventFilter, handler: PaymentEventHandler, options?: EventHandlerOptions): void;
92
+ /**
93
+ * Subscribe to events only once (auto-unsubscribe after first event).
94
+ *
95
+ * @param eventType - Event type to subscribe to
96
+ * @param handler - Event handler function
97
+ * @param options - Handler configuration options
98
+ */
99
+ once(eventType: PAYMENTEVENTTYPE, handler: PaymentEventHandler, options?: EventHandlerOptions): void;
100
+ /**
101
+ * Remove event listener for specific event type and handler.
102
+ *
103
+ * @param eventType - Event type to unsubscribe from
104
+ * @param handler - Handler function to remove
105
+ */
106
+ off(eventType: PAYMENTEVENTTYPE, handler: PaymentEventHandler): void;
107
+ /**
108
+ * Remove all event listeners for specific event type.
109
+ *
110
+ * @param eventType - Event type to clear all handlers for
111
+ */
112
+ removeAllListeners(eventType: PAYMENTEVENTTYPE): void;
113
+ /**
114
+ * Get current event emission metrics and statistics.
115
+ *
116
+ * @returns Current emission metrics
117
+ */
118
+ getMetrics(): EventEmissionMetrics;
119
+ /**
120
+ * Configure event emitter behavior and settings.
121
+ *
122
+ * @param config - Event emitter configuration
123
+ */
124
+ configure(config: PaymentEventEmitterConfig): void;
125
+ }
126
+ /**
127
+ * Payment event handler function interface with comprehensive error handling.
128
+ */
129
+ export interface PaymentEventHandler {
130
+ /**
131
+ * Handle a payment event with proper error handling and metrics.
132
+ *
133
+ * @param event - Payment event to handle
134
+ * @returns Promise that resolves when handling is complete
135
+ * @throws Should handle errors gracefully and not throw unless critical
136
+ */
137
+ (event: PaymentEvent): Promise<EventHandlerResult> | EventHandlerResult;
138
+ }
139
+ /**
140
+ * Event filter function for advanced event subscription.
141
+ */
142
+ export interface PaymentEventFilter {
143
+ /**
144
+ * Determine if an event should be processed by the handler.
145
+ *
146
+ * @param event - Payment event to evaluate
147
+ * @returns True if event should be processed, false otherwise
148
+ */
149
+ (event: PaymentEvent): boolean;
150
+ }
151
+ /**
152
+ * Options for event emission configuration.
153
+ */
154
+ export interface EventEmissionOptions<TMetadata extends object = {}> {
155
+ /** Emission priority (higher number = higher priority) */
156
+ priority?: number;
157
+ /** Whether this emission is urgent and should skip queues */
158
+ urgent?: boolean;
159
+ /** Maximum time to wait for emission completion */
160
+ timeout?: number;
161
+ /** Whether to emit synchronously or asynchronously */
162
+ synchronous?: boolean;
163
+ /** Tags to add to the event for filtering */
164
+ tags?: string[];
165
+ /** Correlation ID for event tracking */
166
+ correlationId?: string;
167
+ /** Whether to persist this event */
168
+ persist?: boolean;
169
+ /** Custom metadata for this emission */
170
+ metadata?: TMetadata;
171
+ }
172
+ /**
173
+ * Result of event emission operation.
174
+ */
175
+ export interface EventEmissionResult<TMetadata extends object = {}> {
176
+ /** Whether emission was successful */
177
+ success: boolean;
178
+ /** Unique identifier for this emission */
179
+ emissionId: string;
180
+ /** Number of handlers that will process this event */
181
+ handlerCount: number;
182
+ /** Time taken for emission in milliseconds */
183
+ emissionTime: number;
184
+ /** Any errors that occurred during emission */
185
+ errors?: EventEmissionError[];
186
+ /** Additional emission metadata */
187
+ metadata?: TMetadata;
188
+ }
189
+ /**
190
+ * Options for configuring event handlers.
191
+ */
192
+ export interface EventHandlerOptions {
193
+ /** Handler priority (higher number = higher priority) */
194
+ priority?: number;
195
+ /** Maximum execution time for this handler */
196
+ timeout?: number;
197
+ /** Whether handler failures should stop other handlers */
198
+ critical?: boolean;
199
+ /** Retry configuration for failed handler execution */
200
+ retryConfig?: EventRetryConfig;
201
+ /** Whether to run this handler asynchronously */
202
+ async?: boolean;
203
+ /** Handler identifier for logging and metrics */
204
+ handlerId?: string;
205
+ /** Tags for handler classification */
206
+ tags?: string[];
207
+ }
208
+ /**
209
+ * Result of event handler execution.
210
+ */
211
+ export interface EventHandlerResult<TData extends object = {}, TMetadata extends object = {}> {
212
+ /** Index of the handler in the execution pipeline */
213
+ handlerIndex: number;
214
+ /** Whether handler execution was successful */
215
+ success: boolean;
216
+ /** Time taken for handler execution in milliseconds */
217
+ executionTime: number;
218
+ /** Data returned by the handler */
219
+ data?: TData;
220
+ /** Error information if handler failed */
221
+ error?: EventHandlerError;
222
+ /** Additional handler metadata */
223
+ metadata?: TMetadata;
224
+ }
225
+ /**
226
+ * Error information for failed event emissions.
227
+ */
228
+ export interface EventEmissionError<TMetadata extends object = {}> {
229
+ /** Error code for programmatic handling */
230
+ code: string;
231
+ /** Human-readable error message */
232
+ message: string;
233
+ /** Component where error occurred */
234
+ component: string;
235
+ /** Error timestamp */
236
+ timestamp: Date;
237
+ /** Additional error context */
238
+ context?: TMetadata;
239
+ }
240
+ /**
241
+ * Error information for failed event handler execution.
242
+ */
243
+ export interface EventHandlerError {
244
+ /** Error code for programmatic handling */
245
+ code: string;
246
+ /** Human-readable error message */
247
+ message: string;
248
+ /** Handler identifier that failed */
249
+ handlerId?: string;
250
+ /** Whether this error is retryable */
251
+ retryable: boolean;
252
+ /** Error timestamp */
253
+ timestamp: Date;
254
+ /** Stack trace or additional error details */
255
+ details?: string;
256
+ }
257
+ /**
258
+ * Event emission metrics and statistics.
259
+ */
260
+ export interface EventEmissionMetrics {
261
+ /** Total number of events emitted */
262
+ totalEmissions: number;
263
+ /** Number of successful emissions */
264
+ successfulEmissions: number;
265
+ /** Number of failed emissions */
266
+ failedEmissions: number;
267
+ /** Average emission time in milliseconds */
268
+ averageEmissionTime: number;
269
+ /** Events emitted per second (current rate) */
270
+ emissionRate: number;
271
+ /** Handler execution statistics */
272
+ handlerMetrics: {
273
+ totalExecutions: number;
274
+ successfulExecutions: number;
275
+ failedExecutions: number;
276
+ averageExecutionTime: number;
277
+ };
278
+ /** Event type breakdown */
279
+ eventTypeBreakdown: Record<PAYMENTEVENTTYPE, number>;
280
+ /** Error statistics */
281
+ errorStatistics: {
282
+ totalErrors: number;
283
+ errorsByType: Record<string, number>;
284
+ errorRate: number;
285
+ };
286
+ /** Performance statistics */
287
+ performanceStats: {
288
+ p50EmissionTime: number;
289
+ p95EmissionTime: number;
290
+ p99EmissionTime: number;
291
+ maxEmissionTime: number;
292
+ };
293
+ }
294
+ /**
295
+ * Configuration for payment event emitter.
296
+ */
297
+ export interface PaymentEventEmitterConfig {
298
+ /** Maximum number of concurrent event handlers */
299
+ maxConcurrentHandlers: number;
300
+ /** Default timeout for event handlers in milliseconds */
301
+ defaultHandlerTimeout: number;
302
+ /** Default timeout for event emission in milliseconds */
303
+ defaultEmissionTimeout: number;
304
+ /** Whether to enable event persistence */
305
+ enablePersistence: boolean;
306
+ /** Whether to enable event metrics collection */
307
+ enableMetrics: boolean;
308
+ /** Event queue configuration */
309
+ queueConfig: {
310
+ /** Maximum queue size */
311
+ maxSize: number;
312
+ /** Queue processing batch size */
313
+ batchSize: number;
314
+ /** Queue processing interval in milliseconds */
315
+ processingInterval: number;
316
+ };
317
+ /** Error handling configuration */
318
+ errorHandling: {
319
+ /** Strategy for handling emission errors */
320
+ strategy: 'ignore' | 'log' | 'retry' | 'circuit_breaker';
321
+ /** Maximum error rate before circuit breaker opens */
322
+ maxErrorRate: number;
323
+ /** Circuit breaker timeout in milliseconds */
324
+ circuitBreakerTimeout: number;
325
+ };
326
+ /** Event filtering configuration */
327
+ filtering: {
328
+ /** Whether to enable event filtering */
329
+ enabled: boolean;
330
+ /** Default event filter if none specified */
331
+ defaultFilter?: PaymentEventFilter;
332
+ };
333
+ }
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Comprehensive enumeration of all payment-related events that can occur
3
+ * in the system. Events are organized by category and follow a hierarchical
4
+ * naming convention for easy filtering and subscription.
5
+ *
6
+ * Naming Convention:
7
+ * - Category.Action (e.g., payment.completed)
8
+ * - Use present tense for ongoing events, past tense for completed events
9
+ * - Include both success and failure events for complete audit trails
10
+ */
11
+ export declare enum PAYMENTEVENTTYPE {
12
+ PaymentInitiated = "payment.initiated",
13
+ PaymentProcessing = "payment.processing",
14
+ PaymentRequiresAction = "payment.requires_action",
15
+ PaymentCompleted = "payment.completed",
16
+ PaymentFailed = "payment.failed",
17
+ PaymentCancelled = "payment.cancelled",
18
+ PaymentExpired = "payment.expired",
19
+ PaymentAuthorized = "payment.authorized",
20
+ PaymentCaptured = "payment.captured",
21
+ PaymentHeld = "payment.held",
22
+ PaymentReleased = "payment.released",
23
+ RefundRequested = "refund.requested",
24
+ RefundApproved = "refund.approved",
25
+ RefundRejected = "refund.rejected",
26
+ RefundProcessing = "refund.processing",
27
+ RefundCompleted = "refund.completed",
28
+ RefundFailed = "refund.failed",
29
+ RefundCancelled = "refund.cancelled",
30
+ ProviderWebhookReceived = "provider.webhook.received",
31
+ ProviderWebhookProcessed = "provider.webhook.processed",
32
+ ProviderWebhookFailed = "provider.webhook.failed",
33
+ ProviderApiCalled = "provider.api.called",
34
+ ProviderApiSucceeded = "provider.api.succeeded",
35
+ ProviderApiFailed = "provider.api.failed",
36
+ ProviderTimeout = "provider.timeout",
37
+ ProviderHealthChanged = "provider.health.changed",
38
+ SettlementInitiated = "settlement.initiated",
39
+ SettlementCompleted = "settlement.completed",
40
+ SettlementFailed = "settlement.failed",
41
+ PayoutRequested = "payout.requested",
42
+ PayoutProcessed = "payout.processed",
43
+ PayoutFailed = "payout.failed",
44
+ ChargebackReceived = "chargeback.received",
45
+ ChargebackResponded = "chargeback.responded",
46
+ ChargebackWon = "chargeback.won",
47
+ ChargebackLost = "chargeback.lost",
48
+ DisputeCreated = "dispute.created",
49
+ DisputeUpdated = "dispute.updated",
50
+ DisputeResolved = "dispute.resolved",
51
+ DisputeEscalated = "dispute.escalated",
52
+ FraudDetected = "fraud.detected",
53
+ FraudReviewRequired = "fraud.review_required",
54
+ FraudCleared = "fraud.cleared",
55
+ SuspiciousActivity = "suspicious.activity",
56
+ PaymentBlocked = "payment.blocked",
57
+ SecurityCheckFailed = "security.check_failed",
58
+ VelocityLimitExceeded = "velocity.limit_exceeded",
59
+ PaymentMethodAdded = "payment_method.added",
60
+ PaymentMethodUpdated = "payment_method.updated",
61
+ PaymentMethodDeleted = "payment_method.deleted",
62
+ PaymentMethodVerified = "payment_method.verified",
63
+ PaymentMethodExpired = "payment_method.expired",
64
+ SubscriptionCreated = "subscription.created",
65
+ SubscriptionUpdated = "subscription.updated",
66
+ SubscriptionCancelled = "subscription.cancelled",
67
+ SubscriptionRenewed = "subscription.renewed",
68
+ SubscriptionFailed = "subscription.failed",
69
+ SubscriptionTrialStarted = "subscription.trial_started",
70
+ SubscriptionTrialEnded = "subscription.trial_ended",
71
+ PaymentLimitsUpdated = "payment_limits.updated",
72
+ PaymentLimitsExceeded = "payment_limits.exceeded",
73
+ ProviderConfigUpdated = "provider.config_updated",
74
+ ProviderMaintenanceStarted = "provider.maintenance_started",
75
+ ProviderMaintenanceEnded = "provider.maintenance_ended",
76
+ ComplianceCheckRequired = "compliance.check_required",
77
+ ComplianceCheckPassed = "compliance.check_passed",
78
+ ComplianceCheckFailed = "compliance.check_failed",
79
+ AuditTrailCreated = "audit.trail_created",
80
+ RegulatoryReportGenerated = "regulatory.report_generated"
81
+ }
82
+ /**
83
+ * Payment event categories for organization and routing.
84
+ */
85
+ export declare enum PAYMENTEVENTCATEGORY {
86
+ TRANSACTION = "transaction",
87
+ REFUND = "refund",
88
+ PROVIDER = "provider",
89
+ SECURITY = "security",
90
+ COMPLIANCE = "compliance",
91
+ FINANCIAL = "financial",
92
+ SUBSCRIPTION = "subscription",
93
+ SYSTEM = "system",
94
+ AUDIT = "audit"
95
+ }
96
+ /**
97
+ * Error categories for payment events.
98
+ */
99
+ export declare enum PAYMENTERRORCATEGORY {
100
+ UserError = "user_error",// User input or action errors
101
+ ProviderError = "provider_error",// Payment provider errors
102
+ SystemError = "system_error",// Internal system errors
103
+ NetworkError = "network_error",// Network connectivity errors
104
+ FraudError = "fraud_error",// Fraud detection errors
105
+ ComplianceError = "compliance_error",// Regulatory compliance errors
106
+ LimitError = "limit_error",// Limit exceeded errors
107
+ ConfigurationError = "configuration_error",// Configuration errors
108
+ TimeoutError = "timeout_error",// Timeout errors
109
+ ValidationError = "validation_error"
110
+ }
@@ -0,0 +1,4 @@
1
+ export * from './enums';
2
+ export type * from './types';
3
+ export type * from './emitter';
4
+ export * from './unified-event';
@@ -0,0 +1,151 @@
1
+ import type { PAYMENTMETHOD, PAYMENTPROVIDERTYPE, PAYMENTSTATUS, PRODUCTTYPE, USERTYPE } from '../provider';
2
+ import type { FeeBreakdown, Money } from '../transaction';
3
+ import type { PAYMENTERRORCATEGORY, PAYMENTEVENTCATEGORY, PAYMENTEVENTTYPE } from './enums';
4
+ /**
5
+ * Core payment event interface that extends the base Event interface
6
+ * from @plyaz/events while adding payment-specific data and context.
7
+ */
8
+ export interface PaymentEvent extends Event {
9
+ /** Payment-specific event type */
10
+ type: PAYMENTEVENTTYPE;
11
+ /** Payment event payload with business data */
12
+ payload: PaymentEventPayload;
13
+ /** Event metadata for processing and routing */
14
+ metadata: PaymentEventMetadata;
15
+ }
16
+ /**
17
+ * Comprehensive payment event payload containing all relevant business
18
+ * data for the event. The payload structure adapts based on event type
19
+ * while maintaining common fields for consistency.
20
+ */
21
+ export interface PaymentEventPayload<TProviderMetadata extends Record<string, string | number | boolean | object | null> = Record<string, string | number | boolean | object | null>, TEventSpecificData extends Record<string, string | number | boolean | object | null> = Record<string, string | number | boolean | object | null>> {
22
+ /** Transaction ID related to this event (always present) */
23
+ transactionId: string;
24
+ /** User ID who initiated or is affected by this event */
25
+ userId: string;
26
+ /** Type of user for business logic and permissions */
27
+ userType: USERTYPE;
28
+ /** Payment amount and currency (for monetary events) */
29
+ amount?: Money;
30
+ /** Payment provider involved in this event */
31
+ provider: PAYMENTPROVIDERTYPE;
32
+ /** Current payment status after this event */
33
+ status: PAYMENTSTATUS;
34
+ /** Previous status before this event (for status changes) */
35
+ previousStatus?: PAYMENTSTATUS;
36
+ /** Payment method used or affected */
37
+ paymentMethod?: PAYMENTMETHOD;
38
+ /** Product information related to the payment */
39
+ productInfo?: {
40
+ productId: string;
41
+ productType: PRODUCTTYPE;
42
+ productTitle?: string;
43
+ };
44
+ /** Error information for failed events */
45
+ error?: PaymentEventError;
46
+ /** Financial information */
47
+ financialInfo?: {
48
+ fees?: FeeBreakdown;
49
+ settlementDate?: Date;
50
+ exchangeRate?: number;
51
+ originalAmount?: Money;
52
+ };
53
+ /** Provider-specific information */
54
+ providerInfo?: {
55
+ providerTransactionId?: string;
56
+ providerStatus?: string;
57
+ providerMetadata?: TProviderMetadata;
58
+ };
59
+ /** Security and fraud information */
60
+ securityInfo?: {
61
+ fraudScore?: number;
62
+ riskLevel?: 'low' | 'medium' | 'high';
63
+ securityFlags?: string[];
64
+ ipAddress?: string;
65
+ userAgent?: string;
66
+ };
67
+ /** Additional event-specific data */
68
+ eventSpecificData?: TEventSpecificData;
69
+ /** When the actual business event occurred (may differ from emission time) */
70
+ occurredAt: Date;
71
+ }
72
+ /**
73
+ * Payment event metadata for system processing, routing, and monitoring.
74
+ */
75
+ export interface PaymentEventMetadata {
76
+ /** Event processing priority (higher number = higher priority) */
77
+ priority: number;
78
+ /** Whether this event requires immediate processing */
79
+ urgent: boolean;
80
+ /** Event category for filtering and routing */
81
+ category: PAYMENTEVENTCATEGORY;
82
+ /** Tags for event classification and filtering */
83
+ tags: string[];
84
+ /** Correlation ID for tracking related events */
85
+ correlationId?: string;
86
+ /** Request ID that triggered this event */
87
+ requestId?: string;
88
+ /** Event processing configuration */
89
+ processingConfig?: {
90
+ /** Whether to persist this event */
91
+ persist: boolean;
92
+ /** Retention period for this event */
93
+ retentionDays?: number;
94
+ /** Whether to emit to external systems */
95
+ externalEmission: boolean;
96
+ /** Retry configuration for failed processing */
97
+ retryConfig?: EventRetryConfig;
98
+ };
99
+ /** Event source information */
100
+ source: {
101
+ /** Component that generated this event */
102
+ component: string;
103
+ /** Version of the component */
104
+ version?: string;
105
+ /** Environment where event was generated */
106
+ environment: string;
107
+ };
108
+ }
109
+ /**
110
+ * Error information interface for failed payment events.
111
+ */
112
+ export interface PaymentEventError {
113
+ /** Error code for programmatic handling */
114
+ code: string;
115
+ /** Human-readable error message */
116
+ message: string;
117
+ /** Error category for handling logic */
118
+ category: PAYMENTERRORCATEGORY;
119
+ /** Whether this error condition is retryable */
120
+ retryable: boolean;
121
+ /** Provider-specific error code if applicable */
122
+ providerErrorCode?: string;
123
+ /** Provider-specific error message */
124
+ providerErrorMessage?: string;
125
+ /** Additional error context and debugging information */
126
+ context?: {
127
+ /** Stack trace or error details */
128
+ details?: string;
129
+ /** Related transaction or operation IDs */
130
+ relatedIds?: string[];
131
+ /** Timestamp when error occurred */
132
+ errorTimestamp: Date;
133
+ /** Suggested resolution steps */
134
+ resolutionSteps?: string[];
135
+ };
136
+ }
137
+ /**
138
+ * Event retry configuration for failed event processing.
139
+ */
140
+ export interface EventRetryConfig {
141
+ /** Maximum number of retry attempts */
142
+ maxAttempts: number;
143
+ /** Initial retry delay in milliseconds */
144
+ initialDelayMs: number;
145
+ /** Backoff multiplier for exponential backoff */
146
+ backoffMultiplier: number;
147
+ /** Maximum retry delay in milliseconds */
148
+ maxDelayMs: number;
149
+ /** Whether to use jitter to avoid thundering herd */
150
+ useJitter: boolean;
151
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Event processing status enumeration.
3
+ */
4
+ export declare enum EVENTPROCESSINGSTATUS {
5
+ Received = "received",// Event received from provider
6
+ Validating = "validating",// Signature and format validation
7
+ Normalizing = "normalizing",// Converting to unified format
8
+ Normalized = "normalized",// Successfully normalized
9
+ Processing = "processing",// Business logic processing
10
+ Completed = "completed",// Processing completed successfully
11
+ Failed = "failed",// Processing failed
12
+ Retrying = "retrying",// Retrying after failure
13
+ Skipped = "skipped"
14
+ }
@@ -0,0 +1,2 @@
1
+ export type * from './types';
2
+ export * from './enums';