import { PickWith, PickWithOpt } from '../../../../shared/typescript-utils';
import { VideoModel } from '../../../models/video/video';
import { MTrackerUrl } from '../server/tracker';
import { MUserVideoHistoryTime } from '../user/user-video-history';
import { MScheduleVideoUpdate } from './schedule-video-update';
import { MTag } from './tag';
import { MThumbnail } from './thumbnail';
import { MVideoBlacklist, MVideoBlacklistLight, MVideoBlacklistUnfederated } from './video-blacklist';
import { MVideoCaptionLanguage, MVideoCaptionLanguageUrl } from './video-caption';
import { MChannelAccountDefault, MChannelAccountLight, MChannelAccountSummaryFormattable, MChannelActor, MChannelFormattable, MChannelHost, MChannelUserId } from './video-channels';
import { MVideoFile, MVideoFileRedundanciesAll, MVideoFileRedundanciesOpt } from './video-file';
import { MVideoLive } from './video-live';
import { MStreamingPlaylistFiles, MStreamingPlaylistRedundancies, MStreamingPlaylistRedundanciesAll, MStreamingPlaylistRedundanciesOpt } from './video-streaming-playlist';
declare type Use<K extends keyof VideoModel, M> = PickWith<VideoModel, K, M>;
export declare type MVideo = Omit<VideoModel, 'VideoChannel' | 'Tags' | 'Thumbnails' | 'VideoPlaylistElements' | 'VideoAbuses' | 'VideoFiles' | 'VideoStreamingPlaylists' | 'VideoShares' | 'AccountVideoRates' | 'VideoComments' | 'VideoViews' | 'UserVideoHistories' | 'ScheduleVideoUpdate' | 'VideoBlacklist' | 'VideoImport' | 'VideoCaptions' | 'VideoLive' | 'Trackers'>;
export declare type MVideoId = Pick<MVideo, 'id'>;
export declare type MVideoUrl = Pick<MVideo, 'url'>;
export declare type MVideoUUID = Pick<MVideo, 'uuid'>;
export declare type MVideoImmutable = Pick<MVideo, 'id' | 'url' | 'uuid' | 'remote' | 'isOwned'>;
export declare type MVideoIdUrl = MVideoId & MVideoUrl;
export declare type MVideoFeed = Pick<MVideo, 'name' | 'uuid'>;
export declare type MVideoWithFile = MVideo & Use<'VideoFiles', MVideoFile[]> & Use<'VideoStreamingPlaylists', MStreamingPlaylistFiles[]>;
export declare type MVideoThumbnail = MVideo & Use<'Thumbnails', MThumbnail[]>;
export declare type MVideoIdThumbnail = MVideoId & Use<'Thumbnails', MThumbnail[]>;
export declare type MVideoWithFileThumbnail = MVideo & Use<'VideoFiles', MVideoFile[]> & Use<'Thumbnails', MThumbnail[]>;
export declare type MVideoThumbnailBlacklist = MVideo & Use<'Thumbnails', MThumbnail[]> & Use<'VideoBlacklist', MVideoBlacklistLight>;
export declare type MVideoTag = MVideo & Use<'Tags', MTag[]>;
export declare type MVideoWithSchedule = MVideo & PickWithOpt<VideoModel, 'ScheduleVideoUpdate', MScheduleVideoUpdate>;
export declare type MVideoWithCaptions = MVideo & Use<'VideoCaptions', MVideoCaptionLanguage[]>;
export declare type MVideoWithStreamingPlaylist = MVideo & Use<'VideoStreamingPlaylists', MStreamingPlaylistFiles[]>;
export declare type MVideoUserHistory = MVideo & Use<'UserVideoHistories', MUserVideoHistoryTime[]>;
export declare type MVideoWithBlacklistLight = MVideo & Use<'VideoBlacklist', MVideoBlacklistLight>;
export declare type MVideoAccountLight = MVideo & Use<'VideoChannel', MChannelAccountLight>;
export declare type MVideoWithRights = MVideo & Use<'VideoBlacklist', MVideoBlacklistLight> & Use<'VideoChannel', MChannelUserId>;
export declare type MVideoWithAllFiles = MVideo & Use<'VideoFiles', MVideoFile[]> & Use<'Thumbnails', MThumbnail[]> & Use<'VideoStreamingPlaylists', MStreamingPlaylistFiles[]>;
export declare type MVideoAccountLightBlacklistAllFiles = MVideo & Use<'VideoFiles', MVideoFile[]> & Use<'Thumbnails', MThumbnail[]> & Use<'VideoStreamingPlaylists', MStreamingPlaylistFiles[]> & Use<'VideoChannel', MChannelAccountLight> & Use<'VideoBlacklist', MVideoBlacklistLight>;
export declare type MVideoAccountDefault = MVideo & Use<'VideoChannel', MChannelAccountDefault>;
export declare type MVideoThumbnailAccountDefault = MVideo & Use<'Thumbnails', MThumbnail[]> & Use<'VideoChannel', MChannelAccountDefault>;
export declare type MVideoWithChannelActor = MVideo & Use<'VideoChannel', MChannelActor>;
export declare type MVideoWithHost = MVideo & Use<'VideoChannel', MChannelHost>;
export declare type MVideoFullLight = MVideo & Use<'Thumbnails', MThumbnail[]> & Use<'VideoBlacklist', MVideoBlacklistLight> & Use<'Tags', MTag[]> & Use<'VideoChannel', MChannelAccountLight> & Use<'UserVideoHistories', MUserVideoHistoryTime[]> & Use<'VideoFiles', MVideoFile[]> & Use<'ScheduleVideoUpdate', MScheduleVideoUpdate> & Use<'VideoStreamingPlaylists', MStreamingPlaylistFiles[]> & Use<'VideoLive', MVideoLive>;
export declare type MVideoAP = MVideo & Use<'Tags', MTag[]> & Use<'VideoChannel', MChannelAccountLight> & Use<'VideoStreamingPlaylists', MStreamingPlaylistFiles[]> & Use<'VideoCaptions', MVideoCaptionLanguageUrl[]> & Use<'VideoBlacklist', MVideoBlacklistUnfederated> & Use<'VideoFiles', MVideoFileRedundanciesOpt[]> & Use<'Thumbnails', MThumbnail[]> & Use<'VideoLive', MVideoLive>;
export declare type MVideoAPWithoutCaption = Omit<MVideoAP, 'VideoCaptions'>;
export declare type MVideoDetails = MVideo & Use<'VideoBlacklist', MVideoBlacklistLight> & Use<'Tags', MTag[]> & Use<'VideoChannel', MChannelAccountLight> & Use<'ScheduleVideoUpdate', MScheduleVideoUpdate> & Use<'Thumbnails', MThumbnail[]> & Use<'UserVideoHistories', MUserVideoHistoryTime[]> & Use<'VideoStreamingPlaylists', MStreamingPlaylistRedundancies[]> & Use<'VideoFiles', MVideoFileRedundanciesOpt[]> & Use<'Trackers', MTrackerUrl[]>;
export declare type MVideoForUser = MVideo & Use<'VideoChannel', MChannelAccountDefault> & Use<'ScheduleVideoUpdate', MScheduleVideoUpdate> & Use<'VideoBlacklist', MVideoBlacklistLight> & Use<'Thumbnails', MThumbnail[]>;
export declare type MVideoForRedundancyAPI = MVideo & Use<'VideoFiles', MVideoFileRedundanciesAll[]> & Use<'VideoStreamingPlaylists', MStreamingPlaylistRedundanciesAll[]>;
export declare type MVideoFormattable = MVideo & PickWithOpt<VideoModel, 'UserVideoHistories', MUserVideoHistoryTime[]> & Use<'VideoChannel', MChannelAccountSummaryFormattable> & PickWithOpt<VideoModel, 'ScheduleVideoUpdate', Pick<MScheduleVideoUpdate, 'updateAt' | 'privacy'>> & PickWithOpt<VideoModel, 'VideoBlacklist', Pick<MVideoBlacklist, 'reason'>> & PickWithOpt<VideoModel, 'VideoStreamingPlaylists', MStreamingPlaylistFiles[]> & PickWithOpt<VideoModel, 'VideoFiles', MVideoFile[]>;
export declare type MVideoFormattableDetails = MVideoFormattable & Use<'VideoChannel', MChannelFormattable> & Use<'Tags', MTag[]> & Use<'VideoStreamingPlaylists', MStreamingPlaylistRedundanciesOpt[]> & Use<'VideoFiles', MVideoFileRedundanciesOpt[]> & PickWithOpt<VideoModel, 'Trackers', MTrackerUrl[]>;
export {};
//# sourceMappingURL=video.d.ts.map