@wave-av/sdk 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/audience.d.ts +105 -0
  2. package/dist/audience.d.ts.map +1 -0
  3. package/dist/billing-types.d.ts +39 -0
  4. package/dist/billing-types.d.ts.map +1 -0
  5. package/dist/billing-types.js +18 -0
  6. package/dist/billing-types.mjs +0 -0
  7. package/dist/billing.d.ts +69 -0
  8. package/dist/billing.d.ts.map +1 -0
  9. package/dist/billing.js +139 -0
  10. package/dist/billing.mjs +9 -0
  11. package/dist/camera-control.d.ts +55 -0
  12. package/dist/camera-control.d.ts.map +1 -0
  13. package/dist/captions-types.d.ts +119 -0
  14. package/dist/captions-types.d.ts.map +1 -0
  15. package/dist/captions.d.ts +218 -0
  16. package/dist/captions.d.ts.map +1 -0
  17. package/dist/chapters-types.d.ts +87 -0
  18. package/dist/chapters-types.d.ts.map +1 -0
  19. package/dist/chapters.d.ts +207 -0
  20. package/dist/chapters.d.ts.map +1 -0
  21. package/dist/chunk-I3V47I4W.mjs +114 -0
  22. package/dist/client-types.d.ts +59 -0
  23. package/dist/client-types.d.ts.map +1 -0
  24. package/dist/client.d.ts +119 -0
  25. package/dist/client.d.ts.map +1 -0
  26. package/dist/clips-types.d.ts +31 -0
  27. package/dist/clips-types.d.ts.map +1 -0
  28. package/dist/clips.d.ts +230 -0
  29. package/dist/clips.d.ts.map +1 -0
  30. package/dist/cloud-switcher.d.ts +66 -0
  31. package/dist/cloud-switcher.d.ts.map +1 -0
  32. package/dist/collab-types.d.ts +205 -0
  33. package/dist/collab-types.d.ts.map +1 -0
  34. package/dist/collab.d.ts +227 -0
  35. package/dist/collab.d.ts.map +1 -0
  36. package/dist/connect.d.ts +89 -0
  37. package/dist/connect.d.ts.map +1 -0
  38. package/dist/creator.d.ts +110 -0
  39. package/dist/creator.d.ts.map +1 -0
  40. package/dist/desktop.d.ts +96 -0
  41. package/dist/desktop.d.ts.map +1 -0
  42. package/dist/distribution.d.ts +93 -0
  43. package/dist/distribution.d.ts.map +1 -0
  44. package/dist/drm.d.ts +88 -0
  45. package/dist/drm.d.ts.map +1 -0
  46. package/dist/edge.d.ts +113 -0
  47. package/dist/edge.d.ts.map +1 -0
  48. package/dist/editor-types.d.ts +237 -0
  49. package/dist/editor-types.d.ts.map +1 -0
  50. package/dist/editor.d.ts +207 -0
  51. package/dist/editor.d.ts.map +1 -0
  52. package/dist/fleet.d.ts +208 -0
  53. package/dist/fleet.d.ts.map +1 -0
  54. package/dist/ghost.d.ts +214 -0
  55. package/dist/ghost.d.ts.map +1 -0
  56. package/dist/index.d.ts +131 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +114 -0
  59. package/dist/index.mjs +49 -43
  60. package/dist/marketplace.d.ts +91 -0
  61. package/dist/marketplace.d.ts.map +1 -0
  62. package/dist/mesh.d.ts +238 -0
  63. package/dist/mesh.d.ts.map +1 -0
  64. package/dist/notifications.d.ts +83 -0
  65. package/dist/notifications.d.ts.map +1 -0
  66. package/dist/phone-types.d.ts +111 -0
  67. package/dist/phone-types.d.ts.map +1 -0
  68. package/dist/phone.d.ts +235 -0
  69. package/dist/phone.d.ts.map +1 -0
  70. package/dist/pipeline-types.d.ts +188 -0
  71. package/dist/pipeline-types.d.ts.map +1 -0
  72. package/dist/pipeline.d.ts +224 -0
  73. package/dist/pipeline.d.ts.map +1 -0
  74. package/dist/podcast.d.ts +114 -0
  75. package/dist/podcast.d.ts.map +1 -0
  76. package/dist/prism.d.ts +133 -0
  77. package/dist/prism.d.ts.map +1 -0
  78. package/dist/prompter.d.ts +185 -0
  79. package/dist/prompter.d.ts.map +1 -0
  80. package/dist/pulse.d.ts +157 -0
  81. package/dist/pulse.d.ts.map +1 -0
  82. package/dist/qr.d.ts +83 -0
  83. package/dist/qr.d.ts.map +1 -0
  84. package/dist/replay.d.ts +53 -0
  85. package/dist/replay.d.ts.map +1 -0
  86. package/dist/scene-types.d.ts +191 -0
  87. package/dist/scene-types.d.ts.map +1 -0
  88. package/dist/scene.d.ts +214 -0
  89. package/dist/scene.d.ts.map +1 -0
  90. package/dist/search-types.d.ts +211 -0
  91. package/dist/search-types.d.ts.map +1 -0
  92. package/dist/search.d.ts +251 -0
  93. package/dist/search.d.ts.map +1 -0
  94. package/dist/sentiment-types.d.ts +108 -0
  95. package/dist/sentiment-types.d.ts.map +1 -0
  96. package/dist/sentiment.d.ts +247 -0
  97. package/dist/sentiment.d.ts.map +1 -0
  98. package/dist/signage.d.ts +102 -0
  99. package/dist/signage.d.ts.map +1 -0
  100. package/dist/slides.d.ts +69 -0
  101. package/dist/slides.d.ts.map +1 -0
  102. package/dist/studio-ai-types.d.ts +199 -0
  103. package/dist/studio-ai-types.d.ts.map +1 -0
  104. package/dist/studio-ai.d.ts +219 -0
  105. package/dist/studio-ai.d.ts.map +1 -0
  106. package/dist/studio-types.d.ts +268 -0
  107. package/dist/studio-types.d.ts.map +1 -0
  108. package/dist/studio.d.ts +235 -0
  109. package/dist/studio.d.ts.map +1 -0
  110. package/dist/telemetry.d.ts +77 -0
  111. package/dist/telemetry.d.ts.map +1 -0
  112. package/dist/transcribe-types.d.ts +154 -0
  113. package/dist/transcribe-types.d.ts.map +1 -0
  114. package/dist/transcribe.d.ts +219 -0
  115. package/dist/transcribe.d.ts.map +1 -0
  116. package/dist/usb.d.ts +65 -0
  117. package/dist/usb.d.ts.map +1 -0
  118. package/dist/vault.d.ts +122 -0
  119. package/dist/vault.d.ts.map +1 -0
  120. package/dist/voice-types.d.ts +107 -0
  121. package/dist/voice-types.d.ts.map +1 -0
  122. package/dist/voice.d.ts +178 -0
  123. package/dist/voice.d.ts.map +1 -0
  124. package/dist/zoom.d.ts +92 -0
  125. package/dist/zoom.d.ts.map +1 -0
  126. package/package.json +2 -2
@@ -0,0 +1,188 @@
1
+ export type StreamStatus = "idle" | "connecting" | "live" | "reconnecting" | "ending" | "ended" | "failed";
2
+ export type StreamProtocol = "webrtc" | "srt" | "rtmp" | "hls" | "ndi" | "omt";
3
+ export type StreamQuality = "source" | "4k" | "1080p" | "720p" | "480p" | "360p";
4
+ export interface Stream extends Timestamps {
5
+ /** Unique stream identifier */
6
+ id: string;
7
+ /** Organization that owns the stream */
8
+ organization_id: string;
9
+ /** Human-readable stream title */
10
+ title: string;
11
+ /** Optional description */
12
+ description?: string;
13
+ /** Current lifecycle status */
14
+ status: StreamStatus;
15
+ /** Ingest protocol */
16
+ protocol: StreamProtocol;
17
+ /** URL to push media to */
18
+ ingest_url?: string;
19
+ /** URL for viewers to watch */
20
+ playback_url?: string;
21
+ /** Secret key for stream authentication */
22
+ stream_key?: string;
23
+ /** Video resolution (e.g., "1920x1080") */
24
+ resolution?: string;
25
+ /** Video frame rate in fps */
26
+ frame_rate?: number;
27
+ /** Video bitrate in kilobits per second */
28
+ bitrate_kbps?: number;
29
+ /** Current number of connected viewers */
30
+ viewer_count: number;
31
+ /** Whether recording is enabled */
32
+ recording_enabled: boolean;
33
+ /** Whether DVR (rewind during live) is enabled */
34
+ dvr_enabled: boolean;
35
+ /** Whether low-latency mode is active */
36
+ low_latency: boolean;
37
+ /** Maximum allowed stream duration in seconds */
38
+ max_duration_seconds?: number;
39
+ /** ISO 8601 timestamp when the stream went live */
40
+ started_at?: string;
41
+ /** ISO 8601 timestamp when the stream ended */
42
+ ended_at?: string;
43
+ /** Categorization tags */
44
+ tags?: string[];
45
+ /** Arbitrary key-value metadata */
46
+ metadata?: Metadata;
47
+ }
48
+ export interface CreateStreamRequest {
49
+ /** Human-readable stream title */
50
+ title: string;
51
+ /** Optional description */
52
+ description?: string;
53
+ /** Ingest protocol (default: webrtc) */
54
+ protocol?: StreamProtocol;
55
+ /** Quality preset for transcoding */
56
+ quality?: StreamQuality;
57
+ /** Enable recording of the stream */
58
+ recording_enabled?: boolean;
59
+ /** Enable DVR (rewind during live) */
60
+ dvr_enabled?: boolean;
61
+ /** Enable low-latency mode */
62
+ low_latency?: boolean;
63
+ /** Maximum allowed duration in seconds */
64
+ max_duration_seconds?: number;
65
+ /** Preferred ingest region (e.g., "us-east-1") */
66
+ region?: string;
67
+ /** Categorization tags */
68
+ tags?: string[];
69
+ /** Arbitrary key-value metadata */
70
+ metadata?: Metadata;
71
+ /** Webhook URL for stream lifecycle events */
72
+ webhook_url?: string;
73
+ }
74
+ export interface UpdateStreamRequest {
75
+ /** Updated title */
76
+ title?: string;
77
+ /** Updated description */
78
+ description?: string;
79
+ /** Toggle recording */
80
+ recording_enabled?: boolean;
81
+ /** Toggle DVR */
82
+ dvr_enabled?: boolean;
83
+ /** Toggle low-latency mode */
84
+ low_latency?: boolean;
85
+ /** Update metadata */
86
+ metadata?: Metadata;
87
+ /** Update tags */
88
+ tags?: string[];
89
+ }
90
+ export interface ListStreamsParams extends PaginationParams {
91
+ /** Filter by stream status */
92
+ status?: StreamStatus;
93
+ /** Filter by ingest protocol */
94
+ protocol?: StreamProtocol;
95
+ /** Filter streams created after this ISO 8601 timestamp */
96
+ created_after?: string;
97
+ /** Filter streams created before this ISO 8601 timestamp */
98
+ created_before?: string;
99
+ /** Field to order results by */
100
+ order_by?: "created_at" | "started_at" | "viewer_count" | "title";
101
+ /** Sort direction */
102
+ order?: "asc" | "desc";
103
+ }
104
+ export interface StreamHealth {
105
+ /** Stream this health report belongs to */
106
+ stream_id: string;
107
+ /** Overall health assessment */
108
+ status: "healthy" | "degraded" | "critical";
109
+ /** Current video bitrate in kbps */
110
+ bitrate_kbps: number;
111
+ /** Current frame rate in fps */
112
+ frame_rate: number;
113
+ /** Number of dropped frames since stream start */
114
+ dropped_frames: number;
115
+ /** End-to-end latency in milliseconds */
116
+ latency_ms: number;
117
+ /** Current viewer count */
118
+ viewer_count: number;
119
+ /** Seconds since the stream went live */
120
+ uptime_seconds: number;
121
+ /** ISO 8601 timestamp of the last received keyframe */
122
+ last_keyframe_at?: string;
123
+ /** Encoder software/hardware info reported by the source */
124
+ encoder_info?: string;
125
+ }
126
+ export interface StreamRecording extends Timestamps {
127
+ /** Unique recording identifier */
128
+ id: string;
129
+ /** Stream this recording was captured from */
130
+ stream_id: string;
131
+ /** Recording pipeline status */
132
+ status: "recording" | "processing" | "ready" | "failed";
133
+ /** Duration in seconds */
134
+ duration?: number;
135
+ /** File size in bytes */
136
+ file_size?: number;
137
+ /** URL to download the recording file */
138
+ download_url?: string;
139
+ /** URL for playback */
140
+ playback_url?: string;
141
+ /** Container format (e.g., "mp4", "ts") */
142
+ format?: string;
143
+ }
144
+ export interface IngestEndpoint {
145
+ /** Protocol for this endpoint */
146
+ protocol: StreamProtocol;
147
+ /** Primary ingest URL */
148
+ url: string;
149
+ /** Stream key for authentication */
150
+ stream_key: string;
151
+ /** Region where this endpoint is located */
152
+ region: string;
153
+ /** Backup ingest URL for failover */
154
+ backup_url?: string;
155
+ }
156
+ export interface ViewerSession {
157
+ /** Unique session identifier */
158
+ id: string;
159
+ /** Stream being watched */
160
+ stream_id: string;
161
+ /** Viewer's user or anonymous identifier */
162
+ viewer_id: string;
163
+ /** Playback protocol the viewer is using */
164
+ protocol: StreamProtocol;
165
+ /** Quality level the viewer is receiving */
166
+ quality: StreamQuality;
167
+ /** ISO 8601 timestamp when the viewer joined */
168
+ started_at: string;
169
+ /** Duration the viewer has been watching in seconds */
170
+ duration: number;
171
+ /** Viewer's geographic region */
172
+ region?: string;
173
+ /** Device type (e.g., "desktop", "mobile", "tv") */
174
+ device_type?: string;
175
+ /** Number of buffering events during this session */
176
+ buffering_events: number;
177
+ }
178
+ export interface StreamEvent {
179
+ /** Event type */
180
+ type: "stream.started" | "stream.ended" | "viewer.joined" | "viewer.left" | "health.degraded" | "recording.ready";
181
+ /** Stream this event relates to */
182
+ stream_id: string;
183
+ /** ISO 8601 timestamp when the event occurred */
184
+ timestamp: string;
185
+ /** Event-specific payload */
186
+ data?: Record<string, unknown>;
187
+ }
188
+ //# sourceMappingURL=pipeline-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-types.d.ts","sourceRoot":"","sources":["../src/pipeline-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * WAVE SDK - Pipeline API
3
+ *
4
+ * Manage live streams across protocols (WebRTC, SRT, RTMP, HLS, NDI, OMT).
5
+ * The Pipeline is WAVE's core streaming engine for ingesting, transcoding,
6
+ * and delivering live video at scale.
7
+ *
8
+ * NOTE: This is a client SDK. All authorization checks are performed server-side.
9
+ * The API will return 403 Forbidden if the user lacks required permissions.
10
+ */
11
+ import type { WaveClient, PaginationParams, PaginatedResponse } from "./client";
12
+ import type { StreamProtocol, Stream, CreateStreamRequest, UpdateStreamRequest, ListStreamsParams, StreamHealth, StreamRecording, IngestEndpoint, ViewerSession } from './pipeline-types';
13
+ /**
14
+ * Stream lifecycle status
15
+ */
16
+ /**
17
+ * Supported streaming protocols
18
+ */
19
+ /**
20
+ * Stream quality presets
21
+ */
22
+ /**
23
+ * Live stream object
24
+ */
25
+ /**
26
+ * Request body to create a new stream
27
+ */
28
+ /**
29
+ * Request body to update an existing stream
30
+ */
31
+ /**
32
+ * Query parameters for listing streams
33
+ */
34
+ /**
35
+ * Real-time health metrics for a live stream
36
+ */
37
+ /**
38
+ * A recording created from a live stream
39
+ */
40
+ /**
41
+ * Ingest endpoint details for a stream
42
+ */
43
+ /**
44
+ * A single viewer session on a stream
45
+ */
46
+ /**
47
+ * A stream lifecycle or health event
48
+ */
49
+ /**
50
+ * Pipeline API client
51
+ *
52
+ * All operations require appropriate permissions. Authorization is enforced
53
+ * server-side - the API returns 403 if the authenticated user lacks access.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * import { WaveClient } from '@wave/sdk';
58
+ * import { PipelineAPI } from '@wave/sdk/pipeline';
59
+ *
60
+ * const client = new WaveClient({ apiKey: 'your-api-key' });
61
+ * const pipeline = new PipelineAPI(client);
62
+ *
63
+ * // Create a stream
64
+ * const stream = await pipeline.create({
65
+ * title: 'My Live Stream',
66
+ * protocol: 'webrtc',
67
+ * recording_enabled: true,
68
+ * });
69
+ *
70
+ * // Start and wait for live
71
+ * await pipeline.start(stream.id);
72
+ * const live = await pipeline.waitForLive(stream.id);
73
+ * console.log('Stream is live:', live.playback_url);
74
+ *
75
+ * // Monitor health
76
+ * const health = await pipeline.getHealth(stream.id);
77
+ * console.log('Stream health:', health.status);
78
+ * ```
79
+ */
80
+ export declare class PipelineAPI {
81
+ private readonly client;
82
+ private readonly basePath;
83
+ constructor(client: WaveClient);
84
+ /**
85
+ * Create a new stream
86
+ *
87
+ * Requires: streams:create permission
88
+ */
89
+ create(request: CreateStreamRequest): Promise<Stream>;
90
+ /**
91
+ * Get a stream by ID
92
+ *
93
+ * Requires: streams:read permission
94
+ */
95
+ get(streamId: string): Promise<Stream>;
96
+ /**
97
+ * Update a stream
98
+ *
99
+ * Requires: streams:update permission
100
+ */
101
+ update(streamId: string, request: UpdateStreamRequest): Promise<Stream>;
102
+ /**
103
+ * Remove a stream
104
+ *
105
+ * Requires: streams:remove permission (server-side RBAC enforced)
106
+ */
107
+ remove(streamId: string): Promise<void>;
108
+ /**
109
+ * List streams with optional filters
110
+ *
111
+ * Requires: streams:read permission
112
+ */
113
+ list(params?: ListStreamsParams): Promise<PaginatedResponse<Stream>>;
114
+ /**
115
+ * Start a stream
116
+ *
117
+ * Transitions the stream from idle to connecting. The stream will move
118
+ * to "live" once media is received on the ingest endpoint.
119
+ *
120
+ * Requires: streams:start permission
121
+ */
122
+ start(streamId: string): Promise<Stream>;
123
+ /**
124
+ * Stop a stream
125
+ *
126
+ * Gracefully ends the stream. Any active recording will be finalized.
127
+ *
128
+ * Requires: streams:stop permission
129
+ */
130
+ stop(streamId: string): Promise<Stream>;
131
+ /**
132
+ * Switch the ingest protocol for a live stream
133
+ *
134
+ * Performs a zero-downtime protocol switch. The stream will briefly
135
+ * enter "reconnecting" status during the transition.
136
+ *
137
+ * Requires: streams:update permission
138
+ */
139
+ switchProtocol(streamId: string, protocol: StreamProtocol): Promise<Stream>;
140
+ /**
141
+ * Get real-time health metrics for a stream
142
+ *
143
+ * Returns current bitrate, frame rate, latency, and overall health status.
144
+ *
145
+ * Requires: streams:read permission
146
+ */
147
+ getHealth(streamId: string): Promise<StreamHealth>;
148
+ /**
149
+ * Get ingest endpoints for a stream
150
+ *
151
+ * Returns primary and backup URLs for each configured protocol.
152
+ *
153
+ * Requires: streams:read permission
154
+ */
155
+ getIngestEndpoints(streamId: string): Promise<IngestEndpoint[]>;
156
+ /**
157
+ * Start recording a live stream
158
+ *
159
+ * Begins capturing the stream to a file. The stream must be in "live" status.
160
+ *
161
+ * Requires: streams:record permission
162
+ */
163
+ startRecording(streamId: string): Promise<StreamRecording>;
164
+ /**
165
+ * Stop recording a live stream
166
+ *
167
+ * Finalizes the current recording. The recording enters "processing" status
168
+ * while it is being packaged.
169
+ *
170
+ * Requires: streams:record permission
171
+ */
172
+ stopRecording(streamId: string): Promise<StreamRecording>;
173
+ /**
174
+ * List recordings for a stream
175
+ *
176
+ * Requires: streams:read permission
177
+ */
178
+ listRecordings(streamId: string, params?: PaginationParams): Promise<PaginatedResponse<StreamRecording>>;
179
+ /**
180
+ * Get a specific recording
181
+ *
182
+ * Requires: streams:read permission
183
+ */
184
+ getRecording(streamId: string, recordingId: string): Promise<StreamRecording>;
185
+ /**
186
+ * List active viewer sessions for a stream
187
+ *
188
+ * Requires: streams:read permission
189
+ */
190
+ listViewers(streamId: string, params?: PaginationParams): Promise<PaginatedResponse<ViewerSession>>;
191
+ /**
192
+ * Get current and peak viewer count for a stream
193
+ *
194
+ * Requires: streams:read permission
195
+ */
196
+ getViewerCount(streamId: string): Promise<{
197
+ count: number;
198
+ peak: number;
199
+ }>;
200
+ /**
201
+ * Wait for a stream to reach "live" status
202
+ *
203
+ * Polls the stream until it transitions to "live" or a terminal state.
204
+ * Useful after calling `start()` to wait for the encoder to connect.
205
+ *
206
+ * @param streamId - Stream to monitor
207
+ * @param options - Polling configuration
208
+ * @param options.pollInterval - Milliseconds between polls (default: 2000)
209
+ * @param options.timeout - Maximum wait time in milliseconds (default: 120000)
210
+ * @param options.onProgress - Called on each poll with the current stream state
211
+ * @returns The stream once it reaches "live" status
212
+ * @throws Error if the stream enters "failed" or "ended" status, or if the timeout is exceeded
213
+ */
214
+ waitForLive(streamId: string, options?: {
215
+ pollInterval?: number;
216
+ timeout?: number;
217
+ onProgress?: (stream: Stream) => void;
218
+ }): Promise<Stream>;
219
+ }
220
+ /**
221
+ * Create a Pipeline API instance
222
+ */
223
+ export declare function createPipelineAPI(client: WaveClient): PipelineAPI;
224
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * WAVE SDK - Podcast API
3
+ *
4
+ * Podcast production, episode management, and distribution.
5
+ */
6
+ import type { WaveClient, PaginationParams, PaginatedResponse, Timestamps } from "./client";
7
+ export type EpisodeStatus = "draft" | "processing" | "published" | "scheduled" | "failed";
8
+ export type DistributionTarget = "spotify" | "apple" | "google" | "amazon" | "overcast";
9
+ export interface Podcast extends Timestamps {
10
+ id: string;
11
+ organization_id: string;
12
+ title: string;
13
+ description: string;
14
+ cover_art_url?: string;
15
+ rss_url?: string;
16
+ category: string;
17
+ language: string;
18
+ explicit: boolean;
19
+ author: string;
20
+ email?: string;
21
+ website?: string;
22
+ subscriber_count: number;
23
+ episode_count: number;
24
+ }
25
+ export interface Episode extends Timestamps {
26
+ id: string;
27
+ podcast_id: string;
28
+ title: string;
29
+ description: string;
30
+ status: EpisodeStatus;
31
+ audio_url?: string;
32
+ duration_seconds: number;
33
+ file_size_bytes: number;
34
+ season_number?: number;
35
+ episode_number?: number;
36
+ published_at?: string;
37
+ scheduled_at?: string;
38
+ tags?: string[];
39
+ }
40
+ export interface PodcastAnalytics {
41
+ podcast_id: string;
42
+ total_downloads: number;
43
+ unique_listeners: number;
44
+ average_listen_duration: number;
45
+ top_episodes: {
46
+ episode_id: string;
47
+ downloads: number;
48
+ }[];
49
+ listener_geography: {
50
+ country: string;
51
+ count: number;
52
+ }[];
53
+ }
54
+ export interface PodcastDistribution {
55
+ target: DistributionTarget;
56
+ status: "connected" | "pending" | "error";
57
+ url?: string;
58
+ }
59
+ export interface CreatePodcastRequest {
60
+ title: string;
61
+ description: string;
62
+ category: string;
63
+ language?: string;
64
+ explicit?: boolean;
65
+ author?: string;
66
+ email?: string;
67
+ }
68
+ export interface CreateEpisodeRequest {
69
+ podcast_id: string;
70
+ title: string;
71
+ description: string;
72
+ audio_url?: string;
73
+ season_number?: number;
74
+ episode_number?: number;
75
+ tags?: string[];
76
+ scheduled_at?: string;
77
+ }
78
+ /**
79
+ * Podcast production, episode management, RSS feeds, and distribution.
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const podcast = await wave.podcast.create({ title: "My Show", description: "...", category: "Tech" });
84
+ * await wave.podcast.createEpisode({ podcast_id: podcast.id, title: "Ep 1", description: "..." });
85
+ * await wave.podcast.distribute(podcast.id, ["spotify", "apple"]);
86
+ * ```
87
+ */
88
+ export declare class PodcastAPI {
89
+ private readonly client;
90
+ private readonly basePath;
91
+ constructor(client: WaveClient);
92
+ create(request: CreatePodcastRequest): Promise<Podcast>;
93
+ get(podcastId: string): Promise<Podcast>;
94
+ update(podcastId: string, updates: Partial<CreatePodcastRequest>): Promise<Podcast>;
95
+ remove(podcastId: string): Promise<void>;
96
+ list(params?: PaginationParams): Promise<PaginatedResponse<Podcast>>;
97
+ createEpisode(request: CreateEpisodeRequest): Promise<Episode>;
98
+ getEpisode(episodeId: string): Promise<Episode>;
99
+ updateEpisode(episodeId: string, updates: Partial<CreateEpisodeRequest>): Promise<Episode>;
100
+ removeEpisode(episodeId: string): Promise<void>;
101
+ publishEpisode(episodeId: string): Promise<Episode>;
102
+ listEpisodes(podcastId: string, params?: PaginationParams): Promise<PaginatedResponse<Episode>>;
103
+ getRSSFeed(podcastId: string): Promise<{
104
+ url: string;
105
+ xml: string;
106
+ }>;
107
+ getAnalytics(podcastId: string, params?: {
108
+ period?: string;
109
+ }): Promise<PodcastAnalytics>;
110
+ distribute(podcastId: string, targets: DistributionTarget[]): Promise<PodcastDistribution[]>;
111
+ getDistributionStatus(podcastId: string): Promise<PodcastDistribution[]>;
112
+ }
113
+ export declare function createPodcastAPI(client: WaveClient): PodcastAPI;
114
+ //# sourceMappingURL=podcast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"podcast.d.ts","sourceRoot":"","sources":["../src/podcast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * WAVE SDK - Prism API
3
+ *
4
+ * Virtual Device Bridge - present network AV sources (NDI, ONVIF, VISCA, Dante)
5
+ * as standard USB UVC/UAC devices to conferencing apps.
6
+ */
7
+ import type { WaveClient, PaginationParams, PaginatedResponse, Timestamps } from "./client";
8
+ export type VirtualDeviceType = "camera" | "microphone";
9
+ export type DeviceStatus = "created" | "starting" | "running" | "stopping" | "stopped" | "error";
10
+ export type SourceProtocol = "ndi" | "onvif" | "srt" | "rtmp" | "webrtc" | "dante" | "cloudflare" | "livekit";
11
+ export type PTZProtocol = "ndi" | "onvif" | "visca" | "pelcod" | "cgi" | "livekit";
12
+ export interface VirtualDevice extends Timestamps {
13
+ id: string;
14
+ organization_id: string;
15
+ name: string;
16
+ type: VirtualDeviceType;
17
+ status: DeviceStatus;
18
+ source_protocol: SourceProtocol;
19
+ source_endpoint: string;
20
+ node_id: string;
21
+ resolution?: {
22
+ width: number;
23
+ height: number;
24
+ };
25
+ frame_rate?: number;
26
+ health_score: number;
27
+ ptz_enabled: boolean;
28
+ ptz_protocol?: PTZProtocol;
29
+ }
30
+ export interface PresetMapping extends Timestamps {
31
+ id: string;
32
+ device_id: string;
33
+ slot_number: number;
34
+ preset_name: string;
35
+ preset_token: string;
36
+ protocol: PTZProtocol;
37
+ transition_speed: number;
38
+ }
39
+ export interface DeviceHealth {
40
+ device_id: string;
41
+ status: "healthy" | "degraded" | "critical" | "offline";
42
+ latency_ms: number;
43
+ dropped_frames: number;
44
+ fps: number;
45
+ cpu_usage: number;
46
+ source_connected: boolean;
47
+ driver_connected: boolean;
48
+ }
49
+ export interface DiscoveredSource {
50
+ id: string;
51
+ name: string;
52
+ protocol: string;
53
+ address: string;
54
+ supports_ptz: boolean;
55
+ capabilities: string[];
56
+ discovered_at: string;
57
+ }
58
+ export interface CreateDeviceRequest {
59
+ name: string;
60
+ type: VirtualDeviceType;
61
+ source_protocol: SourceProtocol;
62
+ source_endpoint: string;
63
+ node_id: string;
64
+ resolution?: {
65
+ width: number;
66
+ height: number;
67
+ };
68
+ frame_rate?: number;
69
+ ptz_enabled?: boolean;
70
+ ptz_protocol?: PTZProtocol;
71
+ metadata?: Record<string, unknown>;
72
+ }
73
+ export interface UpdateDeviceRequest {
74
+ name?: string;
75
+ source_endpoint?: string;
76
+ resolution?: {
77
+ width: number;
78
+ height: number;
79
+ };
80
+ frame_rate?: number;
81
+ metadata?: Record<string, unknown>;
82
+ }
83
+ export interface SetPresetRequest {
84
+ slot_number: number;
85
+ preset_name: string;
86
+ preset_token: string;
87
+ protocol: PTZProtocol;
88
+ transition_speed?: number;
89
+ }
90
+ export interface ListDevicesParams extends PaginationParams {
91
+ type?: VirtualDeviceType;
92
+ status?: DeviceStatus;
93
+ node_id?: string;
94
+ source_protocol?: SourceProtocol;
95
+ order_by?: string;
96
+ order?: "asc" | "desc";
97
+ }
98
+ /**
99
+ * Virtual Device Bridge - present network AV sources (NDI, ONVIF, VISCA, Dante)
100
+ * as standard USB UVC/UAC devices to conferencing apps (Zoom, Teams, Meet).
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * const device = await wave.prism.createDevice({ name: 'PTZ Cam', type: 'camera', source_protocol: 'ndi', source_endpoint: 'NDI-1', node_id: 'node_abc' });
105
+ * await wave.prism.startDevice(device.id);
106
+ * await wave.prism.setPreset(device.id, { slot_number: 1, preset_name: 'Wide', preset_token: 'p1', protocol: 'ndi' });
107
+ * const sources = await wave.prism.discoverSources({ protocols: ['ndi', 'onvif'] });
108
+ * ```
109
+ */
110
+ export declare class PrismAPI {
111
+ private readonly client;
112
+ private readonly basePath;
113
+ constructor(client: WaveClient);
114
+ createDevice(request: CreateDeviceRequest): Promise<VirtualDevice>;
115
+ getDevice(deviceId: string): Promise<VirtualDevice>;
116
+ updateDevice(deviceId: string, request: UpdateDeviceRequest): Promise<VirtualDevice>;
117
+ removeDevice(deviceId: string): Promise<void>;
118
+ listDevices(params?: ListDevicesParams): Promise<PaginatedResponse<VirtualDevice>>;
119
+ startDevice(deviceId: string): Promise<VirtualDevice>;
120
+ stopDevice(deviceId: string): Promise<VirtualDevice>;
121
+ getHealth(deviceId: string): Promise<DeviceHealth>;
122
+ discoverSources(options?: {
123
+ protocols?: string[];
124
+ subnet?: string;
125
+ timeout?: number;
126
+ }): Promise<DiscoveredSource[]>;
127
+ getPresets(deviceId: string): Promise<PresetMapping[]>;
128
+ setPreset(deviceId: string, request: SetPresetRequest): Promise<PresetMapping>;
129
+ removePreset(deviceId: string, slotNumber: number): Promise<void>;
130
+ recallPreset(deviceId: string, slotNumber: number): Promise<void>;
131
+ }
132
+ export declare function createPrismAPI(client: WaveClient): PrismAPI;
133
+ //# sourceMappingURL=prism.d.ts.map