-import { ActivityCreate, VideoChannelObject } from '../../../../shared'
-import { DislikeObject } from '../../../../shared/models/activitypub/objects/dislike-object'
-import { VideoAbuseObject } from '../../../../shared/models/activitypub/objects/video-abuse-object'
-import { ViewObject } from '../../../../shared/models/activitypub/objects/view-object'
-import { logger, retryTransactionWrapper } from '../../../helpers'
-import { database as db } from '../../../initializers'
-import { AccountInstance } from '../../../models/account/account-interface'
-import { getOrCreateAccountAndServer } from '../account'
-import { forwardActivity } from '../send/misc'
-import { getVideoChannelActivityPubUrl } from '../url'
-import { videoChannelActivityObjectToDBAttributes } from './misc'
-
-async function processCreateActivity (activity: ActivityCreate) {
+import { isBlockedByServerOrAccount } from '@server/lib/blocklist'
+import { isRedundancyAccepted } from '@server/lib/redundancy'
+import { VideoModel } from '@server/models/video/video'
+import { ActivityCreate, CacheFileObject, PlaylistObject, VideoCommentObject, VideoObject, WatchActionObject } from '@shared/models'
+import { retryTransactionWrapper } from '../../../helpers/database-utils'
+import { logger } from '../../../helpers/logger'
+import { sequelizeTypescript } from '../../../initializers/database'
+import { APProcessorOptions } from '../../../types/activitypub-processor.model'
+import { MActorSignature, MCommentOwnerVideo, MVideoAccountLightBlacklistAllFiles } from '../../../types/models'
+import { Notifier } from '../../notifier'
+import { createOrUpdateCacheFile } from '../cache-file'
+import { createOrUpdateLocalVideoViewer } from '../local-video-viewer'
+import { createOrUpdateVideoPlaylist } from '../playlists'
+import { forwardVideoRelatedActivity } from '../send/shared/send-utils'
+import { resolveThread } from '../video-comments'
+import { getOrCreateAPVideo } from '../videos'
+
+async function processCreateActivity (options: APProcessorOptions<ActivityCreate>) {
+ const { activity, byActor } = options
+
+ // Only notify if it is not from a fetcher job
+ const notify = options.fromFetch !== true