import { default as React } from 'react'; /** Built-in colormap names. */ export type ImageColormap = "cividis" | "gray"; export interface ImageFrameProps { /** Flat, row-major single-channel samples. Length must equal width*height. */ data?: number[]; /** * Pre-decoded RGBA pixels (length = width*height*4). When provided this * is painted directly and `data` / `maxADU` / `colormap` are ignored. * Escape hatch for callers that already have an image buffer. */ pixels?: Uint8ClampedArray; /** Frame width in pixels. */ width: number; /** Frame height in pixels. Defaults to `width` (square). */ height?: number; /** Saturation ceiling used to normalise `data` → [0,1]. Default 65535. */ maxADU?: number; /** Colormap applied to normalised intensities. Default 'cividis'. */ colormap?: ImageColormap; /** Show the raw sample values as a grid below the image. Default false. */ showValues?: boolean; /** Optional title shown above the image. */ title?: string; /** Loading state (skeleton). */ loading?: boolean; /** Message shown when there is no frame to display. */ emptyMessage?: string; /** Custom class name. */ className?: string; } /** * decodeImage — pure transform: single-channel samples → canvas-ready * RGBA. Fixed-ceiling normalisation (`sample / maxADU`) so the output * reflects the real signal level relative to saturation rather than * rescaling per frame. Returns null on invalid input. */ export declare function decodeImage(opts: { data: number[]; width: number; height?: number; maxADU?: number; colormap?: ImageColormap; }): { width: number; height: number; pixels: Uint8ClampedArray; } | null; export declare const ImageFrame: React.NamedExoticComponent; export default ImageFrame;