@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,59 @@
1
+ export interface WaveClientConfig {
2
+ /** API key for authentication */
3
+ apiKey: string;
4
+ /** Organization ID for tenant isolation */
5
+ organizationId?: string;
6
+ /** Base URL for the API (default: https://api.wave.online) */
7
+ baseUrl?: string;
8
+ /** Request timeout in milliseconds (default: 30000) */
9
+ timeout?: number;
10
+ /** Maximum retry attempts for failed requests (default: 3) */
11
+ maxRetries?: number;
12
+ /** Enable debug logging */
13
+ debug?: boolean;
14
+ /** Custom headers to include in all requests */
15
+ customHeaders?: Record<string, string>;
16
+ /** Optional telemetry configuration for OpenTelemetry integration */
17
+ telemetry?: TelemetryConfig;
18
+ }
19
+ export interface RequestOptions extends RequestInit {
20
+ /** Skip retry logic for this request */
21
+ noRetry?: boolean;
22
+ /** Custom timeout for this request */
23
+ timeout?: number;
24
+ /** Query parameters */
25
+ params?: Record<string, string | number | boolean | undefined>;
26
+ }
27
+ export interface WaveAPIErrorResponse {
28
+ error: {
29
+ code: string;
30
+ message: string;
31
+ details?: Record<string, unknown>;
32
+ };
33
+ request_id?: string;
34
+ }
35
+ export interface WaveClientEvents {
36
+ 'request.start': (url: string, method: string) => void;
37
+ 'request.success': (url: string, method: string, duration: number) => void;
38
+ 'request.error': (url: string, method: string, error: Error) => void;
39
+ 'request.retry': (url: string, method: string, attempt: number, delay: number) => void;
40
+ 'rate_limit.hit': (retryAfter: number) => void;
41
+ }
42
+ export interface PaginationParams {
43
+ limit?: number;
44
+ offset?: number;
45
+ cursor?: string;
46
+ }
47
+ export interface PaginatedResponse<T> {
48
+ data: T[];
49
+ total: number;
50
+ has_more: boolean;
51
+ next_cursor?: string;
52
+ }
53
+ export type MediaType = 'video' | 'audio' | 'image';
54
+ export interface Timestamps {
55
+ created_at: string;
56
+ updated_at: string;
57
+ }
58
+ export type Metadata = Record<string, string | number | boolean>;
59
+ //# sourceMappingURL=client-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-types.d.ts","sourceRoot":"","sources":["../src/client-types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AACD,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;CAChE;AACD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACrE,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvF,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AACD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AACpD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * WAVE SDK - Base API Client
3
+ *
4
+ * Core HTTP client with authentication, rate limiting, and retry logic.
5
+ */
6
+ import { EventEmitter } from 'eventemitter3';
7
+ import type { TelemetryConfig } from './telemetry';
8
+ import type { WaveClientConfig, RequestOptions, WaveClientEvents } from './client-types';
9
+ /**
10
+ * SDK configuration options
11
+ */
12
+ /**
13
+ * Request options for individual API calls
14
+ */
15
+ /**
16
+ * API error response structure
17
+ */
18
+ /**
19
+ * WAVE SDK Error class
20
+ */
21
+ export declare class WaveError extends Error {
22
+ readonly code: string;
23
+ readonly statusCode: number;
24
+ readonly requestId?: string;
25
+ readonly details?: Record<string, unknown>;
26
+ readonly retryable: boolean;
27
+ constructor(message: string, code: string, statusCode: number, requestId?: string, details?: Record<string, unknown>);
28
+ }
29
+ /**
30
+ * Rate limit error with retry information
31
+ */
32
+ export declare class RateLimitError extends WaveError {
33
+ readonly retryAfter: number;
34
+ constructor(message: string, retryAfter: number, requestId?: string);
35
+ }
36
+ /**
37
+ * WAVE API Base Client
38
+ */
39
+ export declare class WaveClient extends EventEmitter<WaveClientEvents> {
40
+ protected readonly config: Required<Omit<WaveClientConfig, 'customHeaders' | 'telemetry'>> & {
41
+ customHeaders: Record<string, string>;
42
+ telemetry?: TelemetryConfig;
43
+ };
44
+ constructor(config: WaveClientConfig);
45
+ /**
46
+ * Make a GET request
47
+ */
48
+ get<T>(path: string, options?: RequestOptions): Promise<T>;
49
+ /**
50
+ * Make a POST request
51
+ */
52
+ post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T>;
53
+ /**
54
+ * Make a PUT request
55
+ */
56
+ put<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T>;
57
+ /**
58
+ * Make a PATCH request
59
+ */
60
+ patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T>;
61
+ /**
62
+ * Make a DELETE request
63
+ */
64
+ delete<T>(path: string, options?: RequestOptions): Promise<T>;
65
+ /**
66
+ * Make an API request with retry logic
67
+ */
68
+ protected request<T>(path: string, options?: RequestOptions): Promise<T>;
69
+ /**
70
+ * Execute request with exponential backoff retry
71
+ */
72
+ private executeWithRetry;
73
+ /**
74
+ * Fetch with timeout
75
+ */
76
+ private fetchWithTimeout;
77
+ /**
78
+ * Build request headers
79
+ */
80
+ private buildHeaders;
81
+ /**
82
+ * Parse error response
83
+ */
84
+ /**
85
+ * Parse Retry-After header
86
+ */
87
+ /**
88
+ * Calculate exponential backoff delay
89
+ */
90
+ private calculateBackoff;
91
+ /**
92
+ * Sleep utility
93
+ */
94
+ private sleep;
95
+ /**
96
+ * Log debug message
97
+ */
98
+ protected log(message: string, ...args: unknown[]): void;
99
+ }
100
+ /**
101
+ * Create a new WAVE client instance
102
+ */
103
+ export declare function createClient(config: WaveClientConfig): WaveClient;
104
+ /**
105
+ * Standard pagination parameters
106
+ */
107
+ /**
108
+ * Standard paginated response
109
+ */
110
+ /**
111
+ * Media types supported by WAVE
112
+ */
113
+ /**
114
+ * Standard timestamp fields
115
+ */
116
+ /**
117
+ * Standard metadata object
118
+ */
119
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export type ClipStatus = 'pending' | 'processing' | 'ready' | 'failed' | 'deleted';
2
+ export type ClipExportFormat = 'mp4' | 'webm' | 'mov' | 'gif' | 'mp3' | 'wav';
3
+ export type ClipQualityPreset = 'low' | 'medium' | 'high' | 'source' | 'custom';
4
+ export interface ClipSource {
5
+ type: 'stream' | 'recording' | 'upload';
6
+ id: string;
7
+ start_time: number;
8
+ end_time: number;
9
+ }
10
+ export interface Clip extends Timestamps {
11
+ id: string;
12
+ organization_id: string;
13
+ title: string;
14
+ description?: string;
15
+ source: ClipSource;
16
+ status: ClipStatus;
17
+ duration: number;
18
+ thumbnail_url?: string;
19
+ playback_url?: string;
20
+ download_url?: string;
21
+ file_size?: number;
22
+ width?: number;
23
+ height?: number;
24
+ frame_rate?: number;
25
+ bitrate?: number;
26
+ codec?: string;
27
+ tags?: string[];
28
+ metadata?: Metadata;
29
+ error?: string;
30
+ }
31
+ //# sourceMappingURL=clips-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clips-types.d.ts","sourceRoot":"","sources":["../src/clips-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,SAAS,CAAC;AACd,MAAM,MAAM,gBAAgB,GACxB,KAAK,GACL,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,CAAC;AACV,MAAM,MAAM,iBAAiB,GACzB,KAAK,GACL,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,QAAQ,CAAC;AACb,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,IAAK,SAAQ,UAAU;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * WAVE SDK - Clips API
3
+ *
4
+ * Create, manage, and export video clips from streams and recordings.
5
+ *
6
+ * NOTE: This is a client SDK. All authorization checks are performed server-side.
7
+ * The API will return 403 Forbidden if the user lacks required permissions.
8
+ */
9
+ import type { WaveClient, PaginationParams, PaginatedResponse, Timestamps, Metadata } from './client';
10
+ import type { ClipStatus, ClipExportFormat, ClipQualityPreset, ClipSource, Clip } from './clips-types';
11
+ /**
12
+ * Clip status
13
+ */
14
+ /**
15
+ * Clip export format
16
+ */
17
+ /**
18
+ * Clip quality preset
19
+ */
20
+ /**
21
+ * Clip source reference
22
+ */
23
+ /**
24
+ * Clip object
25
+ */
26
+ /**
27
+ * Create clip request
28
+ */
29
+ export interface CreateClipRequest {
30
+ title: string;
31
+ description?: string;
32
+ source: ClipSource;
33
+ quality?: ClipQualityPreset;
34
+ format?: ClipExportFormat;
35
+ tags?: string[];
36
+ metadata?: Metadata;
37
+ /** Enable AI-powered highlight detection */
38
+ auto_highlights?: boolean;
39
+ /** Webhook URL for status updates */
40
+ webhook_url?: string;
41
+ }
42
+ /**
43
+ * Update clip request
44
+ */
45
+ export interface UpdateClipRequest {
46
+ title?: string;
47
+ description?: string;
48
+ tags?: string[];
49
+ metadata?: Metadata;
50
+ }
51
+ /**
52
+ * List clips filters
53
+ */
54
+ export interface ListClipsParams extends PaginationParams {
55
+ status?: ClipStatus;
56
+ source_type?: 'stream' | 'recording' | 'upload';
57
+ source_id?: string;
58
+ tags?: string[];
59
+ created_after?: string;
60
+ created_before?: string;
61
+ order_by?: 'created_at' | 'duration' | 'title';
62
+ order?: 'asc' | 'desc';
63
+ }
64
+ /**
65
+ * Export clip request
66
+ */
67
+ export interface ExportClipRequest {
68
+ format: ClipExportFormat;
69
+ quality?: ClipQualityPreset;
70
+ /** Custom resolution (e.g., "1920x1080") */
71
+ resolution?: string;
72
+ /** Custom bitrate in kbps */
73
+ bitrate?: number;
74
+ /** Include audio */
75
+ include_audio?: boolean;
76
+ /** Add watermark */
77
+ watermark?: {
78
+ image_url: string;
79
+ position: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center';
80
+ opacity?: number;
81
+ scale?: number;
82
+ };
83
+ }
84
+ /**
85
+ * Export job status
86
+ */
87
+ export interface ClipExport extends Timestamps {
88
+ id: string;
89
+ clip_id: string;
90
+ status: 'pending' | 'processing' | 'ready' | 'failed';
91
+ format: ClipExportFormat;
92
+ download_url?: string;
93
+ file_size?: number;
94
+ expires_at?: string;
95
+ error?: string;
96
+ }
97
+ /**
98
+ * Auto-highlight result
99
+ */
100
+ export interface ClipHighlight {
101
+ start_time: number;
102
+ end_time: number;
103
+ score: number;
104
+ type: 'action' | 'speech' | 'emotion' | 'custom';
105
+ label?: string;
106
+ }
107
+ /**
108
+ * Clips API client
109
+ *
110
+ * All operations require appropriate permissions. Authorization is enforced
111
+ * server-side - the API returns 403 if the authenticated user lacks access.
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * import { WaveClient } from '@wave/sdk';
116
+ * import { ClipsAPI } from '@wave/sdk/clips';
117
+ *
118
+ * const client = new WaveClient({ apiKey: 'your-api-key' });
119
+ * const clips = new ClipsAPI(client);
120
+ *
121
+ * // Create a clip from a stream
122
+ * const clip = await clips.create({
123
+ * title: 'Best Moment',
124
+ * source: {
125
+ * type: 'stream',
126
+ * id: 'stream_123',
127
+ * start_time: 120,
128
+ * end_time: 150,
129
+ * },
130
+ * });
131
+ *
132
+ * // Wait for processing
133
+ * const ready = await clips.waitForReady(clip.id);
134
+ * console.log('Clip ready:', ready.playback_url);
135
+ * ```
136
+ */
137
+ export declare class ClipsAPI {
138
+ private readonly client;
139
+ private readonly basePath;
140
+ constructor(client: WaveClient);
141
+ /**
142
+ * Create a new clip
143
+ *
144
+ * Requires: clips:create permission
145
+ */
146
+ create(request: CreateClipRequest): Promise<Clip>;
147
+ /**
148
+ * Get a clip by ID
149
+ *
150
+ * Requires: clips:read permission
151
+ */
152
+ get(clipId: string): Promise<Clip>;
153
+ /**
154
+ * Update a clip
155
+ *
156
+ * Requires: clips:update permission
157
+ */
158
+ update(clipId: string, request: UpdateClipRequest): Promise<Clip>;
159
+ /**
160
+ * Remove a clip
161
+ *
162
+ * Requires: clips:remove permission (server-side RBAC enforced)
163
+ */
164
+ remove(clipId: string): Promise<void>;
165
+ /**
166
+ * List clips with optional filters
167
+ *
168
+ * Requires: clips:read permission
169
+ */
170
+ list(params?: ListClipsParams): Promise<PaginatedResponse<Clip>>;
171
+ /**
172
+ * Export a clip to a different format
173
+ *
174
+ * Requires: clips:export permission
175
+ */
176
+ exportClip(clipId: string, request: ExportClipRequest): Promise<ClipExport>;
177
+ /**
178
+ * Get export job status
179
+ *
180
+ * Requires: clips:read permission
181
+ */
182
+ getExport(clipId: string, exportId: string): Promise<ClipExport>;
183
+ /**
184
+ * List all exports for a clip
185
+ *
186
+ * Requires: clips:read permission
187
+ */
188
+ listExports(clipId: string, params?: PaginationParams): Promise<PaginatedResponse<ClipExport>>;
189
+ /**
190
+ * Detect highlights in source content
191
+ *
192
+ * Requires: clips:analyze permission
193
+ */
194
+ detectHighlights(sourceType: 'stream' | 'recording', sourceId: string, options?: {
195
+ types?: ('action' | 'speech' | 'emotion')[];
196
+ min_score?: number;
197
+ max_results?: number;
198
+ }): Promise<ClipHighlight[]>;
199
+ /**
200
+ * Generate clips from detected highlights
201
+ *
202
+ * Requires: clips:create permission
203
+ */
204
+ createFromHighlights(sourceType: 'stream' | 'recording', sourceId: string, options?: {
205
+ min_score?: number;
206
+ max_clips?: number;
207
+ title_prefix?: string;
208
+ tags?: string[];
209
+ }): Promise<Clip[]>;
210
+ /**
211
+ * Wait for a clip to be ready
212
+ */
213
+ waitForReady(clipId: string, options?: {
214
+ pollInterval?: number;
215
+ timeout?: number;
216
+ onProgress?: (clip: Clip) => void;
217
+ }): Promise<Clip>;
218
+ /**
219
+ * Wait for an export to be ready
220
+ */
221
+ waitForExport(clipId: string, exportId: string, options?: {
222
+ pollInterval?: number;
223
+ timeout?: number;
224
+ }): Promise<ClipExport>;
225
+ }
226
+ /**
227
+ * Create a Clips API instance
228
+ */
229
+ export declare function createClipsAPI(client: WaveClient): ClipsAPI;
230
+ //# sourceMappingURL=clips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clips.d.ts","sourceRoot":"","sources":["../src/clips.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * WAVE Cloud Switcher SDK
3
+ *
4
+ * Control cloud video switchers programmatically.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ import type { WaveClient } from './client';
9
+ export interface SwitcherInstance {
10
+ readonly id: string;
11
+ readonly name: string;
12
+ readonly status: 'idle' | 'live' | 'error';
13
+ readonly inputCount: number;
14
+ readonly outputCount: number;
15
+ readonly resolution: '720p' | '1080p' | '4k';
16
+ readonly frameRate: 30 | 60;
17
+ readonly tier: 'starter' | 'pro' | 'enterprise';
18
+ readonly createdAt: string;
19
+ }
20
+ export interface SwitcherSource {
21
+ readonly id: string;
22
+ readonly type: 'webrtc' | 'srt' | 'ndi' | 'rtmp' | 'hls';
23
+ readonly label: string;
24
+ readonly status: 'connecting' | 'active' | 'error' | 'disconnected';
25
+ }
26
+ export interface TransitionOptions {
27
+ readonly type: 'cut' | 'mix' | 'wipe' | 'dip' | 'dve';
28
+ readonly durationMs?: number;
29
+ readonly wipePattern?: string;
30
+ }
31
+ export interface CreateSwitcherOptions {
32
+ readonly name: string;
33
+ readonly resolution?: '720p' | '1080p' | '4k';
34
+ readonly frameRate?: 30 | 60;
35
+ }
36
+ export interface AddSourceOptions {
37
+ readonly type: 'webrtc' | 'srt' | 'ndi' | 'rtmp';
38
+ readonly label: string;
39
+ readonly config: Record<string, unknown>;
40
+ }
41
+ export interface AddOutputOptions {
42
+ readonly type: 'rtmp' | 'srt' | 'hls' | 'recording';
43
+ readonly config: Record<string, unknown>;
44
+ }
45
+ export declare class CloudSwitcherAPI {
46
+ private readonly client;
47
+ private readonly basePath;
48
+ constructor(client: WaveClient);
49
+ create(options: CreateSwitcherOptions): Promise<SwitcherInstance>;
50
+ get(switcherId: string): Promise<SwitcherInstance>;
51
+ list(): Promise<SwitcherInstance[]>;
52
+ remove(switcherId: string): Promise<void>;
53
+ addSource(switcherId: string, options: AddSourceOptions): Promise<SwitcherSource>;
54
+ removeSource(switcherId: string, sourceId: string): Promise<void>;
55
+ switchTo(switcherId: string, sourceId: string): Promise<void>;
56
+ transition(switcherId: string, options: TransitionOptions): Promise<void>;
57
+ addOutput(switcherId: string, options: AddOutputOptions): Promise<{
58
+ id: string;
59
+ }>;
60
+ startStreaming(switcherId: string, outputId: string): Promise<void>;
61
+ stopStreaming(switcherId: string, outputId: string): Promise<void>;
62
+ startRecording(switcherId: string): Promise<void>;
63
+ stopRecording(switcherId: string): Promise<void>;
64
+ }
65
+ export declare function createCloudSwitcherAPI(client: WaveClient): CloudSwitcherAPI;
66
+ //# sourceMappingURL=cloud-switcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-switcher.d.ts","sourceRoot":"","sources":["../src/cloud-switcher.ts"],"names":[],"mappings":"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"}