import type { Method } from 'axios';
export declare type UNSAFE_GetEndpoint = (file: File) => string;
export declare type GetMethod = (file: File) => Method;
export declare type GetPayload = (file: File) => FormData;
export declare type UNSAFE_GetPayloadKey = (file: File) => string;
export declare type GetHeaders = (file: File) => Record<string, string>;
declare type UploadTargetId = string | number;
declare type UploadTarget = {
    id: UploadTargetId;
    blob: File;
};
interface UploadFileCallbacks {
    /**
     * @since 10.19.0
     */
    onProgress: (progress: number) => void;
    /**
     * @since 10.19.0
     */
    onSuccess: (response: unknown) => void;
    /**
     * @since 10.19.0
     */
    onError: (error: unknown) => void;
}
export interface UNSAFE_UploadFile {
    (file: File, callbacks: UploadFileCallbacks): void;
}
export interface FileUploaderProps {
    /**
     * @since 10.19.0
     */
    getEndpoint?: UNSAFE_GetEndpoint;
    /**
     * @since 10.19.0
     */
    getMethod?: GetMethod;
    /**
     * @since 10.19.0
     */
    getPayload?: GetPayload;
    /**
     * @since 10.19.0
     */
    getPayloadKey?: UNSAFE_GetPayloadKey;
    /**
     * @since 10.19.0
     */
    getHeaders?: GetHeaders;
    /**
     * @since 10.19.0
     */
    uploadFile?: UNSAFE_UploadFile;
}
export interface FileUploader {
    /**
     * @since 10.19.0
     */
    uploadFiles: (files: UploadTarget[], { onCompleteAll, onComplete, onError, onProgress, }: {
        onCompleteAll?: () => void;
        onComplete?: (fileId: UploadTargetId, response: unknown) => void;
        onError?: (fileId: UploadTargetId, error: unknown) => void;
        onProgress?: (fileId: UploadTargetId, progress: number) => void;
    }) => void;
}
export declare function useFileUploader({ getEndpoint: externalGetEndpoint, getMethod, getPayload, getPayloadKey, getHeaders, uploadFile, }: FileUploaderProps): FileUploader;
export {};
