import type { DomainObject } from '../instantiation/DomainObject';
/**
 * omits all metadata values on a domain object
 *
 * relevance:
 * - often in change detection, metadata values are not relevant, this provides an easy way to omit them
 *
 * features:
 * - utilizes the `.metadata` property of the domain object definition to identify metadata keys
 *   - recall, the default is `id`, `uuid`, `createdAt`, `updatedAt`, `effectiveAt`
 * - recursive, applies omission deeply
 *
 * note:
 * - metadata is the most common readonly category, applicable to all domain objects
 * - for broader readonly (including non-metadata externally-resolved attributes), use `omitReadonly`
 */
export declare const omitMetadata: <T extends DomainObject<Record<string, any>>>(obj: T) => T;
