import type { ReactNode } from 'react';
import type { ListMediaAssetsOptions, MediaAssetWithLabels, MediaStorageRepo } from '@riverbankcms/media-storage-supabase';
import { type UploadItem, type UseUploadsOptions, type UseUploadsResult } from '../hooks/useUploads';
export type MediaLibraryRenderProps = {
    assets: MediaAssetWithLabels[];
    loading: boolean;
    error: Error | null;
    hasMore: boolean;
    query: string;
    search: (value: string) => void;
    loadMore: () => void;
    refresh: () => void;
    selected: MediaAssetWithLabels[];
    selectAsset: (asset: MediaAssetWithLabels) => void;
    deselectAsset: (assetId: string) => void;
    clearSelection: () => void;
    uploads: UploadItem[];
    enqueueUploads?: UseUploadsResult['enqueue'];
    retryUpload?: UseUploadsResult['retry'];
    removeUpload?: UseUploadsResult['remove'];
    resetUploads?: UseUploadsResult['reset'];
};
export type MediaLibraryProps = {
    siteId: string;
    repo: MediaStorageRepo;
    pageSize?: number;
    allowMultiSelect?: boolean;
    uploader?: UseUploadsOptions['uploader'];
    maxParallelUploads?: number;
    getListOptions?: () => Partial<ListMediaAssetsOptions>;
    children: (props: MediaLibraryRenderProps) => ReactNode;
};
export declare const MediaLibrary: ({ siteId, repo, pageSize, allowMultiSelect, uploader, maxParallelUploads, children, getListOptions, }: MediaLibraryProps) => import("react/jsx-runtime").JSX.Element;
