import type { ISession } from '../session/types.js';
import type { UploadStagingDTO } from '@curvenote/common';
import type { SiteUploadRequest } from '@curvenote/blocks';
/**
 * POST an arbitrary upload request to the stage API. Does not scan session.sitePath().
 * Use this for single-file or custom folder uploads (e.g. uploadSingleFileToCdn).
 *
 * @param session
 * @param uploadRequest - { files: [{ path, content_type, md5, size }] }
 * @returns Staging DTO (cdnKey, cached_items, upload_items)
 */
export declare function stageWithRequest(session: ISession, uploadRequest: SiteUploadRequest): Promise<UploadStagingDTO>;
/**
 * Scans the project folder, gets the list of files to upload and then asked the
 * API to stage them. The response contains the cdnKey to use, and maps (keyed by md5)
 * of cached files and files that need to be uploaded.
 *
 * @param session
 * @returns cdnKey to be used for upload, cached and upload maps and a filtered files
 * listing containing only the files that need to be uploaded.
 */
export declare function stageUploads(session: ISession): Promise<{
    files: import("./types.js").FileInfo[];
    cdnKey: string;
    cached_items: import("@curvenote/common").UploadFileInfo[];
    upload_items: import("@curvenote/common").FileUploadResponse[];
}>;
//# sourceMappingURL=stage.d.ts.map