import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
/**
 * Optional client-side hints sent at session creation to help the
 * provider pick the best native source. All fields are optional —
 * a viewer that knows nothing still gets a sane default.
 */
export declare const webrtcClientHintsSchema: z.ZodObject<{
    viewportWidth: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    viewportHeight: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    devicePixelRatio: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    downlinkMbps: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    prefersTier: z.ZodOptional<z.ZodOptional<z.ZodString>>;
}, z.core.$strip>;
export type WebrtcClientHints = z.infer<typeof webrtcClientHintsSchema>;
export declare const webrtcCapability: {
    readonly name: "webrtc";
    readonly scope: "system";
    readonly mode: "collection";
    readonly internal: true;
    readonly methods: {
        readonly handleOffer: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            streamId: z.ZodString;
            sdpOffer: z.ZodString;
        }, z.core.$strip>, z.ZodString, "mutation">;
        readonly supportsStream: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            streamId: z.ZodString;
        }, z.core.$strip>, z.ZodBoolean, import("./capability-definition.js").CapabilityMethodKind>;
        readonly registerStream: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            streamId: z.ZodString;
            codec: z.ZodString;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
        readonly unregisterStream: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            streamId: z.ZodString;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
        /**
         * Two-step server-offer signaling. `hints` is optional — providers
         * that don't care about adaptive source selection ignore it.
         */
        readonly createSession: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            streamId: z.ZodString;
            hints: z.ZodOptional<z.ZodObject<{
                viewportWidth: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
                viewportHeight: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
                devicePixelRatio: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
                downlinkMbps: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
                prefersTier: z.ZodOptional<z.ZodOptional<z.ZodString>>;
            }, z.core.$strip>>;
        }, z.core.$strip>, z.ZodObject<{
            sessionId: z.ZodString;
            sdpOffer: z.ZodString;
        }, z.core.$strip>, "mutation">;
        readonly handleAnswer: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            sessionId: z.ZodString;
            sdpAnswer: z.ZodString;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
        readonly closeSession: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            sessionId: z.ZodString;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
        /**
         * Whether this provider supports adaptive bitrate for the given stream.
         * Currently always false — adaptive selection is one-shot at session
         * start, not in-session encoder switching. Phase 5 plans to layer
         * encoder-driven adaptation on top.
         */
        readonly hasAdaptiveBitrate: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            streamId: z.ZodString;
        }, z.core.$strip>, z.ZodBoolean, import("./capability-definition.js").CapabilityMethodKind>;
    };
};
export type IWebrtcProvider = InferProvider<typeof webrtcCapability>;
//# sourceMappingURL=webrtc.cap.d.ts.map