import type { PeerPigeonMeshOptions, PeerStatus, PeerInfo } from '../types' const browserBundleUrl = new URL('../../node_modules/peerpigeon/dist/peerpigeon-browser.js', import.meta.url) await import(/* @vite-ignore */ browserBundleUrl.href) export interface PeerPigeonMeshInstance { addEventListener(event: string, handler: (event: any) => void): void removeEventListener(event: string, handler: (event: any) => void): void init(): Promise connect(signalingUrl: string): Promise disconnect(): void sendMessage(message: any): Promise sendDirectMessage(targetPeerId: string, content: any): Promise sendEncryptedMessage(targetPeerId: string, content: any): Promise sendEncryptedBroadcast(content: any, groupId?: string | null): Promise sendFile(peerId: string, file: File): Promise sendBlob(peerId: string, blob: Blob, options?: Record): Promise sendStream(peerId: string, stream: ReadableStream, options?: Record): Promise createStreamToPeer(peerId: string, options?: Record): WritableStream getStatus(): PeerStatus getConnectedPeerIds(): string[] getDiscoveredPeers(): PeerInfo[] storage?: { set(key: string, value: any, ttl?: number): Promise get(key: string): Promise has(key: string): Promise delete(key: string): Promise clear(): Promise list(): Promise keys(): Promise } } type PeerPigeonMeshConstructor = new (options?: PeerPigeonMeshOptions) => PeerPigeonMeshInstance const peerPigeonGlobal = globalThis as typeof globalThis & { PeerPigeonMesh?: PeerPigeonMeshConstructor } if (!peerPigeonGlobal.PeerPigeonMesh) { throw new Error('PeerPigeon browser bundle failed to expose PeerPigeonMesh') } export const PeerPigeonMesh = peerPigeonGlobal.PeerPigeonMesh