import { Transaction } from 'sequelize';
import { Model } from 'sequelize-typescript';
import { MVideo, MVideoCaption, MVideoCaptionFormattable, MVideoCaptionVideo } from '../../types/models';
import { AttributesOnly } from '../../../shared/typescript-utils';
import { VideoCaption } from '../../../shared/models/videos/caption/video-caption.model';
import { VideoModel } from './video';
export declare enum ScopeNames {
    WITH_VIDEO_UUID_AND_REMOTE = "WITH_VIDEO_UUID_AND_REMOTE"
}
export declare class VideoCaptionModel extends Model<Partial<AttributesOnly<VideoCaptionModel>>> {
    createdAt: Date;
    updatedAt: Date;
    language: string;
    filename: string;
    fileUrl: string;
    videoId: number;
    Video: VideoModel;
    static removeFiles(instance: VideoCaptionModel, options: any): Promise<any>;
    static loadByVideoIdAndLanguage(videoId: string | number, language: string, transaction?: Transaction): Promise<MVideoCaptionVideo>;
    static loadWithVideoByFilename(filename: string): Promise<MVideoCaptionVideo>;
    static insertOrReplaceLanguage(caption: MVideoCaption, transaction: Transaction): Promise<VideoCaptionModel>;
    static listVideoCaptions(videoId: number, transaction?: Transaction): Promise<MVideoCaptionVideo[]>;
    static getLanguageLabel(language: string): string;
    static deleteAllCaptionsOfRemoteVideo(videoId: number, transaction: Transaction): Promise<number>;
    static generateCaptionName(language: string): string;
    isOwned(): boolean;
    toFormattedJSON(this: MVideoCaptionFormattable): VideoCaption;
    getCaptionStaticPath(this: MVideoCaption): string;
    removeCaptionFile(this: MVideoCaption): Promise<void>;
    getFileUrl(video: MVideo): string;
    isEqual(this: MVideoCaption, other: MVideoCaption): boolean;
}
//# sourceMappingURL=video-caption.d.ts.map