import type { CrossPlatformFile as File } from '../../types/File';
import type { AuthService } from '../Auth';
import type { FileTemplate, ProgressCB, StorageService, StorageServiceConfig, UploadResponse } from './types';
export declare class Storage implements StorageService {
    /**
     * Configuration passed in by consumer (with defaults)
     */
    private readonly config;
    private readonly storageNodeSelector;
    private readonly logger;
    constructor(config: StorageServiceConfig);
    /**
     * Upload a file on content nodes
     * @param uploadId
     * @param data
     * @param auth
     * @returns
     */
    editFile({ uploadId, data, auth }: {
        uploadId: string;
        data: {
            [key: string]: string;
        };
        auth: AuthService;
    }): Promise<UploadResponse>;
    /**
     * Upload a file to a content node
     * @param file
     * @param onProgress
     * @param template
     * @param options
     * @returns
     */
    uploadFile({ file, onProgress, template, options }: {
        file: File;
        onProgress?: ProgressCB;
        template: FileTemplate;
        options?: {
            [key: string]: string;
        };
    }): Promise<UploadResponse>;
    /**
     * Works for both track transcode and image resize jobs
     * @param id ID of the transcode/resize job
     * @param maxPollingMs millis to stop polling and error if job is not done
     * @returns successful job info, or throws error if job fails / times out
     */
    private pollProcessingStatus;
    /**
     * Gets the task progress given the task type and id associated with the job
     * @param id the id of the transcoding or resizing job
     * @returns the status, and the success or failed response if the job is complete
     */
    private getProcessingStatus;
}
