namespace CashLineERP.Contracts.Privacy;

public sealed record PrivacyGovernanceResponse(
    IReadOnlyCollection<PrivacyNoticeResponse> Notices,
    IReadOnlyCollection<ConsentPurposeResponse> ConsentPurposes,
    IReadOnlyCollection<DataClassificationRuleResponse> DataClassificationRules,
    IReadOnlyCollection<SensitiveFieldMaskingRuleResponse> MaskingRules,
    IReadOnlyCollection<ThirdPartySharingRuleResponse> ThirdPartySharingRules,
    IReadOnlyCollection<PrivacyReadinessControlResponse> ReadinessControls);

public sealed record PrivacyNoticeResponse(
    string SubjectTypeCode,
    string NoticeCode,
    string Version,
    string LanguageCode,
    string Title,
    string Summary,
    bool RequiresExplicitAcceptance);

public sealed record ConsentPurposeResponse(
    string PurposeCode,
    string PurposeName,
    string AppliesTo,
    bool RequiredForOnboarding,
    bool RequiredForFinance,
    bool AllowsThirdPartySharing);

public sealed record DataClassificationRuleResponse(
    string DataClassCode,
    string DataClassName,
    string Examples,
    string DefaultAccessRule,
    string RetentionRule,
    bool IsPersonalData,
    bool IsCommerciallySensitive);

public sealed record SensitiveFieldMaskingRuleResponse(
    string FieldCode,
    string FieldName,
    string MaskingPattern,
    string VisibleToRule);

public sealed record ThirdPartySharingRuleResponse(
    string PartnerTypeCode,
    string SharingStageCode,
    string DefaultRule,
    string RequiredControl);

public sealed record PrivacyReadinessControlResponse(
    string ControlCode,
    string ControlName,
    string MvpRequirement,
    string EnforcementPoint,
    string StatusCode);

