namespace PrivaPub.ClientModels.User { // A persona's archive (owner decision 2026-10-07): made for it to take away, in Mastodon's account-archive layout, and // restored into it. States: none, queued, running, ready (export) or done (import), failed, stopped. public class ViewPersonaArchive { public string ExportState { get; set; } public DateTime? ExportAskedAt { get; set; } public DateTime? ExportReadyAt { get; set; } public DateTime? ExportExpiresAt { get; set; } public long ExportBytes { get; set; } public string ExportError { get; set; } public string ImportState { get; set; } public DateTime? ImportAskedAt { get; set; } public DateTime? ImportEndedAt { get; set; } public List ImportParts { get; set; } = []; public long ImportDone { get; set; } public long ImportTotal { get; set; } public Dictionary ImportCounts { get; set; } = [];//what was imported and what skipped, by why public string ImportError { get; set; } public string ImportFrom { get; set; }//the archive's actor public bool ImportSameActor { get; set; } } // the parts of an archive to import: posts (with their media), profile, follows, blocks, mutes, domainblocks, lists, // bookmarks, filters, tags, notificationpolicy, pins; and only when asked, located, scheduled, likes (which tell their // authors) public class ImportPersonaArchiveForm { public string UploadId { get; set; } public List Parts { get; set; } = []; } public class ViewArchiveTicket { public string Url { get; set; } public DateTime ExpiresAt { get; set; } public long Bytes { get; set; } } public class ViewArchiveUpload { public string Id { get; set; } public long Received { get; set; } public long ChunkBytes { get; set; } } }