import { EventHandler, LogEntry, LogLevel, ReceiverOptions, RemoteCommand, SendResult, SenderCommand, SenderMetadata, SenderOptions, SenderState } from './types'; /** * Start a RAOP receiver. If only a handler is provided, libraop defaults are used. */ export declare function startReceiver(handler: EventHandler): number; export declare function startReceiver(options: ReceiverOptions, handler: EventHandler): number; export declare function stopReceiver(handle: number): void; /** * Send a remote transport command (play/pause/next/prev) to the active sender. */ export declare function sendRemoteCommand(handle: number, command: RemoteCommand): boolean; /** * Connect to an AirPlay (RAOP) target for PCM sending. */ export declare function startSender(options: SenderOptions): number; /** * Attempt to enqueue a PCM chunk; returns queue/latency info and backpressure reason when not sent. */ export declare function sendChunk(handle: number, pcm: Buffer): SendResult; export declare function stopSender(handle: number): void; /** * Read-only sender health snapshot without sending audio. */ export declare function getSenderState(handle: number): SenderState; /** * Control sender playback state (play/pause/stop). */ export declare function senderControl(handle: number, command: SenderCommand): boolean; /** * Current local NTP clock (same reference for every sender on this host). Use as * the base for a shared playback anchor: compute `getNtp() + offset` once and pass * it to senderStartAt() on every group member. BigInt to preserve sub-ms accuracy. */ export declare function getNtp(): bigint; /** * Anchor a sender's playback clock to an absolute NTP time (from getNtp()). All * members of a sync group pass the SAME anchor so identical frames play at the * same time across devices. Call after startSender and before feeding chunks. */ export declare function senderStartAt(handle: number, ntp: bigint): boolean; /** * Update AirPlay sender volume (0-100). */ export declare function setSenderVolume(handle: number, volume: number): boolean; /** * Update track progress in milliseconds. */ export declare function setSenderProgress(handle: number, elapsedMs: number, durationMs: number): boolean; /** * Update track metadata (title/artist/album). */ export declare function setSenderMetadata(handle: number, metadata: SenderMetadata): boolean; /** * Send artwork bytes to the AirPlay target. */ export declare function setSenderArtwork(handle: number, contentType: string, data: Buffer): boolean; /** * Send a periodic keepalive to avoid some targets dropping playback. */ export declare function sendKeepAlive(handle: number): boolean; /** * Start interactive Apple TV pairing via mdns discovery. */ export declare function pairWithAppleTv(): { ok: boolean; udn?: string; secret?: string; }; /** * Start interactive Apple TV pairing by IP/port. */ export declare function pairWithAppleTvByIp(targetIp: string, port?: number): { ok: boolean; secret?: string; }; /** * Forward native libraop logs into JavaScript; pass null to disable. */ export declare function setLogHandler(handler: ((entry: LogEntry) => void) | null, level?: LogLevel, raopLevel?: LogLevel, utilLevel?: LogLevel): void;