import { TurboModule, TurboModuleRegistry } from 'react-native'; import { ARObjectModel, ARSessionOptions, ARFeatures } from './types'; export interface Spec extends TurboModule { // Session Management startSession(options: ARSessionOptions): Promise; pauseSession(): Promise; resetSession(): Promise; isSupported(): Promise; // Object Management addObject(model: ARObjectModel): Promise; removeObject(id: string): Promise; moveObject(id: string, position: { x: number; y: number; z: number }): Promise; rotateObject(id: string, rotation: { x: number; y: number; z: number }): Promise; scaleObject(id: string, scale: number): Promise; setObjectProperty(id: string, property: string, value: any): Promise; // Advanced Object Management getObjectProperties(id: string): Promise<{ position: { x: number; y: number; z: number }; rotation: { x: number; y: number; z: number }; scale: number; }>; // Feature Detection getSupportedFeatures(): Promise; // Session Properties setSessionProperty(propertyName: string, value: any): Promise; getSessionProperty(propertyName: string): Promise; // Android-specific promptARCoreInstall(): Promise; // Animation Methods createPropertyAnimation(objectId: string, property: string, toValue: number, config: any): Promise; startAnimation(animationId: string): Promise; stopAnimation(animationId: string): Promise; pauseAnimation(animationId: string): Promise; resumeAnimation(animationId: string): Promise; onAnimationComplete(animationId: string, callback: () => void): void; // 3D Model Methods preloadModel(modelInfo: ARObjectModel): Promise; isModelLoaded(modelId: string): Promise; unloadModel(modelId: string): Promise; placeModel(modelId: string, position: { x: number; y: number; z: number }, options: any): Promise; getModelAnimations(modelId: string): Promise; playAnimation(objectId: string, animationName: string, options: any): Promise; stopAnimations(objectId: string): Promise; updateMaterial(objectId: string, nodeName: string, material: any): Promise; getMaterial(objectId: string, nodeName: string): Promise; getModelInfo(modelId: string): Promise; // View Manager getViewManager(viewName: string): object; } export const NativeARModule = TurboModuleRegistry.getEnforcing('ARModule'); export default NativeARModule;