import { type PaymentType } from '@prisma/client'; import { type DomainEvent } from '@modules/shared'; /** * Emitted when an admin manually confirms a VN bank transfer payment. * * Carries enough metadata for downstream consumers (audit logging, * subscription activation, accounting) without requiring a re-read * of the payment aggregate. */ export class BankTransferConfirmedEvent implements DomainEvent { readonly eventName = 'payment.bank_transfer_confirmed'; readonly occurredAt = new Date(); constructor( public readonly aggregateId: string, public readonly userId: string, public readonly type: PaymentType, public readonly amountVND: bigint, public readonly confirmedBy: string, public readonly bankReference: string | null, ) {} }