import type { IValueObject } from '@core/shared/domain'; import { RacingDomainValidationError } from '../errors/RacingDomainError'; export class Points implements IValueObject<{ value: number }> { private constructor(private readonly value: number) {} get props(): { value: number } { return { value: this.value }; } static create(value: number): Points { if (value < 0) { throw new RacingDomainValidationError('Points cannot be negative'); } return new Points(value); } toNumber(): number { return this.value; } equals(other: IValueObject<{ value: number }>): boolean { return this.value === other.props.value; } }