import { ActorFollowModel } from '../../../models/activitypub/actor-follow' import { MActor, MActorChannelAccountActor, MActorDefault, MActorDefaultAccountChannel, MActorFormattable, MActorHost, MActorUsername } from './actor' import { PickWith } from '../../utils' import { ActorModel } from '@server/models/activitypub/actor' import { MChannelDefault } from '../video/video-channels' type Use = PickWith // ############################################################################ export type MActorFollow = Omit // ############################################################################ export type MActorFollowFollowingHost = MActorFollow & Use<'ActorFollowing', MActorUsername & MActorHost> // ############################################################################ // With actors or actors default export type MActorFollowActors = MActorFollow & Use<'ActorFollower', MActor> & Use<'ActorFollowing', MActor> export type MActorFollowActorsDefault = MActorFollow & Use<'ActorFollower', MActorDefault> & Use<'ActorFollowing', MActorDefault> export type MActorFollowFull = MActorFollow & Use<'ActorFollower', MActorDefaultAccountChannel> & Use<'ActorFollowing', MActorDefaultAccountChannel> // ############################################################################ // For subscriptions type SubscriptionFollowing = MActorDefault & PickWith export type MActorFollowActorsDefaultSubscription = MActorFollow & Use<'ActorFollower', MActorDefault> & Use<'ActorFollowing', SubscriptionFollowing> export type MActorFollowSubscriptions = MActorFollow & Use<'ActorFollowing', MActorChannelAccountActor> // ############################################################################ // Format for API or AP object export type MActorFollowFormattable = Pick & Use<'ActorFollower', MActorFormattable> & Use<'ActorFollowing', MActorFormattable>