/**
 * GDPR Art. 18 (right to restriction of processing).
 *
 * Toggles and reads the `processingRestrictedAt` flag on the subject's user
 * record. When restricted, downstream use cases should call `isRestricted`
 * before processing personal data and short-circuit if true.
 *
 * Emits RESTRICT / UNRESTRICT audit entries on every state change.
 */
export interface IProcessingRestriction {
  /**
   * Grant or revoke processing restriction for the given subject.
   *
   * @param subjectId - The subject's canonical ID.
   * @param granted   - true to restrict processing; false to lift restriction.
   */
  setRestriction(subjectId: string, granted: boolean): Promise<void>;

  /**
   * Return whether processing is currently restricted for the given subject.
   *
   * @param subjectId - The subject's canonical ID.
   */
  isRestricted(subjectId: string): Promise<boolean>;
}
