import { Static, Type as t } from "@sinclair/typebox"; const playback = t.Object( { url: t.String({ minLength: 1, errorMessage: "Invalid playback url" }), headers: t.Optional( t.Record(t.String(), t.Any(), { error: () => "Invalid playback headers" }) ), type: t.Union([t.Literal("hls"), t.Literal("video")], { errorMessage: "Invalid playback type: expected HLS or VIDEO" }), protocol: t.Union([t.Literal("http"), t.Literal("local")], { errorMessage: "Invalid playback type: expected HTTP or LOCAL" }), picture_quality: t.Optional( t.String({ minLength: 0, errorMessage: "Invalid picture quality" }) ), ideal_runtime: t.Optional( t.Number({ minimum: 0, error: () => "ideal runtime must be a positive integer greater than zero" }) ), fail_back: t.Optional( t.Union([t.Literal(1), t.Literal(0)], { errorMessage: "Invalid failback, Expected binary boolean" }) ) }, { errorMessage: "Invalid playback data" } ); export type T_playback = Static; const live = t.Object( { sbe_id: t.Optional( t.String({ minLength: 0, errorMessage: "Invalid sbe id" }) ), delivery_mode: t.Union([t.Literal("download"), t.Literal("stream")], { errorMessage: "Invalid delivery mode, must be one of: download, stream" }), delivery_format: t.Union( [t.Literal("mp4"), t.Literal("mkv"), t.Literal("ts")], { errorMessage: "Invalid output format, must be one of: mp4, mkv, ts" } ), delivery_name: t.Optional( t.String({ minLength: 0, errorMessage: "Invalid delivery name" }) ), subtitles: t.Optional( t.Array( t.Object( { lang: t.String(), url: t.String(), title: t.Optional(t.String()), default: t.Optional(t.Boolean()) }, { additionalProperties: true } ), { errorMessage: "Invalid subtitle data" } ) ), progress_update_endpoint: t.Optional( t.String({ minLength: 0, errorMessage: "Invalid progress update endpoint" }) ) }, { errorMessage: "Invalid live data" } ); export type T_live = Static; export const NS_validator_v2 = { playback, live };