import { UploadFiles } from 'express';
import memoizee from 'memoizee';
import { Transaction } from 'sequelize/types';
import { VideoModel } from '../models/video/video';
import { FilteredModelAttributes } from '../types';
import { MThumbnail, MUserId, MVideoFile, MVideoFullLight, MVideoTag, MVideoThumbnail, MVideoUUID } from '../types/models';
import { ThumbnailType, VideoCreate, VideoPrivacy, VideoState, VideoTranscodingPayload } from '../../shared/models';
import { CreateJobOptions } from './job-queue/job-queue';
declare function buildLocalVideoFromReq(videoInfo: VideoCreate, channelId: number): FilteredModelAttributes<VideoModel>;
declare function buildVideoThumbnailsFromReq(options: {
    video: MVideoThumbnail;
    files: UploadFiles;
    fallback: (type: ThumbnailType) => Promise<MThumbnail>;
    automaticallyGenerated?: boolean;
}): Promise<MThumbnail[]>;
declare function setVideoTags(options: {
    video: MVideoTag;
    tags: string[];
    transaction?: Transaction;
}): Promise<void>;
declare function buildOptimizeOrMergeAudioJob(options: {
    video: MVideoUUID;
    videoFile: MVideoFile;
    user: MUserId;
    isNewVideo?: boolean;
}): Promise<{
    type: "video-transcoding";
    priority: number;
    payload: import("../../shared/models").OptimizeTranscodingPayload | import("../../shared/models").MergeAudioTranscodingPayload;
}>;
declare function buildTranscodingJob(payload: VideoTranscodingPayload, options?: CreateJobOptions): Promise<{
    delay?: number;
    priority?: number;
    type: "video-transcoding";
    payload: VideoTranscodingPayload;
}>;
declare function getTranscodingJobPriority(user: MUserId): Promise<number>;
declare function buildMoveToObjectStorageJob(options: {
    video: MVideoUUID;
    previousVideoState: VideoState;
    isNewVideo?: boolean;
}): Promise<{
    type: "move-to-object-storage";
    payload: {
        videoUUID: string;
        isNewVideo: boolean;
        previousVideoState: VideoState;
    };
}>;
declare function getVideoDuration(videoId: number | string): Promise<{
    duration: number;
    isLive: boolean;
}>;
declare const getCachedVideoDuration: typeof getVideoDuration & memoizee.Memoized<typeof getVideoDuration>;
declare function addVideoJobsAfterUpdate(options: {
    video: MVideoFullLight;
    isNewVideo: boolean;
    nameChanged: boolean;
    oldPrivacy: VideoPrivacy;
}): Promise<import("bullmq").JobNode>;
export { buildLocalVideoFromReq, buildVideoThumbnailsFromReq, setVideoTags, buildOptimizeOrMergeAudioJob, buildTranscodingJob, buildMoveToObjectStorageJob, getTranscodingJobPriority, addVideoJobsAfterUpdate, getCachedVideoDuration };
//# sourceMappingURL=video.d.ts.map