import type { FileInfo, FileReference, UploadProgressCallback } from "../types/file-upload";
import type { FileUploadURLResponse } from "@iblai/data-layer";
/**
 * Extract file information from File object
 */
export declare function getFileInfo(file: File): FileInfo;
/**
 * Request presigned S3 URL from backend
 * Note: This function should be called via the RTK Query mutation hook
 * This is a helper to show the data flow
 */
export declare function requestPresignedUrl(sessionId: string, file: File, getUploadUrlFn: (params: {
    org: string;
    userId: string;
    requestBody: {
        session_id: string;
        file_name: string;
        content_type: string;
        file_size: number;
    };
}) => Promise<FileUploadURLResponse>, org: string, userId: string): Promise<FileUploadURLResponse>;
/**
 * Upload file directly to S3 using presigned URL
 * Uses axios for cross-platform support (web + React Native)
 */
export declare function uploadToS3(presignedUrl: string, file: File, contentType: string, onProgress?: UploadProgressCallback): Promise<void>;
/**
 * Complete file upload flow:
 * 1. Request presigned URL
 * 2. Upload to S3
 * 3. Return file reference
 */
export declare function createFileReference(file: File, sessionId: string, getUploadUrlFn: (params: {
    org: string;
    userId: string;
    requestBody: {
        session_id: string;
        file_name: string;
        content_type: string;
        file_size: number;
    };
}) => Promise<FileUploadURLResponse>, org: string, userId: string, onProgress?: UploadProgressCallback): Promise<FileReference>;
/**
 * Upload multiple files and return their references
 */
export declare function createMultipleFileReferences(files: File[], sessionId: string, getUploadUrlFn: (params: {
    org: string;
    userId: string;
    requestBody: {
        session_id: string;
        file_name: string;
        content_type: string;
        file_size: number;
    };
}) => Promise<FileUploadURLResponse>, org: string, userId: string, onFileProgress?: (fileIndex: number, progress: number) => void): Promise<FileReference[]>;
/**
 * Validate file before upload
 * Returns error message if invalid, null if valid
 */
export declare function validateFile(file: File, maxSizeBytes?: number, allowedTypes?: string[]): string | null;
