///
import { DataSource } from 'typeorm';
import { URL } from 'url';
import { AbstractObjectStorageProvider, CompleteUploadRequest, ObjectStorageObject, RefreshSignedUrlsRequest, SignedUploadUrl } from '.';
export type ObjectCreateRequest = {
contentLength: number;
contentType: string;
fileName: string;
/**
* Organization that owns the file.
*/
organization: {
id: string;
};
/**
* User who uploaded the file.
*/
uploadedBy?: {
id: string;
};
/**
* Date used in the object key.
* @default new Date()
* */
date?: Date;
/**
* External ID for the object.
*/
externalId?: string;
};
export type ObjectCreateFromUrlRequest = {
source: URL | File;
} & Omit;
export declare class ObjectStorageService {
private dataSource;
private objectStorageProvider;
objectRepo: import("typeorm").Repository;
constructor(dataSource: DataSource, objectStorageProvider: AbstractObjectStorageProvider);
getKeyForFile({ organization, date, fileName, }: Pick): string;
createObject(file: ObjectCreateRequest): Promise<{
object: ObjectStorageObject;
upload: import("./AbstractObjectStorageProvider").Upload;
}>;
completeUpload(objectId: string, completion: CompleteUploadRequest): Promise;
refreshUploadUrls(objectId: string, request: RefreshSignedUrlsRequest): Promise;
urlOrFileToFile(sourceUrlOrBuffer: URL | File): Promise;
uploadFileFromUrl(file: ObjectCreateFromUrlRequest): Promise;
}