import { AcquireOptions } from './registry.js'; import { Mark, SectionSpec } from './aiming.js'; export type ViewName = 'iso' | 'front' | 'top' | 'right'; type ViewMode = 'solid' | 'wireframe' | 'xray'; /** One capture: a camera view + render mode (+ optional section/marks), written to `.png`. */ export interface Shot { name: string; view: ViewName; viewMode?: ViewMode; section?: SectionSpec; marks?: readonly Mark[]; } export interface ShootOptions extends AcquireOptions { file: string; outDir: string; /** Capture recipe; defaults to the four views + an xray internal pass. */ shots?: readonly Shot[]; /** When set (and no explicit `shots`), append an aimed cross-section capture to the default recipe. */ section?: SectionSpec; /** When set (and no explicit `shots`), append a marked iso capture (Set-of-Marks B#/H# labels). */ marks?: readonly Mark[]; /** Wall-clock ms to let the camera settle before each capture (default 400; raise on slow CI). */ settleMs?: number; /** Burn the model's bbox dimensions into each PNG so the agent can read scale (default true). */ dimensions?: boolean; } export interface ShootResult { outDir: string; pngs: string[]; } export declare function shoot(opts: ShootOptions): Promise; export {};