import { Transaction } from 'sequelize/types';
import { ActivityPubActorType } from '../../shared/models/activitypub';
import { UserAdminFlag, UserRole } from '../../shared/models/users';
import { MAccountDefault, MChannelActor } from '../types/models';
import { MUser, MUserDefault, MUserId } from '../types/models/user';
declare type ChannelNames = {
    name: string;
    displayName: string;
};
declare function buildUser(options: {
    username: string;
    password: string;
    email: string;
    role?: UserRole;
    adminFlags?: UserAdminFlag;
    emailVerified: boolean | null;
    videoQuota?: number;
    videoQuotaDaily?: number;
    pluginAuth?: string;
}): MUser;
declare function createUserAccountAndChannelAndPlaylist(parameters: {
    userToCreate: MUser;
    userDisplayName?: string;
    channelNames?: ChannelNames;
    validateUser?: boolean;
}): Promise<{
    user: MUserDefault;
    account: MAccountDefault;
    videoChannel: MChannelActor;
}>;
declare function createLocalAccountWithoutKeys(parameters: {
    name: string;
    displayName?: string;
    userId: number | null;
    applicationId: number | null;
    t: Transaction | undefined;
    type?: ActivityPubActorType;
}): Promise<MAccountDefault>;
declare function createApplicationActor(applicationId: number): Promise<MAccountDefault>;
declare function sendVerifyUserEmail(user: MUser, isPendingEmail?: boolean): Promise<void>;
declare function getOriginalVideoFileTotalFromUser(user: MUserId): Promise<number>;
declare function getOriginalVideoFileTotalDailyFromUser(user: MUserId): Promise<number>;
declare function isAbleToUploadVideo(userId: number, newVideoSize: number): Promise<boolean>;
export { getOriginalVideoFileTotalFromUser, getOriginalVideoFileTotalDailyFromUser, createApplicationActor, createUserAccountAndChannelAndPlaylist, createLocalAccountWithoutKeys, sendVerifyUserEmail, isAbleToUploadVideo, buildUser };
//# sourceMappingURL=user.d.ts.map