@plyaz/types 1.11.4 → 1.12.1
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.
- package/dist/api/index.cjs +1 -1
- package/dist/api/index.cjs.map +1 -1
- package/dist/auth/enums.d.ts +4 -0
- package/dist/auth/index.cjs +6 -0
- package/dist/auth/index.cjs.map +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.js +6 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/types.d.ts +34 -0
- package/dist/index.cjs +352 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +333 -1
- package/dist/index.js.map +1 -1
- package/dist/payments/currency/index.d.ts +37 -0
- package/dist/payments/events/emitter/types.d.ts +333 -0
- package/dist/payments/events/enums.d.ts +110 -0
- package/dist/payments/events/index.d.ts +4 -0
- package/dist/payments/events/types.d.ts +151 -0
- package/dist/payments/events/unified-event/enums.d.ts +14 -0
- package/dist/payments/events/unified-event/index.d.ts +2 -0
- package/dist/payments/events/unified-event/types.d.ts +346 -0
- package/dist/payments/gateways/index.d.ts +2 -0
- package/dist/payments/gateways/provider/index.d.ts +1 -0
- package/dist/payments/gateways/provider/types.d.ts +435 -0
- package/dist/payments/gateways/routings/enums.d.ts +87 -0
- package/dist/payments/gateways/routings/index.d.ts +2 -0
- package/dist/payments/gateways/routings/types.d.ts +512 -0
- package/dist/payments/index.cjs +351 -0
- package/dist/payments/index.cjs.map +1 -0
- package/dist/payments/index.d.ts +7 -0
- package/dist/payments/index.js +332 -0
- package/dist/payments/index.js.map +1 -0
- package/dist/payments/provider/adapter/index.d.ts +1 -0
- package/dist/payments/provider/adapter/types.d.ts +208 -0
- package/dist/payments/provider/core/index.d.ts +1 -0
- package/dist/payments/provider/core/types.d.ts +508 -0
- package/dist/payments/provider/index.d.ts +4 -0
- package/dist/payments/provider/payment-provider/index.d.ts +1 -0
- package/dist/payments/provider/payment-provider/types.d.ts +269 -0
- package/dist/payments/provider/provider-capability/enums.d.ts +116 -0
- package/dist/payments/provider/provider-capability/index.d.ts +1 -0
- package/dist/payments/request/enums.d.ts +19 -0
- package/dist/payments/request/index.d.ts +2 -0
- package/dist/payments/request/types.d.ts +221 -0
- package/dist/payments/service/index.d.ts +1 -0
- package/dist/payments/service/types.d.ts +48 -0
- package/dist/payments/transaction/index.d.ts +1 -0
- package/dist/payments/transaction/types.d.ts +120 -0
- package/package.json +6 -1
- package/dist/auth/config/types.d.ts +0 -67
- /package/dist/{auth/config → payments/events/emitter}/index.d.ts +0 -0
|
@@ -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,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
|
+
}
|