import type { DsrFormat, UserDataBundle } from "./dsr-types";

/**
 * GDPR Art. 15 (right of access) + Art. 20 (right to data portability).
 *
 * Implementations walk all Payload collections with `custom.subject` linkage,
 * segment rows by role (self/owner vs reference), and filter to fields marked
 * `exportable: true` in `custom.pii`.
 */
export interface IDataExport {
  /**
   * Export all personal data held for the given subject.
   *
   * @param subjectId - The subject's canonical ID (e.g. users.id).
   * @param format    - "json" for a plain JSON bundle; "json-ld" attaches the
   *                    @context from `contexts/user-data.jsonld`.
   */
  exportSubjectData(
    subjectId: string,
    format: DsrFormat,
  ): Promise<UserDataBundle>;
}
