import { MonitoredAddress as PrismaMonitoredAddress } from '@prisma/client'; import { MonitoredAddress, MonitoredAddressProps } from '@/domain/aggregates/monitored-address'; import { ChainType, EvmAddress } from '@/domain/value-objects'; export class MonitoredAddressMapper { static toDomain(prisma: PrismaMonitoredAddress): MonitoredAddress { const props: MonitoredAddressProps = { id: prisma.id, chainType: ChainType.create(prisma.chainType), address: EvmAddress.fromUnchecked(prisma.address), accountSequence: prisma.accountSequence, userId: prisma.userId, isActive: prisma.isActive, createdAt: prisma.createdAt, updatedAt: prisma.updatedAt, }; return MonitoredAddress.reconstitute(props); } static toPersistence( domain: MonitoredAddress, ): Omit & { id?: bigint } { return { id: domain.id, chainType: domain.chainType.toString(), address: domain.address.lowercase, accountSequence: domain.accountSequence, userId: domain.userId, isActive: domain.isActive, }; } }