import type { IpcRequest, IpcResponse } from "./ipc.js"; import type { PeerHost } from "./peer-host.js"; export interface EmbeddedHostOptions { configDir: string; keyFile: string; /** Carrier data dir — where the identity and its lock live. */ dataDir: string; bootstrapNodes: { host: string; port: number; pk: string; }[]; expressNodes?: { host: string; port: number; pk: string; tls?: boolean; }[]; nickname?: string; statusMessage?: string; /** Our CryptoPunks id, advertised to friends in the userinfo `gender` * field — the only avatar path that does not need a server. */ punkId?: number; autoAcceptFriends: boolean; onProfileChange?: (info: { name?: string; description?: string; }) => void; onAutoAcceptChange?: (enabled: boolean) => void; /** @decentnetwork/peer version backing this embedded node, surfaced by `ping` * so the panel can name the code that is actually running. */ peerVersion?: string; } export declare class EmbeddedHost implements PeerHost { #private; readonly kind: "embedded"; readonly hasVirtualLan = false; constructor(opts: EmbeddedHostOptions); get downloadsDir(): string; get outboxDir(): string; start(): Promise; subscribe(emit: (event: Record) => void): () => void; stop(): Promise; call(req: IpcRequest): Promise; /** Signals older than this have no business ringing a phone. */ static readonly CALL_SIGNAL_TTL_MS = 90000; }