1 import { PickWith } from '@shared/typescript-utils'
2 import { ActorFollowModel } from '../../../models/actor/actor-follow'
5 MActorChannelAccountActor,
7 MActorDefaultAccountChannel,
8 MActorDefaultChannelId,
14 type Use<K extends keyof ActorFollowModel, M> = PickWith<ActorFollowModel, K, M>
16 // ############################################################################
18 export type MActorFollow = Omit<ActorFollowModel, 'ActorFollower' | 'ActorFollowing'>
20 // ############################################################################
22 export type MActorFollowFollowingHost =
24 Use<'ActorFollowing', MActorUsername & MActorHost>
26 // ############################################################################
28 // With actors or actors default
30 export type MActorFollowActors =
32 Use<'ActorFollower', MActor> &
33 Use<'ActorFollowing', MActor>
35 export type MActorFollowActorsDefault =
37 Use<'ActorFollower', MActorDefault> &
38 Use<'ActorFollowing', MActorDefault>
40 export type MActorFollowFull =
42 Use<'ActorFollower', MActorDefaultAccountChannel> &
43 Use<'ActorFollowing', MActorDefaultAccountChannel>
45 // ############################################################################
49 export type MActorFollowActorsDefaultSubscription =
51 Use<'ActorFollower', MActorDefault> &
52 Use<'ActorFollowing', MActorDefaultChannelId>
54 export type MActorFollowSubscriptions =
56 Use<'ActorFollowing', MActorChannelAccountActor>
58 // ############################################################################
60 // Format for API or AP object
62 export type MActorFollowFormattable =
63 Pick<MActorFollow, 'id' | 'score' | 'state' | 'createdAt' | 'updatedAt'> &
64 Use<'ActorFollower', MActorFormattable> &
65 Use<'ActorFollowing', MActorFormattable>