import { type ReactNode } from 'react';
import type { ApiClient } from '../../api/src/request';
import type { MediaAssetWithLabels, MediaStorageRepo } from '@riverbankcms/media-storage-supabase';
import type { UploadProgressHandler, UseApiMediaUploaderOptions } from '../../media-react/src/index';
import type { MediaAssetIndex, ResolveImageUrlContext } from '../../blocks/src/index';
type MediaEditorUploaderOptions = Omit<UseApiMediaUploaderOptions, 'siteId' | 'apiClient' | 'bucket'>;
export type MediaEditorContextValue = {
    siteId: string;
    apiClient: ApiClient;
    repo: MediaStorageRepo;
    uploader: (file: File, onProgress?: UploadProgressHandler) => Promise<MediaAssetWithLabels>;
    uploaderOptions?: MediaEditorUploaderOptions;
    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;
export {};
