import type { MediaAssetId, SiteScopedStoragePath } from '@riverbankcms/core';
export type { MediaAssetId } from '@riverbankcms/core';
export type MediaSource = 'upload' | 'instagram';
export type MediaAsset = {
    id: MediaAssetId;
    siteId: string;
    storageBucket: string;
    storagePath: SiteScopedStoragePath;
    filename: string;
    identifier?: string;
    mimeType: string;
    title?: string;
    width?: number;
    height?: number;
    bytes?: number;
    checksumSha256?: string;
    source: MediaSource;
    altText?: string;
    caption?: string;
    exif?: Record<string, unknown>;
    createdBy?: string;
    createdAt: string;
    updatedAt: string;
    classifiedAt?: string;
    labelsCached?: string[];
    durationSeconds?: number;
    thumbnailAssetId?: string;
    isThumbnail?: boolean;
};
export type TransformFit = 'clip' | 'crop' | 'fill' | 'fillmax' | 'max' | 'scale' | 'min';
export type TransformCrop = 'top' | 'bottom' | 'left' | 'right' | 'center' | 'focalpoint' | 'entropy';
export type TransformFormat = 'jpg' | 'pjpg' | 'png' | 'webp' | 'avif' | 'json';
export type TransformFlip = 'h' | 'v' | 'hv';
export type TransformColorSpace = 'srgb' | 'cmyk' | 'b-w' | 'origin';
export type TransformRect = [number, number, number, number];
export type TransformParams = {
    w?: number;
    h?: number;
    dpr?: number;
    fit?: TransformFit;
    crop?: TransformCrop;
    fpX?: number;
    fpY?: number;
    rect?: TransformRect;
    q?: number;
    fm?: TransformFormat;
    autoFormat?: boolean;
    bg?: string;
    flip?: TransformFlip;
    or?: 0 | 90 | 180 | 270;
    pad?: number;
    blur?: number;
    sharp?: number;
    invert?: boolean;
    sat?: number;
    cs?: TransformColorSpace;
};
export type ParamKey = keyof TransformParams;
export declare const SVG_MIME_TYPE = "image/svg+xml";
export declare function isSvgMimeType(mimeType: string | undefined): boolean;
