import * as THREE from 'three'; import type { Disposable } from '../types.js'; /** Built-in look names for {@link createLightingRig}. */ export type LightingPresetName = 'dramatic' | 'studio' | 'soft' | 'neon' | 'sunset'; /** One complete lighting look: background/exposure/fog plus hemi, key, rim, and accent light tuples, with optional spot and beams. */ export interface LightingConfig { background: number; exposure: number; fog: [number, number]; hemi: [number, number, number]; key: [number, number, [number, number, number]]; rim: [number, number, [number, number, number]]; accent: [number, number, [number, number, number]]; /** Optional narrow theatrical spotlight: colour, intensity, position, cone angle (rad). */ spot?: [number, number, [number, number, number], number]; /** Optional pair of visible cone-shaped beams converging on the origin: colour, intensity. */ beams?: [number, number]; } /** The five built-in looks — `dramatic`, `studio`, `soft`, `neon`, `sunset` — as data, mergeable with custom presets via {@link LightingRigOptions.presets}. */ export declare const LIGHTING_PRESETS: Record; /** Options for {@link createLightingRig}. */ export interface LightingRigOptions { /** Initial preset. Default: 'studio'. */ preset?: LightingPresetName; /** Cast shadows from the key light. Default: true. */ shadows?: boolean; /** Extra presets merged over the built-ins. */ presets?: Record; } /** A live preset-switchable rig. `dispose()` removes and frees every light and beam cone. */ export interface LightingRig extends Disposable { hemi: THREE.HemisphereLight; key: THREE.DirectionalLight; rim: THREE.DirectionalLight; accent: THREE.PointLight; spot: THREE.SpotLight; cones: THREE.Mesh[]; /** Retune every light (and scene bg/fog/exposure) to a named preset. */ setPreset(name: LightingPresetName | string): void; } /** * Preset-driven stage rig: hemisphere + key + rim + accent + spot lights and * optional visible beam cones, all retunable to a named look at runtime with * `setPreset` (which also sets scene background, fog, and renderer exposure). * * @param scene - Scene the rig lights. * @param renderer - Renderer whose `toneMappingExposure` presets control. * @param options - Initial preset, shadow toggle, and extra presets. * @returns A {@link LightingRig}. * @example * const rig = createLightingRig(scene, renderer, { preset: 'neon' }) * rig.setPreset('dramatic') */ export declare function createLightingRig(scene: THREE.Scene, renderer: THREE.WebGLRenderer, { preset, shadows, presets }?: LightingRigOptions): LightingRig; //# sourceMappingURL=presets.d.ts.map