import { Activity, ActivityPubActor, ActivityPubOrderedCollection } from '@peertube/peertube-models' import { Awaitable } from '@peertube/peertube-typescript-utils' import { MUserDefault } from '@server/types/models/user/user.js' import { Readable } from 'stream' export type ExportResult = { json: T[] | T staticFiles: { archivePath: string createrReadStream: () => Promise }[] activityPub?: ActivityPubActor | ActivityPubOrderedCollection activityPubOutbox?: Omit[] } type ActivityPubFilenames = { likes: string dislikes: string outbox: string following: string account: string } export abstract class AbstractUserExporter { protected user: MUserDefault protected activityPubFilenames: ActivityPubFilenames protected relativeStaticDirPath: string constructor (options: { user: MUserDefault activityPubFilenames: ActivityPubFilenames relativeStaticDirPath?: string }) { this.user = options.user this.activityPubFilenames = options.activityPubFilenames this.relativeStaticDirPath = options.relativeStaticDirPath } getActivityPubFilename () { return null } abstract export (): Awaitable> }