/**
 * Collision mesh shape generated alongside voxel output.
 *
 * - `smooth` - marching cubes with lossless coplanar merge.
 * - `faces` - direct watertight voxel-boundary faces.
 */
type CollisionMeshShape = 'smooth' | 'faces';
/**
 * Options for read/write operations.
 */
type Options = {
    /** Number of iterations for SOG SH compression (higher = better quality). Default: 10 */
    iterations: number;
    /** LOD levels to read from LCC input */
    lodSelect: number[];
    /** Viewer settings JSON for HTML output */
    viewerSettingsJson?: any;
    /** Whether to generate unbundled HTML output with separate files */
    unbundled: boolean;
    /** Approximate number of Gaussians per LOD chunk (in thousands). Default: 512 */
    lodChunkCount: number;
    /** Approximate size of an LOD chunk in world units (meters). Default: 16 */
    lodChunkExtent: number;
    /** SPZ format version to write. Default: 4. */
    spzVersion?: 3 | 4;
    /** Size of each voxel in world units for voxel output. Default: 0.05 */
    voxelResolution?: number;
    /** Opacity threshold for solid voxels - voxels below this are considered empty. Default: 0.1 */
    opacityCutoff?: number;
    /** Exterior fill radius in world units. Enables exterior fill when set. Requires navSeed. */
    navExteriorRadius?: number;
    /** Fill each voxel column upward from the bottom until hitting solid. Runs before carve. Default: false */
    floorFill?: boolean;
    /** When `floorFill` is enabled, dilation radius in world units used to identify "interior" XZ columns to patch. Empty XZ areas larger than `2 * floorFillDilation` from any solid column are treated as exterior and left empty. Default: 0 (patch every empty column). */
    floorFillDilation?: number;
    /** Capsule dimensions for carve. Height of 0 disables carve. Requires navSeed. */
    navCapsule?: {
        height: number;
        radius: number;
    };
    /** Seed position in world space for exterior fill and carve flood fill. */
    navSeed?: {
        x: number;
        y: number;
        z: number;
    };
    /** When set, a collision mesh (.collision.glb) is generated alongside the voxel output. `true` is equivalent to `smooth`. */
    collisionMesh?: boolean | CollisionMeshShape;
    /** Camera position (world space) for image output. Default: (2, 1, -2). */
    renderCameraPosition?: {
        x: number;
        y: number;
        z: number;
    };
    /** Camera look-at target (world space) for image output. Default: (0, 0, 0). */
    renderLookAt?: {
        x: number;
        y: number;
        z: number;
    };
    /** World-space up vector for image output. Default: (0, 1, 0). */
    renderUp?: {
        x: number;
        y: number;
        z: number;
    };
    /** Vertical field of view in degrees for image output. Default: 60. */
    renderFov?: number;
    /** Output image width in pixels. Default: 1280. */
    renderWidth?: number;
    /** Output image height in pixels. Default: 720. */
    renderHeight?: number;
    /** Near clip distance for image output. Default: 0.2. */
    renderNear?: number;
    /** RGBA background (each channel in [0, 1]) for image output. Default: (0, 0, 0, 1). */
    renderBackground?: {
        r: number;
        g: number;
        b: number;
        a: number;
    };
};
/**
 * Parameter passed to MJS generator scripts.
 * @ignore
 */
type Param = {
    name: string;
    value: string;
};
/**
 * A function that creates a PlayCanvas GraphicsDevice on demand.
 *
 * Used for GPU-accelerated operations such as SOG compression and voxelization.
 * The application is responsible for caching if needed.
 *
 * @returns Promise resolving to a GraphicsDevice instance.
 */
type DeviceCreator = () => Promise<import('playcanvas').GraphicsDevice>;
export type { CollisionMeshShape, Options, Param, DeviceCreator };
