export { PaymentsModule } from './payments.module';

// Repositories
export { ESCROW_REPOSITORY, IEscrowRepository } from './domain/repositories/escrow.repository';
export { ORDER_REPOSITORY, IOrderRepository } from './domain/repositories/order.repository';
export { PAYMENT_REPOSITORY, IPaymentRepository } from './domain/repositories/payment.repository';

// Gateway
export { PAYMENT_GATEWAY_FACTORY, IPaymentGatewayFactory } from './infrastructure/services/payment-gateway.interface';

// Commands
export { CreatePaymentCommand } from './application/commands/create-payment/create-payment.command';
export type { CreatePaymentResult } from './application/commands/create-payment/create-payment.handler';

// Domain Events — Payment
export { PaymentCompletedEvent } from './domain/events/payment-completed.event';
export { PaymentFailedEvent } from './domain/events/payment-failed.event';
export { PaymentRefundedEvent } from './domain/events/payment-refunded.event';
export { BankTransferConfirmedEvent } from './domain/events/bank-transfer-confirmed.event';

// Domain Events — Order
export { OrderCreatedEvent } from './domain/events/order-created.event';
export { OrderCancelledEvent } from './domain/events/order-cancelled.event';
export { OrderPaidEvent } from './domain/events/order-paid.event';

// Domain Events — Escrow
export { EscrowDisputedEvent } from './domain/events/escrow-disputed.event';
export { EscrowHeldEvent } from './domain/events/escrow-held.event';
export { EscrowReleasedEvent } from './domain/events/escrow-released.event';
