/**
 * Public SDK rendering contracts.
 */
import type { Media } from './content';
export type ImageOptions = {
    width: number;
    height?: number;
    quality?: number;
    resize?: 'cover' | 'contain' | 'fill';
} | {
    width?: number;
    height: number;
    quality?: number;
    resize?: 'cover' | 'contain' | 'fill';
} | {
    original: true;
};
export type ResolveImageUrlContext = {
    supabaseUrl?: string;
    siteId?: string;
    mediaAssets?: readonly MediaAssetIndexItem[];
};
export type ResolveImageUrlContextInput = Readonly<ResolveImageUrlContext>;
/**
 * Canonical media index item returned by SDK runtime endpoints.
 *
 * This stays SDK-owned so consumers of `@riverbankcms/sdk/rendering` do not
 * need to resolve `@riverbankcms/blocks` types from generated `.d.ts`.
 */
export type MediaAssetIndexItem = {
    id: string;
    identifier: string | null;
    storageBucket: string;
    storagePath: string;
    width: number | null;
    height: number | null;
    mimeType: string;
};
export declare const ImagePresets: {
    readonly thumbnail: {
        readonly width: 200;
        readonly quality: 80;
        readonly resize: "contain";
    };
    readonly card: {
        readonly width: 600;
        readonly quality: 80;
        readonly resize: "contain";
    };
    readonly hero: {
        readonly width: 1200;
        readonly quality: 85;
        readonly resize: "contain";
    };
    readonly full: {
        readonly width: 1920;
        readonly quality: 85;
        readonly resize: "contain";
    };
};
export type ResolvedImageSourceSet = {
    src: string;
    srcSet: string;
    sizes?: string;
    fallbackSrc?: string;
};
export type ResolveImageSourceSetOptions = {
    widthCandidates?: readonly number[];
    sizes?: string;
    resize?: 'cover' | 'contain' | 'fill';
    quality?: number;
    targetAspectRatio?: number;
    defaultWidth?: number;
};
export type ResolveImageUrl = (value: Media, options: ImageOptions) => string | undefined;
export type ResolveImageUrlWithContext = (value: Media, options: ImageOptions, context?: ResolveImageUrlContext) => string | undefined;
