export interface IDownloadApiClient {
    /** Download actual file chunk */
    downloadFileChunk: (request: DownloadFileChunkRequest) => Promise<ArrayBuffer>;
    /** Download actual file chunk directly from cloud */
    downloadFileChunkFromCloud: (request: DownloadFileChunkFromCloudRequest) => Promise<ArrayBuffer>;
    /** Get Asset cloud URL */
    getAssetCloudURL: (request: GetAssetCloudLinkRequest) => Promise<GetAssetCloudLinkResponse>;
    /** Get all files in download transaction */
    getFilesInDownloadTransaction: (request: GetFilesInDownloadTransactionRequest) => Promise<GetFilesInDownloadTransactionResponse>;
}
export type GetFilesInDownloadTransactionRequest = {
    transactionID: string;
};
export type GetFilesInDownloadTransactionResponse = {
    directoryName: string;
    files: FileToDownload[];
    transactionID: string;
};
export type FileToDownload = {
    /** Approximate file size in bytes (used when file to download is still waiting on Cortex processing) */
    approximativeSize: number;
    cloudURLs: string[];
    exactSize: number;
    hasRangeRequestSupport: boolean;
    index: number;
    path: string;
    state: FileToDownloadState;
    supportsDirectCloudURL: boolean;
};
export declare enum FileToDownloadState {
    Missing = "Missing",
    ReadyForDownload = "ReadyForDownload",
    WaitingServerProcessing = "WaitingServerProcessing"
}
export type DownloadFileChunkRequest = {
    fileIndex: number;
    fileSize: number;
    fromByte: number;
    onProgressHandler: (downloadedBytes: number) => void;
    toByte: number;
    transactionID: string;
};
export type DownloadFileChunkFromCloudRequest = {
    directCloudURL: string;
    fromByte: number;
    onProgressHandler: (downloadedBytes: number) => void;
    toByte: number;
};
export type GetAssetCloudLinkRequest = {
    fileIndex: number;
    fileSize: number;
    transactionID: string;
};
export type GetAssetCloudLinkResponse = {
    allCloudURLs: string[];
    cloudURL: string;
    fileExists: boolean;
    fileSize: number;
    supportsDirectCloudURL: boolean;
};
