import { MantarayNode } from "../../handlers/mantaray";
import { Video } from "../../schemas/video";
import type { BatchId, BeeClient, EthAddress, Reference } from "../../clients";
import type { PlaylistDetails, PlaylistDetailsRaw, PlaylistPreview, PlaylistPreviewRaw, PlaylistType } from "../../schemas/playlist";
interface PlaylistBuilderLoadOptions {
    beeClient: BeeClient;
    signal?: AbortSignal;
}
interface PlaylistBuilderSaveOptions {
    beeClient: BeeClient;
    batchId: BatchId;
    signal?: AbortSignal;
}
export declare const PLAYLIST_PREVIEW_META_PATH = "preview";
export declare const PLAYLIST_DETAILS_META_PATH = "details";
export declare class PlaylistBuilder {
    reference: Reference;
    previewMeta: PlaylistPreviewRaw;
    detailsMeta: PlaylistDetailsRaw;
    node: MantarayNode;
    private queue;
    private playlistPassword?;
    private encryptedDetails?;
    constructor();
    initialize(reference: Reference, ownerAddress: EthAddress, previewMeta?: PlaylistPreview, detailsMeta?: PlaylistDetails): void;
    loadNode(opts: PlaylistBuilderLoadOptions): Promise<void>;
    saveNode(opts: PlaylistBuilderSaveOptions): Promise<Reference>;
    get isEncrypted(): boolean;
    updateName(name: string, type?: "preview" | "details"): void;
    updateType(type: PlaylistType): void;
    updatePasswordHint(passwordHint: string): void;
    updateDescription(description: string): void;
    updateThumb(video: Video): void;
    addVideos(videosToAdd: Video[], publishAt?: Date): void;
    replaceVideo(oldReference: Reference, newVideo: Video): void;
    removeVideos(videoRefsToRemove: Reference[]): void;
    setEncryptionPassword(password: string): void;
    updateNode(): void;
    private enqueueData;
}
export {};
//# sourceMappingURL=builder.d.ts.map