import { Observable } from 'rxjs/Observable'; import { AuthProvider } from '@kalamazoo/media-core'; import { MediaStore, UploadableFile, UploadController, MediaCollectionItemFullDetails, ResponseFileItem, MediaFileArtifacts, TouchFileDescriptor, TouchedFiles, UploadableFileUpfrontIds, FileState, GetFileOptions, MediaFile, MediaStoreCopyFileWithTokenParams } from '..'; import { Dimensions } from '../utils/getDimensionsFromBlob'; export declare type DataloaderMap = { [id: string]: DataloaderResult; }; export declare const getItemsFromKeys: (dataloaderKeys: DataloaderKey[], fileItems: ResponseFileItem[]) => DataloaderResult[]; interface DataloaderKey { id: string; collection?: string; } export interface SourceFile { id: string; collection?: string; authProvider: AuthProvider; } export interface CopyDestination extends MediaStoreCopyFileWithTokenParams { authProvider: AuthProvider; } declare type DataloaderResult = MediaCollectionItemFullDetails | undefined; export declare type ExternalUploadPayload = { uploadableFileUpfrontIds: UploadableFileUpfrontIds; dimensions: Dimensions; }; export interface FileFetcher { getFileState(id: string, options?: GetFileOptions): Observable; getArtifactURL(artifacts: MediaFileArtifacts, artifactName: keyof MediaFileArtifacts, collectionName?: string): Promise; touchFiles(descriptors: TouchFileDescriptor[], collection?: string): Promise; upload(file: UploadableFile, controller?: UploadController, uploadableFileUpfrontIds?: UploadableFileUpfrontIds): Observable; uploadExternal(url: string, collection?: string): Promise; downloadBinary(id: string, name?: string, collectionName?: string): Promise; getCurrentState(id: string, options?: GetFileOptions): Promise; copyFile(source: SourceFile, destination: CopyDestination): Promise; getFileBinaryURL(id: string, collectionName?: string): Promise; } export declare class FileFetcherImpl implements FileFetcher { private readonly mediaStore; private readonly dataloader; constructor(mediaStore: MediaStore); private batchLoadingFunc; getFileState(id: string, options?: GetFileOptions): Observable; getCurrentState(id: string, options?: GetFileOptions): Promise; getArtifactURL(artifacts: MediaFileArtifacts, artifactName: keyof MediaFileArtifacts, collectionName?: string): Promise; getFileBinaryURL(id: string, collectionName?: string): Promise; private createDownloadFileStream; touchFiles(descriptors: TouchFileDescriptor[], collection?: string): Promise; private generateUploadableFileUpfrontIds; uploadExternal(url: string, collection?: string): Promise; upload(file: UploadableFile, controller?: UploadController, uploadableFileUpfrontIds?: UploadableFileUpfrontIds): Observable; downloadBinary(id: string, name?: string, collectionName?: string): Promise; copyFile(source: SourceFile, destination: CopyDestination): Promise; } export {};