import { type ReactNode } from 'react';
import type { ApiClient } from '@riverbankcms/api/request';
import type { MediaAssetWithLabels, MediaStorageRepo } from '@riverbankcms/media-storage-supabase';
import type { UploadProgressHandler } from '@riverbankcms/media-react';
import type { MediaAssetIndex, ResolveImageUrlContext } from '@riverbankcms/blocks';
export type MediaEditorContextValue = {
    siteId: string;
    apiClient: ApiClient;
    repo: MediaStorageRepo;
    uploader: (file: File, onProgress?: UploadProgressHandler) => Promise<MediaAssetWithLabels>;
    getPublicUrl: (asset: MediaAssetWithLabels) => string;
    registerMediaAsset: (asset: MediaAssetWithLabels) => void;
    bearerToken?: string | null;
    mediaAssetIndex?: MediaAssetIndex;
    imageResolveContext: ResolveImageUrlContext;
};
export declare function MediaEditorContextProvider({ value, children, }: {
    value: MediaEditorContextValue;
    children: ReactNode;
}): import("react/jsx-runtime").JSX.Element;
export declare function useMediaEditor(): MediaEditorContextValue;
export declare function useMediaEditorOptional(): MediaEditorContextValue | null;
