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