import type { CrossPlatformFile as File } from '../../types/File';
import type { AuthService } from '../Auth';
import type { LoggerService } from '../Logger';
import type { StorageNodeSelectorService } from '../StorageNodeSelector';
export declare type StorageServiceConfigInternal = {
    /**
     * Logger service, defaults to console
     */
    logger: LoggerService;
};
export declare type StorageServiceConfig = Partial<StorageServiceConfigInternal> & {
    /**
     * The StorageNodeSelector service used to get the relevant storage node for content
     */
    storageNodeSelector: StorageNodeSelectorService;
};
export declare type ProgressCB = (loaded: number, total: number) => void;
export declare type FileTemplate = 'audio' | 'img_square' | 'img_backdrop';
export declare type StorageService = {
    uploadFile: ({ file, onProgress, template, options }: {
        file: File;
        onProgress?: ProgressCB;
        template: FileTemplate;
        options?: {
            [key: string]: string;
        };
    }) => Promise<UploadResponse>;
    editFile: ({ uploadId, data, auth }: {
        uploadId: string;
        data: {
            [key: string]: string;
        };
        auth: AuthService;
    }) => Promise<UploadResponse>;
};
export declare type ProcessingStatus = 'new' | 'busy' | 'done' | 'error' | 'retranscode_preview' | 'busy_retranscode_preview' | 'error_retranscode_preview';
export declare type UploadResponse = {
    id: string;
    status: ProcessingStatus;
    results: {
        [key: string]: string;
    };
    probe: {
        format: {
            duration: string;
        };
    };
};
