import { BaseReader } from "../base-reader";
import type { Profile, Video, VideoDetailsRaw, VideoPreviewRaw, VideoRaw } from "../..";
import type { EthernaIndexClient, IndexVideo, IndexVideoManifest, Reference } from "../../clients";
import type { IndexVideoPreview } from "../../clients/index/types";
import type { VideoPreview } from "../../schemas/video";
import type { ReaderDownloadOptions, ReaderOptions } from "../base-reader";
interface VideoReaderOptions extends ReaderOptions {
    indexClient?: EthernaIndexClient;
    owner?: Profile;
    prefetchedVideo?: Video;
}
interface VideoReaderDownloadOptions extends ReaderDownloadOptions {
    mode: "preview" | "details" | "full";
    previewData?: VideoPreview;
}
export declare class VideoReader extends BaseReader<Video | null, string, VideoRaw | IndexVideo> {
    reference: Reference;
    indexReference?: string;
    private beeClient;
    private indexClient?;
    private prefetchedVideo?;
    constructor(reference: string, opts: VideoReaderOptions);
    download(opts: VideoReaderDownloadOptions): Promise<Video | null>;
    static indexVideoToRaw(video: IndexVideo): VideoRaw;
    static indexVideoPreviewToRaw(videoPreview: IndexVideoPreview | IndexVideo): VideoPreviewRaw;
    static emptyVideoPreview(): VideoPreviewRaw;
    static emptyVideoDetails(): VideoDetailsRaw;
    private fetchIndexVideo;
    private fetchSwarmVideo;
    static isValidatingManifest(manifest: IndexVideoManifest | null): boolean;
}
export {};
//# sourceMappingURL=reader.d.ts.map