/** * Application Port: IPaymentGateway * * Defines interface for payment processing. * Infrastructure will provide mock or real implementation. */ import type { Money } from '../../domain/value-objects/Money'; export interface PaymentResult { success: boolean; transactionId?: string; error?: string; timestamp: Date; } export interface RefundResult { success: boolean; refundId?: string; error?: string; timestamp: Date; } export interface IPaymentGateway { /** * Process a payment */ processPayment( amount: Money, payerId: string, description: string, metadata?: Record ): Promise; /** * Refund a payment */ refund( originalTransactionId: string, amount: Money, reason: string ): Promise; /** * Verify payment status */ verifyPayment(transactionId: string): Promise; }