import * as THREE from 'three'; import type { Axis } from './modifiers.js'; /** Optional position/Euler-rotation/scale applied when grouping or placing objects. */ export interface Transform { position?: [number, number, number]; rotation?: [number, number, number]; scale?: number | [number, number, number]; } /** Group `children` under one `Group` with an optional {@link Transform} applied. */ export declare function createGroup(children?: THREE.Object3D[], transform?: Transform): THREE.Group; /** Options for {@link layoutGrid}: column count (default √n), `spacing`, and layout plane. */ export interface GridLayout { cols?: number; spacing?: number; plane?: 'xz' | 'xy'; } /** Arrange objects in a centered grid on the `xz` (default) or `xy` plane, mutating their positions. Returns the same array. */ export declare function layoutGrid(objects: THREE.Object3D[], options?: GridLayout): THREE.Object3D[]; /** Options for {@link layoutRadial}: circle `radius`, `startAngle`, and whether items rotate to face the center. */ export interface RadialLayout { radius?: number; startAngle?: number; faceCenter?: boolean; } /** Arrange objects evenly around a circle in the ground plane, optionally facing the center. Mutates positions; returns the same array. */ export declare function layoutRadial(objects: THREE.Object3D[], options?: RadialLayout): THREE.Object3D[]; /** Stack objects along `axis` at `spacing` intervals, centered on the origin. Mutates positions; returns the same array. */ export declare function layoutStack(objects: THREE.Object3D[], axis?: Axis, spacing?: number): THREE.Object3D[]; /** World-space bounding box of an object and all its descendants. */ export declare function groupBounds(obj: THREE.Object3D): THREE.Box3; //# sourceMappingURL=group.d.ts.map