import type { Image, Media } from "@paroicms/public-anywhere-lib";
import type { HttpUploadMediaValue } from "../gallery-types.js";
import type { UploadingFileHandler } from "./http-upload.js";
import type { UploadingFile } from "./internal.types.js";
export interface UseUploadHandlerOptions {
    mediaHandle: string;
    acceptFilter?: (file: File) => boolean;
    getMedias: (handle: string) => Promise<(Media | Image)[]>;
    limitManager?: UploadLimitManager;
    httpUploadMedia: ({ file, handle, attachedData, }: HttpUploadMediaValue) => UploadingFileHandler<Media | Image>;
}
export interface UploadLimitManager {
    remainingMediaPlaces?: number;
    updateMediaCount: (ev: {
        handle: string;
        count: number;
    }) => void;
}
export interface UploadMediaHandler {
    uploadFiles: (fileList: File[]) => Promise<(Media | Image | undefined)[]>;
    uploadingFiles: UploadingFile[];
    medias: (Media | Image)[];
    refreshMedias: () => Promise<void>;
}
export declare function useUploadHandler(props: UseUploadHandlerOptions): UploadMediaHandler;
