import AdVideo from "./objects/ad-video"; import FacebookAdsApi from "./api"; /** * Video uploader that can upload videos to adaccount **/ declare class VideoUploader { _session?: VideoUploadSession | null; constructor(); /** * Upload the given video file. * @param {AdVideo} video The AdVideo object that will be uploaded * @param {Boolean} [waitForEncoding] Whether to wait until encoding * is finished **/ upload(video: AdVideo, waitForEncoding: boolean): Record; } interface SlideshowSpec { images_urls: string[]; duration_ms: number; transition_ms: number; } declare class VideoUploadSession { _accountId: string; _api: FacebookAdsApi; _endOffset: number; _filePath?: string | null; _sessionId: string; _slideshowSpec?: SlideshowSpec | null; _startOffset: number; _startRequestManager: VideoUploadStartRequestManager; _transferRequestManager: VideoUploadTransferRequestManager; _finishRequestManager: VideoUploadFinishRequestManager; _video: AdVideo; _waitForEncoding: boolean; constructor(video: AdVideo, waitForEncoding?: boolean); start(): Promise>; getStartRequestContext(): VideoUploadRequestContext; getTransferRequestContext(): VideoUploadRequestContext; getFinishRequestContext(): VideoUploadRequestContext; } /** * Abstract class for request managers **/ declare class VideoUploadRequestManager { _api: FacebookAdsApi; constructor(api: FacebookAdsApi); sendRequest(context: VideoUploadRequestContext): Record; getParamsFromContext(context: VideoUploadRequestContext): Record; } declare class VideoUploadStartRequestManager extends VideoUploadRequestManager { /** * Send start request with the given context **/ sendRequest(context: VideoUploadRequestContext): Promise>; getParamsFromContext(context: VideoUploadRequestContext): Record; } declare class VideoUploadTransferRequestManager extends VideoUploadRequestManager { _startOffset: number; _endOffset: number; /** * Send transfer request with the given context **/ sendRequest(context: VideoUploadRequestContext): Promise>; } declare class VideoUploadFinishRequestManager extends VideoUploadRequestManager { /** * Send transfer request with the given context **/ sendRequest(context: VideoUploadRequestContext): Promise>; getParamsFromContext(context: VideoUploadRequestContext): Record; } /** * Upload request context that contains the param data **/ declare class VideoUploadRequestContext { _accountId: string; _fileName: string; _filePath: string; _fileSize: number; _name: string; _sessionId: string; _startOffset: number; _endOffset: number; _slideshowSpec: SlideshowSpec; _videoFileChunk: string; get accountId(): string; set accountId(accountId: string); get fileName(): string; set fileName(fileName: string); get filePath(): string; set filePath(filePath: string); get fileSize(): number; set fileSize(fileSize: number); get name(): string; set name(name: string); get sessionId(): string; set sessionId(sessionId: string); get startOffset(): number; set startOffset(startOffset: number); get endOffset(): number; set endOffset(endOffset: number); get slideshowSpec(): SlideshowSpec; set slideshowSpec(slideshowSpec: SlideshowSpec); get videoFileChunk(): string; set videoFileChunk(videoFileChunk: string); } declare class VideoUploadRequest { _params: Record; _files: Record; _api: FacebookAdsApi; constructor(api: FacebookAdsApi); /** * Send the current request **/ send(path: string | string[]): Record; setParams(params: Record, files?: Record): void; } declare class VideoEncodingStatusChecker { static waitUntilReady(api: FacebookAdsApi, videoId: number, interval: number, timeout: number): Promise; static getStatus(api: FacebookAdsApi, videoId: number): any; } export { VideoUploader, VideoUploadRequest, VideoEncodingStatusChecker }; export type { SlideshowSpec };