+import { Transaction } from 'sequelize/types'
+import { Redis } from './redis'
+import { Emailer } from './emailer'
+import { MAccountDefault, MActorDefault, MChannelActor } from '../typings/models'
+import { MUser, MUserDefault, MUserId } from '../typings/models/user'
+import { getAccountActivityPubUrl } from './activitypub/url'
+
+type ChannelNames = { name: string, displayName: string }
+
+async function createUserAccountAndChannelAndPlaylist (parameters: {
+ userToCreate: MUser
+ userDisplayName?: string
+ channelNames?: ChannelNames
+ validateUser?: boolean
+}): Promise<{ user: MUserDefault, account: MAccountDefault, videoChannel: MChannelActor }> {
+ const { userToCreate, userDisplayName, channelNames, validateUser = true } = parameters