/** * Domain Primitive is an object that contains only a single value */ export type Primitives = string | number | boolean; export interface DomainPrimitive { value: T; } type ValueObjectProps = T extends Primitives | Date ? DomainPrimitive : T; export declare abstract class ValueObject { protected readonly props: ValueObjectProps; constructor(props: ValueObjectProps); protected abstract validate(props: ValueObjectProps): void; static isValueObject(obj: unknown): obj is ValueObject; /** * Check if two Value Objects are equal. Checks structural equality. * @param vo ValueObject */ equals(vo?: ValueObject): boolean; /** * Unpack a value object to get its raw properties */ unpack(): T; private checkIfEmpty; private isDomainPrimitive; } export {}; //# sourceMappingURL=value-object.base.d.ts.map