import { type ReactNode } from 'react';
import type { ApiClient, APICallParamsStrict, APIEndpoints } from '@riverbankcms/api/request';
import type { MediaAssetWithLabels } from '@riverbankcms/media-storage-supabase';
import { type MediaAssetIndexItem } from '@riverbankcms/blocks';
import { type UseApiMediaUploaderOptions } from '@riverbankcms/media-react';
type RequestContext = {
    siteId: string;
};
type RequestAugmenter = <E extends keyof APIEndpoints>(request: APICallParamsStrict<E>, context: RequestContext) => APICallParamsStrict<E>;
export type MediaEditorProviderProps = {
    siteId: string;
    apiClient: ApiClient;
    children: ReactNode;
    /**
     * Public bucket fallback used only when an asset record does not yet carry its
     * storage bucket. Upload targets come from the signed-upload/session services.
     */
    bucket?: string;
    getPublicUrl?: (asset: MediaAssetWithLabels, context: {
        siteId: string;
    }) => string;
    augmentRequest?: RequestAugmenter;
    uploaderOptions?: Omit<UseApiMediaUploaderOptions, 'siteId' | 'apiClient' | 'bucket'>;
    bearerToken?: string | null;
    supabaseUrl?: string;
    /**
     * Optional sidecar list of canonical media assets for resolving identifier-only media values.
     * This keeps persisted content shapes stable (important for unpublished-changes correctness).
     */
    mediaAssets?: readonly MediaAssetIndexItem[];
};
export declare function MediaEditorProvider({ siteId, apiClient, children, bucket, getPublicUrl, augmentRequest, uploaderOptions, bearerToken, supabaseUrl, mediaAssets, }: MediaEditorProviderProps): import("react/jsx-runtime").JSX.Element;
export {};
