import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
declare const TurnProviderInfoSchema: z.ZodObject<{
    addonId: z.ZodString;
    displayName: z.ZodString;
    kind: z.ZodEnum<{
        other: "other";
        cloudflare: "cloudflare";
        coturn: "coturn";
        twilio: "twilio";
    }>;
    enabled: z.ZodBoolean;
    serverCount: z.ZodNumber;
    urls: z.ZodReadonly<z.ZodArray<z.ZodString>>;
    error: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type TurnProviderInfo = z.infer<typeof TurnProviderInfoSchema>;
/**
 * `turn-orchestrator` — singleton facade over the `turn-provider`
 * collection. Provides:
 *   - listProviders() — admin UI inventory
 *   - getAllServers() — combined list of TURN/STUN URLs across all
 *     enabled providers (what the WebRTC layer actually consumes)
 *
 * Mirrors `authentication` / `remote-access` — UI consumers go
 * through the singleton, the singleton walks the collection.
 *
 * The WebRTC layer (broker / addon-go2rtc) historically called
 * `turn-provider` collection methods directly to build the ICE
 * server list per session. Going through this orchestrator instead
 * gives a single throughput point + lets the admin disable a
 * provider without uninstalling it.
 */
export declare const turnOrchestratorCapability: {
    readonly name: "turn-orchestrator";
    readonly scope: "system";
    readonly mode: "singleton";
    readonly methods: {
        /** All registered TURN providers + per-provider stats. */
        readonly listProviders: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodReadonly<z.ZodArray<z.ZodObject<{
            addonId: z.ZodString;
            displayName: z.ZodString;
            kind: z.ZodEnum<{
                other: "other";
                cloudflare: "cloudflare";
                coturn: "coturn";
                twilio: "twilio";
            }>;
            enabled: z.ZodBoolean;
            serverCount: z.ZodNumber;
            urls: z.ZodReadonly<z.ZodArray<z.ZodString>>;
            error: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
        /**
         * Combined list of TURN/STUN servers from all ENABLED providers.
         * Consumed by the WebRTC layer at session-creation time —
         * implementations may fetch fresh short-lived credentials each
         * call (e.g. Cloudflare API), so consumers SHOULD call per-session.
         */
        readonly getAllServers: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodReadonly<z.ZodArray<z.ZodObject<{
            urls: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
            username: z.ZodOptional<z.ZodString>;
            credential: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
        /** Toggle a provider's enabled flag. */
        readonly setProviderEnabled: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            addonId: z.ZodString;
            enabled: z.ZodBoolean;
        }, z.core.$strip>, z.ZodObject<{
            success: z.ZodLiteral<true>;
        }, z.core.$strip>, "mutation">;
    };
};
export type ITurnOrchestratorProvider = InferProvider<typeof turnOrchestratorCapability>;
export { TurnProviderInfoSchema };
//# sourceMappingURL=turn-orchestrator.cap.d.ts.map