import { PeerOptions, Peer } from 'peerjs'; import { Hookable } from 'hookable'; import { SimplePeerMedia } from './SimplePeerMedia.js'; import { SimplePeerDataOptions, SimplePeerData } from './SimplePeerData.js'; interface SimplePeerOptions extends Partial { rmVideoElId: string; callingTimeoutMs?: number; connectIntervalMs?: number; lcVideoElId?: string; } interface Hooks { 'media:call': (rmPeerId: Peer['id'], metadata?: unknown) => Promise | void; 'media:status': (status: SimplePeerMedia['status']) => Promise | void; 'data:connection': (rmPeerId: Peer['id'], metadata?: unknown) => Promise | void; 'data:received': (rmPeerId: Peer['id'], data: unknown) => Promise | void; } declare class SimplePeer { #private; lcPeerId: Peer['id'] | null; connected: boolean; peerMedia: SimplePeerMedia | null; hooks: Hookable; constructor(opts: SimplePeerOptions); init(lcPeerId: Peer['id']): void; end(): void; addPeerData(rmPeerId: Peer['id'], opts?: Partial): SimplePeerData; removePeerData(rmPeerId: Peer['id']): void; getPeerData(rmPeerId: Peer['id']): SimplePeerData; } export { SimplePeer, type SimplePeerOptions };