import type { BodySimulation } from '../../sim/BodySimulation'; import type { StarConfig } from '../../types/body.types'; import type { TerrainLevel } from '../types/terrain.types'; import type { StarBody } from '../types/bodyHandle.types'; import type { BodyVariation } from './bodyVariation'; import type { HoverChannel } from '../state/hoverState'; import type { GraphicsUniforms } from '../hex/hexGraphicsUniforms'; import type { RenderQuality } from '../quality/renderQuality'; import type { BodyTypeStrategy } from './bodyTypeStrategy'; import type { HoverCursorConfig, HoverCursorPresets } from '../types/hoverCursor.types'; /** * Pre-computed inputs the star factory needs from the dispatcher. Receiving * them as parameters (rather than recomputing) keeps `useStar` decoupled * from `useBody` and avoids a circular import edge. */ export interface UseStarInputs { /** Original body config — needed for radius, coreRadiusRatio fallback. */ config: StarConfig; /** Initialised body simulation (tile states + sea level). */ sim: BodySimulation; /** Resolved terrain palette for this star. */ palette: TerrainLevel[]; /** Deterministic visual variation for this star. */ variation: BodyVariation; /** Tile count from the generated hexasphere — surfaced on the return value. */ tileCount: number; /** Per-body hover/pin channel — surfaced on the handle so projectors can subscribe. */ hoverChannel: HoverChannel; /** Per-body graphics uniform bag — wired into the hex terrain shader. */ graphicsUniforms: GraphicsUniforms; /** Optional render-quality bag — propagated to the smooth-sphere builder. */ quality?: RenderQuality; /** * Pre-resolved body-type strategy. Forwarded to the interactive mesh so * the lookup is shared with the dispatcher (`useBody` resolves it once, * passes it through). */ strategy: BodyTypeStrategy; /** Optional hover cursor parameters — ring / emissive (no column on stars). */ hoverCursor?: HoverCursorConfig; /** Optional named cursor presets, swappable via `body.hover.useCursor(name)`. */ hoverCursors?: HoverCursorPresets; /** Initial preset name when `hoverCursors` is supplied. */ defaultCursor?: string; /** * When `false`, the star's renderable meshes are made transparent to scene * raycasting (display-only). See {@link import('./useBody').UseBodyOptions.raycastable}. * Defaults to `true`. */ raycastable?: boolean; } /** * Builds the star-specific scene graph: a smooth sphere display mesh with * the animated star shader, a flat raycast proxy for hover queries and a * full hex interactive mesh swapped in on `activateInteractive()`. * * Stars carry no liquid shell, no atmosphere and no layered sol — * features absent from {@link StarBody}. Callers narrow the {@link Body} * union via `body.kind === 'star'` before reaching for planet-only * namespaces. * * @param inputs - Dispatcher-supplied state (config, sim, palette, …). * @returns Star-specific body handle. */ export declare function useStar(inputs: UseStarInputs): StarBody; //# sourceMappingURL=useStar.d.ts.map