import { type ThreeEvent } from '@react-three/fiber'; import { type DecorationZoneSpec, type EmbroideryType } from '../core/decoration'; import type { ThreadRef } from '../core/threads'; import { type DecorationMaps, type DecorationMethodId } from './decorationTexture'; /** A decoratable zone placed in 3D on the garment mesh (local space). */ export type DecorationZone3D = DecorationZoneSpec & { position: [number, number, number]; rotation: [number, number, number]; }; export type DesignTransform = { offsetX: number; offsetY: number; scale: number; rotation: number; }; export type PlacedDesign = { zoneId: string; zone: DecorationZone3D; src: string; method: DecorationMethodId; embroideryType: EmbroideryType; transform: DesignTransform; }; type DragHandlers = { onPointerCancel: (event: ThreeEvent) => void; onPointerDown: (event: ThreeEvent) => void; onPointerMove: (event: ThreeEvent) => void; onPointerOut: (event: ThreeEvent) => void; onPointerUp: (event: ThreeEvent) => void; }; export declare const useZoneDrag: (zone: DecorationZone3D, enabled: boolean, onOffset?: (offsetX: number, offsetY: number) => void) => DragHandlers; type DesignDecalProps = { maps: DecorationMaps; method: DecorationMethodId; embroideryType: EmbroideryType; zone: DecorationZone3D; transform: DesignTransform; }; export declare const DesignDecal: ({ maps, method, embroideryType, zone, transform }: DesignDecalProps) => import("react").JSX.Element; export declare const PlacementDecal: ({ design, threadCatalog }: { design: PlacedDesign; threadCatalog: ThreadRef[]; }) => import("react").JSX.Element | null; export declare const ZoneOutline: ({ zone }: { zone: DecorationZone3D; }) => import("react").JSX.Element; type DecorationProps = { placements: PlacedDesign[]; activeZone: DecorationZone3D; showZone: boolean; threadCatalog: ThreadRef[]; }; /** Zone outline + every placed design, ready to nest inside a garment mesh. */ export declare const Decoration: ({ placements, activeZone, showZone, threadCatalog }: DecorationProps) => import("react").JSX.Element; export {};