UNPKG

anon-identity

Version:

Decentralized identity framework with DIDs, Verifiable Credentials, and privacy-preserving selective disclosure

138 lines 4.19 kB
import { AgentActivity, ActivityQuery } from './types'; import { ActivitySearchService } from './activity-search-service'; import { ActivityExporter, ExportFormat, AuditProof } from './activity-exporter'; import { ActivityIndex } from './activity-index'; import { IPFSActivityStorage } from './ipfs-activity-storage'; export interface ArchivalPolicy { id: string; name: string; description: string; retentionPeriod: number; archiveAfter: number; autoDelete: boolean; compressionEnabled: boolean; encryptionRequired: boolean; complianceStandard?: 'gdpr' | 'hipaa' | 'sox' | 'iso27001'; triggers: ArchivalTrigger[]; } export interface ArchivalTrigger { type: 'time' | 'size' | 'count' | 'compliance'; condition: any; action: 'archive' | 'delete' | 'export' | 'notify'; } export interface ArchivalRule { agentDID?: string; parentDID?: string; serviceDID?: string; activityTypes?: string[]; policy: ArchivalPolicy; priority: number; active: boolean; } export interface ArchivalRecord { id: string; originalActivityIds: string[]; archiveDate: Date; policy: string; location: string; checksum: string; proof: AuditProof; metadata: { totalActivities: number; dateRange: { start: Date; end: Date; }; format: ExportFormat; compressed: boolean; encrypted: boolean; }; } export interface DataRetentionConfig { defaultRetentionDays: number; maxRetentionDays: number; complianceMode: boolean; auditLogging: boolean; autoArchival: boolean; notificationEnabled: boolean; warningDays: number; } export interface GDPRComplianceInfo { dataSubject: string; processingBasis: 'consent' | 'contract' | 'legal_obligation' | 'vital_interests' | 'public_task' | 'legitimate_interests'; categories: string[]; recipients: string[]; retentionPeriod: string; rightsInformed: boolean; consentWithdrawable: boolean; } export declare class ActivityArchivalService { private searchService; private exporter; private index; private ipfsStorage?; private config; private policies; private rules; private archivalRecords; private gdprRecords; constructor(searchService: ActivitySearchService, exporter: ActivityExporter, index: ActivityIndex, ipfsStorage?: IPFSActivityStorage, config?: Partial<DataRetentionConfig>); /** * Add archival policy */ addPolicy(policy: ArchivalPolicy): void; /** * Add archival rule */ addRule(rule: ArchivalRule): void; /** * Archive activities based on criteria */ archiveActivities(query: ActivityQuery, policyId: string, options?: { deleteOriginals?: boolean; createProof?: boolean; encryptionKey?: Uint8Array; }): Promise<ArchivalRecord>; /** * Restore activities from archive */ restoreActivities(archivalRecordId: string): Promise<AgentActivity[]>; /** * Delete expired activities based on retention policies */ deleteExpiredActivities(): Promise<{ deleted: number; archived: number; warned: number; }>; /** * Register GDPR compliance information */ registerGDPRCompliance(parentDID: string, info: GDPRComplianceInfo): void; /** * Handle GDPR data subject request (right to be forgotten) */ handleGDPRDataDeletion(parentDID: string): Promise<{ activitiesDeleted: number; archivesDeleted: number; }>; /** * Generate data retention report */ generateRetentionReport(): Promise<{ totalActivities: number; activitiesByAge: Record<string, number>; archivalRecords: number; upcomingExpirations: number; complianceStatus: string; }>; private initializeDefaultPolicies; private startArchivalScheduler; private deleteActivitiesFromIndex; private storeInIPFS; private retrieveFromIPFS; private deleteArchive; private sendExpirationWarning; private generateId; } //# sourceMappingURL=activity-archival-service.d.ts.map