import 'reflect-metadata'; import { ChroniclePropertyDecorator } from '../types/propertyDecoratorMetadata.js'; /** * Decorator that marks a property as the compliance subject - the natural person whose Personal * Identifiable Information (PII) a read model or event carries. The subject selects which * encryption key protects that PII, and which key a manual release operation must use. * * Mirrors the .NET client's `SubjectAttribute`. When no property is decorated, resolvers fall * back to the `id` property by convention for read models, or to the event source identifier * for event appends. An explicit append subject option overrides the event annotation. * * @returns A property decorator. * * @example * ```typescript * @fromEvent(EmployeeHired) * class Employee { * @subject() * personId: string = ''; * * @pii('Employee social security number') * ssn: string = ''; * } * ``` */ export declare function subject(): ChroniclePropertyDecorator; /** * Checks whether a property has been decorated with @subject. * @param target - The class prototype. * @param propertyKey - The property name. * @returns True if the property has the @subject decorator; false otherwise. */ export declare function hasSubjectMetadata(target: object, propertyKey: string): boolean; /** * Gets the name of the property decorated with @subject on a type, if any. * @param type - The type constructor to inspect. * @returns The decorated property name, or undefined when no property is decorated. */ export declare function getSubjectPropertyName(type: Function): string | undefined; //# sourceMappingURL=subject.d.ts.map