import memoizee from 'memoizee';
import { Model } from 'sequelize-typescript';
import { VideoFileModel } from './video-file';
import { MStreamingPlaylist, MVideo } from '../../types/models';
import { VideoStorage } from '../../../shared/models';
import { AttributesOnly } from '../../../shared/typescript-utils';
import { VideoStreamingPlaylistType } from '../../../shared/models/videos/video-streaming-playlist.type';
import { VideoRedundancyModel } from '../redundancy/video-redundancy';
import { VideoModel } from './video';
export declare class VideoStreamingPlaylistModel extends Model<Partial<AttributesOnly<VideoStreamingPlaylistModel>>> {
    createdAt: Date;
    updatedAt: Date;
    type: VideoStreamingPlaylistType;
    playlistFilename: string;
    playlistUrl: string;
    p2pMediaLoaderInfohashes: string[];
    p2pMediaLoaderPeerVersion: number;
    segmentsSha256Filename: string;
    segmentsSha256Url: string;
    videoId: number;
    storage: VideoStorage;
    Video: VideoModel;
    VideoFiles: VideoFileModel[];
    RedundancyVideos: VideoRedundancyModel[];
    static doesInfohashExistCached: typeof VideoStreamingPlaylistModel.doesInfohashExist & memoizee.Memoized<typeof VideoStreamingPlaylistModel.doesInfohashExist>;
    static doesInfohashExist(infoHash: string): Promise<boolean>;
    static buildP2PMediaLoaderInfoHashes(playlistUrl: string, files: unknown[]): string[];
    static listByIncorrectPeerVersion(): Promise<VideoStreamingPlaylistModel[]>;
    static loadWithVideo(id: number): Promise<VideoStreamingPlaylistModel>;
    static loadHLSPlaylistByVideo(videoId: number): Promise<MStreamingPlaylist>;
    static loadOrGenerate(video: MVideo): Promise<MStreamingPlaylist & {
        videoId: any;
        Video: MVideo;
    }>;
    static doesOwnedHLSPlaylistExist(videoUUID: string): Promise<boolean>;
    assignP2PMediaLoaderInfoHashes(video: MVideo, files: unknown[]): void;
    getMasterPlaylistUrl(video: MVideo): string;
    getSha256SegmentsUrl(video: MVideo): string;
    getStringType(): "hls" | "unknown";
    getTrackerUrls(baseUrlHttp: string, baseUrlWs: string): string[];
    hasSameUniqueKeysThan(other: MStreamingPlaylist): boolean;
    withVideo(video: MVideo): this & {
        Video: MVideo;
    };
    private getMasterPlaylistStaticPath;
    private getSha256SegmentsStaticPath;
}
//# sourceMappingURL=video-streaming-playlist.d.ts.map