import type { AudioBackendKind } from './audio-platform/types.js'; import { type CinemaProviderRouteId } from './cinema-provider-projection.js'; import { type FinishBackend } from './finish.js'; import { type RouteCapabilities } from './provider-platform/route-capabilities.js'; import { type RoutePrerequisites } from './provider-platform/route-prerequisites.js'; import { type ProviderRouteId } from './provider-platform/types.js'; import type { CinemaProviderAccountClass, CinemaProviderMediaKind } from './cinema-provider-types.js'; /** One live `vclaw video` execution route: what it is, can do, and needs. */ export interface CapabilityManifestCoreRoute { id: ProviderRouteId; displayName: string; provider: string; /** `direct` (first-party API) or `useapi` (aggregator). */ path: string; summary: string; capabilities: RouteCapabilities; prerequisites: RoutePrerequisites; } /** One durable-Cinema-queue route. Its id space never merges with the core one. */ export interface CapabilityManifestCinemaRoute { id: CinemaProviderRouteId; transportId: string; accountClass: CinemaProviderAccountClass; mediaKinds: CinemaProviderMediaKind[]; fallbackPolicy: 'forbidden'; description: string; } /** One music / TTS / SFX backend, with its env prerequisites already expanded. */ export interface CapabilityManifestAudioBackend { id: string; kind: AudioBackendKind; displayName: string; summary: string; /** Declared `requiredEnv` plus the pool vars the `requires*` gates stand for. */ requiredEnvVars: string[]; } /** The composed contract. Bump `schemaVersion` on any shape change. */ export interface CapabilityManifest { schemaVersion: 1; coreRoutes: CapabilityManifestCoreRoute[]; cinemaRoutes: CapabilityManifestCinemaRoute[]; audioBackends: CapabilityManifestAudioBackend[]; finishBackends: FinishBackend[]; /** Every id in the manifest, flattened — the allowlist for drift scans. */ allKnownIds: string[]; } /** * Compose the capability manifest from the registries that already declare each * fact. Pure and deterministic: same output every call, no env or I/O. * * Core routes are emitted in `DEFAULT_PROVIDER_REGISTRY` order (the order * `vclaw video providers` prints); cinema routes, audio backends and finish * backends keep their own registries' declared order. */ export declare function buildCapabilityManifest(): CapabilityManifest; //# sourceMappingURL=capability-contract.d.ts.map