import { AccountModel } from '../../../models/account/account';
import { UserModel } from '../../../models/user/user';
import { MVideoPlaylist } from '..';
import { PickWith, PickWithOpt } from '../../../../shared/typescript-utils';
import { MAccount, MAccountDefault, MAccountDefaultChannelDefault, MAccountFormattable, MAccountId, MAccountIdActorId, MAccountUrl } from '../account';
import { MChannelFormattable } from '../video/video-channels';
import { MNotificationSetting, MNotificationSettingFormattable } from './user-notification-setting';
declare type Use<K extends keyof UserModel, M> = PickWith<UserModel, K, M>;
export declare type MUser = Omit<UserModel, 'Account' | 'NotificationSetting' | 'VideoImports' | 'OAuthTokens'>;
export declare type MUserQuotaUsed = MUser & {
    videoQuotaUsed?: number;
    videoQuotaUsedDaily?: number;
};
export declare type MUserId = Pick<UserModel, 'id'>;
export declare type MUserAccountId = MUser & Use<'Account', MAccountId>;
export declare type MUserAccountUrl = MUser & Use<'Account', MAccountUrl & MAccountIdActorId>;
export declare type MUserAccount = MUser & Use<'Account', MAccount>;
export declare type MUserAccountDefault = MUser & Use<'Account', MAccountDefault>;
export declare type MUserNotifSettingChannelDefault = MUser & Use<'NotificationSetting', MNotificationSetting> & Use<'Account', MAccountDefaultChannelDefault>;
export declare type MUserWithNotificationSetting = MUser & Use<'NotificationSetting', MNotificationSetting>;
export declare type MUserNotifSettingAccount = MUser & Use<'NotificationSetting', MNotificationSetting> & Use<'Account', MAccount>;
export declare type MUserDefault = MUser & Use<'NotificationSetting', MNotificationSetting> & Use<'Account', MAccountDefault>;
declare type MAccountWithChannels = MAccountFormattable & PickWithOpt<AccountModel, 'VideoChannels', MChannelFormattable[]>;
declare type MAccountWithChannelsAndSpecialPlaylists = MAccountWithChannels & PickWithOpt<AccountModel, 'VideoPlaylists', MVideoPlaylist[]>;
export declare type MUserFormattable = MUserQuotaUsed & Use<'Account', MAccountWithChannels> & PickWithOpt<UserModel, 'NotificationSetting', MNotificationSettingFormattable>;
export declare type MMyUserFormattable = MUserFormattable & Use<'Account', MAccountWithChannelsAndSpecialPlaylists>;
export {};
//# sourceMappingURL=user.d.ts.map