import { DataTable } from '../data-table';
import { type FileSystem } from '../io/write';
import type { DeviceCreator } from '../types';
/**
 * Options for writing a rendered splat image.
 */
type WriteImageOptions = {
    /** Output filename ending in `.webp`. */
    filename: string;
    /** Gaussian splat data to render. */
    dataTable: DataTable;
    /** Camera position in world space. Default: (2, 1, -2). */
    cameraPosition?: {
        x: number;
        y: number;
        z: number;
    };
    /** Point the camera looks at, in world space. Default: (0, 0, 0). */
    lookAt?: {
        x: number;
        y: number;
        z: number;
    };
    /** World-space up vector. Default: (0, 1, 0). */
    up?: {
        x: number;
        y: number;
        z: number;
    };
    /** Vertical field of view in degrees. Default: 60. */
    fov?: number;
    /** Output image width in pixels. Default: 1280. */
    width?: number;
    /** Output image height in pixels. Default: 720. */
    height?: number;
    /** Near clip distance in world units. Splats with camera-space depth <= near are culled. Default: 0.2 (matches the reference 3DGS rasterizer). */
    near?: number;
    /** RGBA background, each channel in [0, 1]. Default: (0, 0, 0, 1). */
    background?: {
        r: number;
        g: number;
        b: number;
        a: number;
    };
    /** Function returning a GraphicsDevice. Required — rasterization runs on GPU. */
    createDevice?: DeviceCreator;
};
/**
 * Renders the splat scene to a lossless WebP image written via `fs`.
 *
 * @param options - Render parameters and target filename.
 * @param fs - File system abstraction for writing the output.
 *
 * @example
 * ```ts
 * await writeImage({
 *     filename: 'view.webp',
 *     dataTable,
 *     cameraPosition: { x: 0, y: 0, z: 5 },
 *     fov: 60,
 *     width: 1920, height: 1080,
 *     createDevice: async () => myDevice
 * }, fs);
 * ```
 */
declare const writeImage: (options: WriteImageOptions, fs: FileSystem) => Promise<void>;
export { writeImage, type WriteImageOptions };
