import type { EncodedPacket } from './stream-broker.js';
import type { WebrtcClientHints } from '../capabilities/webrtc.cap.js';
export interface IWebRtcProvider {
    readonly id: string;
    readonly name: string;
    handleOffer(streamId: string, sdpOffer: string): Promise<string>;
    supportsStream(streamId: string): boolean;
    registerStream(streamId: string, codec: string): Promise<void>;
    pushPacket(streamId: string, packet: EncodedPacket): void;
    unregisterStream(streamId: string): Promise<void>;
    /**
     * Server-offer signaling: create a session and return the server SDP
     * offer. Single-object signature matches `InferProvider<>` so the
     * generated cap-router can dispatch directly. `hints` is optional
     * client metadata (viewport, downlink) the provider can use to pick
     * the best native source.
     */
    createSession?(input: {
        streamId: string;
        hints?: WebrtcClientHints;
    }): Promise<{
        sessionId: string;
        sdpOffer: string;
    }>;
    /** Server-offer signaling: accept the client SDP answer for a session. */
    handleAnswer?(input: {
        sessionId: string;
        sdpAnswer: string;
    }): Promise<void>;
    /** Explicitly close a WebRTC session (called on client disconnect). */
    closeSession?(input: {
        sessionId: string;
    }): Promise<void>;
}
//# sourceMappingURL=webrtc-provider.d.ts.map