export class Money { private constructor( public readonly amount: number, public readonly currency: string = 'USDT', ) { if (amount < 0) { throw new Error('金额不能为负数'); } } static USDT(amount: number): Money { return new Money(amount, 'USDT'); } static zero(): Money { return new Money(0, 'USDT'); } add(other: Money): Money { if (this.currency !== other.currency) { throw new Error('货币类型不匹配'); } return new Money(this.amount + other.amount, this.currency); } subtract(other: Money): Money { if (this.currency !== other.currency) { throw new Error('货币类型不匹配'); } return new Money(Math.max(0, this.amount - other.amount), this.currency); } multiply(factor: number): Money { return new Money(this.amount * factor, this.currency); } equals(other: Money): boolean { return this.amount === other.amount && this.currency === other.currency; } isZero(): boolean { return this.amount === 0; } isGreaterThan(other: Money): boolean { return this.amount > other.amount; } }