import type { DomainObject } from '../instantiation/DomainObject'; /** * omits all readonly values on a domain object * * relevance: * - often when submitting user-settable values, readonly values should be omitted * - this provides an easy way to omit both metadata and explicit readonly properties * * features: * - utilizes the `.metadata` property to identify metadata keys (applicable to all domain objects) * - utilizes the `.readonly` property to identify explicit readonly keys (applicable to DomainEntity only) * - recursive, applies omission deeply * * note: * - both metadata and readonly are set by the persistence layer * - metadata is a special subset of readonly: describes the persistence of the object (not the object itself) * - readonly (non-metadata) describes intrinsic attributes of the object that the persistence layer sets * - readonly (non-metadata) only applies to DomainEntity, due to their nature * - for DomainEvent and DomainLiteral, this function behaves identically to omitMetadata */ export declare const omitReadonly: >>(obj: T) => T;