/** * Type declarations for @metatrom/libp2p-native-bridge * Self-contained for IOR type generation */ // Core types export interface PeerId { toString(): string; toBytes(): Uint8Array; equals(other: PeerId): boolean; } export interface Multiaddr { toString(): string; bytes: Uint8Array; protos(): Array<{ code: number; name: string }>; getPeerId(): string | null; } export interface Connection { id: string; remotePeer: PeerId; remoteAddr: Multiaddr; stat: { direction: 'inbound' | 'outbound'; status: 'pending' | 'open' | 'closing' | 'closed'; timeline: { open: number; upgraded?: number; close?: number; }; }; } export interface PeerInfo { id: PeerId; multiaddrs: Multiaddr[]; } export interface ProtocolHandler { protocolId: string; handler: (data: { peerId: string; data?: Uint8Array }) => void | Promise; } export interface ILibp2pComponent { peerId: PeerId | null; multiaddrs: Multiaddr[]; start(): Promise; stop(): Promise; dial(multiaddr: string): Promise; hangUp(peerId: string): Promise; getConnections(peerId?: string): Promise; sendProtocolData(peerId: string, protocolId: string, data: Uint8Array): Promise; refreshDiscovery(): Promise; pingPeer(peerId: string): Promise<{ success: boolean; rtt?: number; peerId: string }>; addEventListener( event: K, handler: (evt: Libp2pEvents[K]) => void, ): void; removeEventListener( event: K, handler: (evt: Libp2pEvents[K]) => void, ): void; } export interface Libp2pEvents { 'peer:discovery': CustomEvent; 'peer:lost': CustomEvent<{ id: PeerId }>; 'peer:connect': CustomEvent; 'peer:disconnect': CustomEvent; 'connection:open': CustomEvent; 'connection:close': CustomEvent; 'self:peer:update': CustomEvent<{ peerId: PeerId; multiaddrs: Multiaddr[] }>; } export interface Libp2pOptions { config?: { tcpPort?: number; wsPort?: number; }; protocols?: ProtocolHandler[]; keypair?: { privateKey: Uint8Array; publicKey: Uint8Array; }; } // Event types export interface ConnectionStatusEvent { peerId: string; status: string; direction?: 'inbound' | 'outbound'; multiaddr?: string; } export interface PeerDiscoveredEvent { peerId: string; addresses?: string[]; multiaddrs?: string[]; metadata?: { userName?: string; deviceName?: string; timestamp?: number; }; } export interface PeerInfoEvent { peerId: string; multiaddrs: string[]; } // Settings types export interface AppSettings { tcpPort: number; wsPort: number; discoveryTimeout: number; enableDebugLogs: boolean; autoDiscovery: boolean; useCustomPorts: boolean; dhtServerUrl: string; } export interface INativeModules { Libp2pModule?: any; DiscoveryModule?: any; SecureStorageModule?: any; } // Constants export declare const LIBP2P_CONFIG: { CONNECTION_STATUS: { CONNECTED: string; PENDING: string; DISCONNECTED: string; FAILED: string; }; DEFAULT_TCP_PORT: number; DEFAULT_WS_PORT: number; }; export declare const DEFAULT_SETTINGS: AppSettings; // Component classes export declare class SimplePeerId implements PeerId { constructor(id: string); toString(): string; toBytes(): Uint8Array; equals(other: PeerId): boolean; } export declare class SimpleMultiaddr implements Multiaddr { bytes: Uint8Array; constructor(addr: string); toString(): string; protos(): Array<{ code: number; name: string }>; getPeerId(): string | null; } export declare class Libp2pComponent implements ILibp2pComponent { constructor(options?: Libp2pOptions, nativeModules?: any); peerId: PeerId | null; multiaddrs: Multiaddr[]; start(): Promise; stop(): Promise; dial(multiaddr: string): Promise; hangUp(peerId: string): Promise; getConnections(peerId?: string): Promise; sendProtocolData(peerId: string, protocolId: string, data: Uint8Array): Promise; refreshDiscovery(): Promise; pingPeer(peerId: string): Promise<{ success: boolean; rtt?: number; peerId: string }>; addEventListener( event: K, handler: (evt: Libp2pEvents[K]) => void, ): void; removeEventListener( event: K, handler: (evt: Libp2pEvents[K]) => void, ): void; } export declare class SettingsService { static getInstance(nativeModules?: INativeModules): SettingsService; static resetInstance(): void; initialize(): Promise; loadSettings(): Promise; saveSettings(settings: AppSettings): Promise; getSettings(): AppSettings; getSetting(key: K): AppSettings[K]; updateSetting(key: K, value: AppSettings[K]): Promise; resetAllData(): Promise; exportDebugData(): Promise; isFirstLaunch(): Promise; getStorageInfo(): Promise<{ keys: string[]; totalSize: number; }>; } export declare function getSettingsService(nativeModules?: INativeModules): SettingsService; // UI Components export declare const SettingsUI: React.FC<{ initialSettings?: AppSettings; onSettingsChange?: (settings: AppSettings) => void; onPortsSaved?: () => void; onReset?: () => void; }>;