import { type Archetype, type Props } from './Archetype'; /** * Define a value object in the common sense of DDD (Domain-Driven Design). * The properties passed to the constructor will be set with the provided value * and will only be accessible for reading. */ export declare class ValueObject> implements Archetype { [x: string]: any; protected constructor(props?: T); /** * Compare two value objects for equality, the basic implementation is as following: * > if other object is not defined return false * > if this object and other object are not of the same type then return false * > if any of this object properties is not same as the same property on other object then return false * > otherwise return true * @param other the other archetype to compare * @returns true if the two value objects are same, false otherwise */ equals(other: T): boolean; static create

, Return extends ValueObject = ValueObject>(props?: P): Return; }