/**
 * useAutoRegister Hook for React Native
 *
 * Enables automatic registration of interactive React Native components.
 * Unlike the web version, this doesn't use MutationObserver (no DOM).
 * Instead, it provides a simple API for components to register themselves.
 *
 * For comprehensive coverage in React Native, components should:
 * 1. Use this hook at the app root to enable the registry
 * 2. Use useUIElement on interactive components (or wrap with Pressable/TouchableOpacity)
 */
import type { NativeElementRef } from '../core/types';
import type { RegisterElementOptions } from '../core/registry';
/**
 * Options for auto-registration in React Native
 */
export interface NativeAutoRegisterOptions {
    /** Enable auto-registration (default: true in dev mode) */
    enabled?: boolean;
    /** Callback when element is registered */
    onRegister?: (id: string) => void;
    /** Callback when element is unregistered */
    onUnregister?: (id: string) => void;
}
/**
 * Handle returned by useAutoRegister for programmatic registration
 */
export interface NativeAutoRegisterHandle {
    /** Register an element programmatically */
    register: (id: string, ref: React.RefObject<NativeElementRef>, options?: RegisterElementOptions) => void;
    /** Unregister an element programmatically */
    unregister: (id: string) => void;
    /** Check if auto-registration is enabled */
    isEnabled: boolean;
}
/**
 * Hook for enabling automatic element registration in React Native.
 *
 * Since React Native doesn't have a DOM to observe, this hook provides
 * a handle for programmatic registration. For most use cases, you should
 * use useUIElement directly on interactive components.
 *
 * @example
 * ```tsx
 * function App() {
 *   const autoRegister = useAutoRegister({ enabled: __DEV__ });
 *
 *   // Programmatic registration (rare use case)
 *   useEffect(() => {
 *     autoRegister.register('custom-element', {
 *       type: 'button',
 *       label: 'Custom Button',
 *     });
 *
 *     return () => autoRegister.unregister('custom-element');
 *   }, []);
 *
 *   return <YourApp />;
 * }
 * ```
 */
export declare function useAutoRegister(options?: NativeAutoRegisterOptions): NativeAutoRegisterHandle;
export default useAutoRegister;
//# sourceMappingURL=useAutoRegister.d.ts.map