# libp2p-native-bridge Native libp2p bridge for React Native applications, providing a unified interface for iOS and Android libp2p implementations. ## Installation ### Via IOR (Interoperable Object Reference) ```typescript import { Libp2pComponent } from 'ior:gitea:gitea.metatrom.net:universal-components/libp2p-native-bridge@1.0.0'; ``` ### Via npm/yarn (if published) ```bash npm install @metatrom/libp2p-native-bridge # or yarn add @metatrom/libp2p-native-bridge ``` ## Features - 🌐 Unified libp2p interface for React Native - 📱 iOS and Android native module support - 🔧 Configurable settings management - 🎛️ Settings UI component - 🔌 Protocol handler support - 🔍 Peer discovery and connection management - 🚀 TypeScript support with full type definitions ## Usage ### Basic Setup ```typescript import { Libp2pComponent } from '@metatrom/libp2p-native-bridge'; // Create libp2p instance const libp2p = new Libp2pComponent({ config: { tcpPort: 10000, wsPort: 10005, }, protocols: [ { protocolId: '/my-protocol/1.0.0', handler: async ({ peerId, data }) => { console.log(`Received data from ${peerId}:`, data); }, }, ], }); // Start the node await libp2p.start(); // Listen for peer discovery libp2p.addEventListener('peer:discovery', (evt) => { console.log('Discovered peer:', evt.detail.id.toString()); }); // Connect to a peer await libp2p.dial('/ip4/192.168.1.2/tcp/10000/p2p/12D3KooW...'); ``` ### Using with React Hook ```typescript import { useLibp2p } from './hooks/useLibp2p'; import { Libp2pComponent } from '@metatrom/libp2p-native-bridge'; function MyComponent() { const { isStarted, peerId, discoveredPeers, start, stop } = useLibp2p({ config: { tcpPort: 10000, wsPort: 10005, }, }); return ( Status: {isStarted ? 'Started' : 'Stopped'} Peer ID: {peerId?.toString()}