import type { Broadcast } from "../broadcast"; import * as Path from "../path"; import { type Stream } from "../stream"; import type { Session } from "./adapter"; import { type Subscribe } from "./subscribe"; import { type SubscribeNamespace } from "./subscribe_namespace"; import { type TrackStatusRequest } from "./track"; /** * Handles publishing broadcasts using moq-transport protocol. * Uses the stream-per-request pattern (real bidi streams for v17, virtual for v14-v16). * * @internal */ export declare class Publisher { #private; /** * Creates a new Publisher instance. * @param quic - The WebTransport session (for uni streams) * @param session - The session abstraction for bidi streams and request IDs * * @internal */ constructor(quic: WebTransport, session: Session); /** * Publishes a broadcast with any associated tracks. * Opens a bidi stream to send PublishNamespace and waits for response. */ publish(path: Path.Valid, broadcast: Broadcast): void; /** * Handles an incoming SUBSCRIBE request on a bidi stream. * Owns the full lifecycle: sends response, serves track data, waits for close. * * @internal */ runSubscribe(msg: Subscribe, stream: Stream): Promise; /** * Handles an incoming SUBSCRIBE_NAMESPACE on a bidi stream. * Sends RequestOk, then streams Namespace/NamespaceDone entries. * * @internal */ runSubscribeNamespace(msg: SubscribeNamespace, stream: Stream): Promise; /** * Handles an incoming TRACK_STATUS_REQUEST on a bidi stream. * * @internal */ runTrackStatusRequest(msg: TrackStatusRequest, stream: Stream): Promise; } //# sourceMappingURL=publisher.d.ts.map