From b712f97795174de791d8e4cf2037a796d5ac3889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Da=C3=9Fler?= Date: Fri, 29 Aug 2025 11:43:18 +0200 Subject: [PATCH] Add self-contained TypeScript declarations for IOR type generation --- libp2p-native-bridge.d.ts | 212 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 libp2p-native-bridge.d.ts diff --git a/libp2p-native-bridge.d.ts b/libp2p-native-bridge.d.ts new file mode 100644 index 0000000..850a745 --- /dev/null +++ b/libp2p-native-bridge.d.ts @@ -0,0 +1,212 @@ +/** + * 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; +}>; \ No newline at end of file