@genfeedai/workflow-ui 0.2.3 → 0.2.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 (45) hide show
  1. package/dist/canvas.d.ts +22 -22
  2. package/dist/canvas.mjs +16 -16
  3. package/dist/{chunk-XPZAHIWY.mjs → chunk-2FUPL67V.mjs} +1592 -1044
  4. package/dist/{chunk-HWVTD2LC.mjs → chunk-53XDE62A.mjs} +818 -623
  5. package/dist/{chunk-PCIWWD37.mjs → chunk-7LV4UAUS.mjs} +19 -19
  6. package/dist/{chunk-7SKSRSS7.mjs → chunk-B4EAAKYF.mjs} +16 -16
  7. package/dist/{chunk-ZJD5WMR3.mjs → chunk-C6MQBJFC.mjs} +45 -13
  8. package/dist/{chunk-7H3WJJYS.mjs → chunk-ESVULCFY.mjs} +12 -6
  9. package/dist/{chunk-GWBGK3KL.mjs → chunk-FWJIAW2E.mjs} +82 -47
  10. package/dist/{chunk-R727OFBR.mjs → chunk-GPYIIWD5.mjs} +404 -350
  11. package/dist/{chunk-OQREHJXK.mjs → chunk-IYFWAJBB.mjs} +208 -203
  12. package/dist/{chunk-N5NJZTK4.mjs → chunk-MGLAKMDP.mjs} +23 -21
  13. package/dist/{chunk-LT3ZJJL6.mjs → chunk-OJWVEEMM.mjs} +497 -399
  14. package/dist/{chunk-ZD2BADZO.mjs → chunk-ORVDYXDP.mjs} +221 -175
  15. package/dist/{chunk-CV4M7CNU.mjs → chunk-QQVHGJ2G.mjs} +149 -142
  16. package/dist/{chunk-6PSJTBNV.mjs → chunk-U4QPE4CY.mjs} +387 -347
  17. package/dist/{chunk-EFXQT23N.mjs → chunk-VVQ4CH77.mjs} +5 -5
  18. package/dist/{chunk-VRN3UWE5.mjs → chunk-XRC3O5GK.mjs} +73 -73
  19. package/dist/{chunk-FT33LFII.mjs → chunk-YUIK4AHM.mjs} +1 -1
  20. package/dist/{chunk-FMJPFB6W.mjs → chunk-ZSITTZ4S.mjs} +630 -569
  21. package/dist/hooks.d.ts +37 -37
  22. package/dist/hooks.mjs +10 -10
  23. package/dist/index.d.ts +26 -11
  24. package/dist/index.mjs +105 -19
  25. package/dist/lib.d.ts +203 -203
  26. package/dist/lib.mjs +228 -198
  27. package/dist/nodes.d.ts +2 -2
  28. package/dist/nodes.mjs +12 -12
  29. package/dist/panels.d.ts +2 -3
  30. package/dist/panels.mjs +3 -3
  31. package/dist/provider.d.ts +2 -2
  32. package/dist/provider.mjs +2 -2
  33. package/dist/stores.d.ts +5 -5
  34. package/dist/stores.mjs +5 -5
  35. package/dist/toolbar.d.ts +42 -24
  36. package/dist/toolbar.mjs +4 -4
  37. package/dist/ui.d.ts +2 -2
  38. package/dist/ui.mjs +2 -2
  39. package/dist/{useCommentNavigation-BakbiiIc.d.ts → useRequiredInputs-ByoIS-fT.d.ts} +160 -160
  40. package/dist/{promptLibraryStore-Dl3Q3cP6.d.ts → workflowStore-Bsz0nd5c.d.ts} +368 -368
  41. package/dist/workflowStore-N2F7WIG3.mjs +2 -0
  42. package/package.json +77 -75
  43. package/src/styles/workflow-ui.css +56 -19
  44. package/dist/workflowStore-UAAKOOIK.mjs +0 -2
  45. package/dist/{types-IEKYuYhu.d.ts → types-CRXJnajq.d.ts} +1 -1
package/dist/lib.d.ts CHANGED
@@ -1,92 +1,40 @@
1
- import { HandleDefinition, NodeType, WorkflowNodeData, CubicBezier, EasingPreset, WorkflowNode, CostBreakdown, ImageModel, LipSyncModel, TextModel, VideoModel } from '@genfeedai/types';
2
- export { CostBreakdown, NodeCostEstimate } from '@genfeedai/types';
3
1
  import * as react from 'react';
4
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
+ import { CubicBezier, WorkflowNode, CostBreakdown, EasingPreset, NodeType, WorkflowNodeData, ImageModel, LipSyncModel, TextModel, VideoModel, HandleDefinition } from '@genfeedai/types';
4
+ export { CostBreakdown, NodeCostEstimate } from '@genfeedai/types';
5
5
 
6
- /**
7
- * Generates dynamic input handles from a model's input schema.
8
- *
9
- * Merges dynamically discovered handles with static handles defined in NODE_DEFINITIONS.
10
- * Static handles take precedence - dynamic handles are only added if not already present.
11
- *
12
- * @param inputSchema - The model's input schema containing properties
13
- * @param staticHandles - Static handles from NODE_DEFINITIONS
14
- * @returns Combined array of handles (static + dynamic)
15
- */
16
- declare function generateHandlesFromSchema(inputSchema: Record<string, unknown> | undefined, staticHandles: HandleDefinition[]): HandleDefinition[];
17
- /**
18
- * Check if a handle was dynamically generated from schema.
19
- */
20
- declare function isSchemaHandle(handle: HandleDefinition): boolean;
21
-
22
- /**
23
- * Utility functions for validating required schema fields
24
- */
25
- /**
26
- * Validates that all required fields in a JSON Schema have values.
27
- *
28
- * @param inputSchema - The JSON Schema with required array
29
- * @param values - Current field values
30
- * @param skipFields - Fields to skip (e.g., fields populated via connections)
31
- * @returns Validation result with isValid flag and list of missing fields
32
- */
33
- declare function validateRequiredSchemaFields(inputSchema: Record<string, unknown> | undefined, values: Record<string, unknown>, skipFields: Set<string>): {
34
- isValid: boolean;
35
- missingFields: string[];
36
- };
37
- /**
38
- * Fields that are populated via node connections rather than schema inputs.
39
- * These should be skipped when validating schema required fields.
40
- */
41
- declare const CONNECTION_FIELDS: Set<string>;
6
+ interface CubicBezierEditorProps {
7
+ value: CubicBezier;
8
+ onChange: (value: CubicBezier) => void;
9
+ onCommit?: (value: CubicBezier) => void;
10
+ disabled?: boolean;
11
+ width?: number;
12
+ height?: number;
13
+ }
14
+ declare function CubicBezierEditorComponent({ value, onChange, onCommit, disabled, width, height, }: CubicBezierEditorProps): react_jsx_runtime.JSX.Element;
15
+ declare const CubicBezierEditor: react.MemoExoticComponent<typeof CubicBezierEditorComponent>;
42
16
 
43
- /**
44
- * Shared utilities for working with provider model schemas
45
- */
46
- /**
47
- * Extract default values from schema properties
48
- */
49
- declare function getSchemaDefaults(schema: Record<string, unknown> | undefined): Record<string, unknown>;
50
- /**
51
- * Check if the model's schema supports image input
52
- * Used to determine whether to enable/disable image input handles
53
- */
54
- declare function supportsImageInput(schema: Record<string, unknown> | undefined): boolean;
55
- /**
56
- * Extract enum values from component schemas for SchemaInputs dropdowns
57
- */
58
- declare function extractEnumValues(componentSchemas: Record<string, {
59
- enum?: unknown[];
60
- type?: string;
61
- }> | undefined): Record<string, string[]> | undefined;
17
+ declare function calculateWorkflowCost(nodes: WorkflowNode[]): CostBreakdown;
18
+ declare function formatCost(amount: number): string;
62
19
 
63
- interface MediaInfo {
64
- url: string | null;
65
- urls?: string[];
66
- type: 'image' | 'video' | null;
67
- }
68
20
  /**
69
- * Extract media URL and type from node data
21
+ * Deduplicated Fetch Utility
22
+ *
23
+ * When multiple callers request the same URL concurrently, only one
24
+ * actual network request is made. All callers receive the same response
25
+ * data once the request completes. Responses are cached for 5 seconds.
70
26
  */
71
- declare function getMediaFromNode(nodeType: NodeType, data: WorkflowNodeData): MediaInfo;
72
-
73
27
  /**
74
- * Get the dimensions of an image from its source URL or data URL.
28
+ * Fetch with request deduplication.
29
+ *
30
+ * Multiple concurrent calls to the same URL (with same headers) will
31
+ * share a single network request. The response is cloned for each caller.
75
32
  */
76
- declare function getImageDimensions$1(src: string): Promise<{
77
- width: number;
78
- height: number;
79
- }>;
33
+ declare function deduplicatedFetch(url: string, options?: RequestInit): Promise<Response>;
80
34
  /**
81
- * Get duration and dimensions of a video from its source URL or data URL.
35
+ * Clear all cached responses.
82
36
  */
83
- declare function getVideoMetadata(src: string): Promise<{
84
- duration: number;
85
- dimensions: {
86
- width: number;
87
- height: number;
88
- };
89
- }>;
37
+ declare function clearFetchCache(): void;
90
38
 
91
39
  type EasingFunction = (t: number) => number;
92
40
  /**
@@ -98,10 +46,10 @@ declare const DEFAULT_CUSTOM_BEZIER: CubicBezier;
98
46
  /** Named presets for the CubicBezierEditor */
99
47
  declare const PRESET_BEZIERS: {
100
48
  readonly easeInExpoOutCubic: [0.85, 0, 0.15, 1];
101
- readonly easeInOutExpo: [0.87, 0, 0.13, 1];
102
- readonly easeInQuartOutQuad: [0.8, 0, 0.2, 1];
103
49
  readonly easeInOutCubic: [0.65, 0, 0.35, 1];
50
+ readonly easeInOutExpo: [0.87, 0, 0.13, 1];
104
51
  readonly easeInOutSine: [0.37, 0, 0.63, 1];
52
+ readonly easeInQuartOutQuad: [0.8, 0, 0.2, 1];
105
53
  };
106
54
  type EasingPresetName = keyof typeof PRESET_BEZIERS;
107
55
  /**
@@ -119,28 +67,28 @@ declare function createAsymmetricEase(easeIn: EasingFunction, easeOut: EasingFun
119
67
  declare const easing: {
120
68
  readonly easeInExpoOutCubic: EasingFunction;
121
69
  readonly easeInQuartOutQuad: EasingFunction;
122
- readonly linear: (t: number) => number;
123
- readonly easeInQuad: (t: number) => number;
124
- readonly easeOutQuad: (t: number) => number;
125
- readonly easeInOutQuad: (t: number) => number;
70
+ readonly easeInCirc: (t: number) => number;
126
71
  readonly easeInCubic: (t: number) => number;
127
- readonly easeOutCubic: (t: number) => number;
72
+ readonly easeInExpo: (t: number) => number;
73
+ readonly easeInOutCirc: (t: number) => number;
128
74
  readonly easeInOutCubic: (t: number) => number;
129
- readonly easeInQuart: (t: number) => number;
130
- readonly easeOutQuart: (t: number) => number;
75
+ readonly easeInOutExpo: (t: number) => number;
76
+ readonly easeInOutQuad: (t: number) => number;
131
77
  readonly easeInOutQuart: (t: number) => number;
132
- readonly easeInQuint: (t: number) => number;
133
- readonly easeOutQuint: (t: number) => number;
134
78
  readonly easeInOutQuint: (t: number) => number;
135
- readonly easeInSine: (t: number) => number;
136
- readonly easeOutSine: (t: number) => number;
137
79
  readonly easeInOutSine: (t: number) => number;
138
- readonly easeInExpo: (t: number) => number;
139
- readonly easeOutExpo: (t: number) => number;
140
- readonly easeInOutExpo: (t: number) => number;
141
- readonly easeInCirc: (t: number) => number;
80
+ readonly easeInQuad: (t: number) => number;
81
+ readonly easeInQuart: (t: number) => number;
82
+ readonly easeInQuint: (t: number) => number;
83
+ readonly easeInSine: (t: number) => number;
142
84
  readonly easeOutCirc: (t: number) => number;
143
- readonly easeInOutCirc: (t: number) => number;
85
+ readonly easeOutCubic: (t: number) => number;
86
+ readonly easeOutExpo: (t: number) => number;
87
+ readonly easeOutQuad: (t: number) => number;
88
+ readonly easeOutQuart: (t: number) => number;
89
+ readonly easeOutQuint: (t: number) => number;
90
+ readonly easeOutSine: (t: number) => number;
91
+ readonly linear: (t: number) => number;
144
92
  };
145
93
  /**
146
94
  * Create an easing function from cubic bezier control points
@@ -164,44 +112,6 @@ declare function applySpeedCurve(duration: number, curve: CubicBezier, sampleRat
164
112
  */
165
113
  declare function getEasingDisplayName(preset: EasingPreset | string): string;
166
114
 
167
- /**
168
- * Speed Curve Utility
169
- *
170
- * Advanced time-warping for video speed ramps using easing functions.
171
- * Maps original video timestamps to warped timestamps through easing curves.
172
- */
173
-
174
- /**
175
- * Maps original video timestamps to warped timestamps using any easing function.
176
- *
177
- * @param originalTime - Original timestamp in seconds (0 to inputDuration)
178
- * @param inputDuration - Input video duration in seconds (default: 5)
179
- * @param outputDuration - Output video duration in seconds (default: 1.5)
180
- * @param easingFunction - Easing function or function name string (default: easeInOutCubic)
181
- * @returns Warped timestamp for the output video
182
- */
183
- declare function warpTime(originalTime: number, inputDuration?: number, outputDuration?: number, easingFunction?: EasingFunction | string): number;
184
- /**
185
- * Calculate the duration of a frame after warping.
186
- */
187
- declare function calculateWarpedDuration(originalStart: number, originalDuration: number, inputDuration?: number, outputDuration?: number, easingFunction?: EasingFunction | string): number;
188
- /**
189
- * Validate that a warp time function produces valid output.
190
- */
191
- declare function validateWarpFunction(easingFunction?: EasingFunction | string, inputDuration?: number, outputDuration?: number, tolerance?: number): {
192
- valid: boolean;
193
- errors: string[];
194
- };
195
- /**
196
- * Generate statistics about the warp curve.
197
- */
198
- declare function analyzeWarpCurve(easingFunction?: EasingFunction | string, inputDuration?: number, outputDuration?: number, samples?: number): {
199
- speedMultipliers: number[];
200
- minSpeed: number;
201
- maxSpeed: number;
202
- avgSpeed: number;
203
- };
204
-
205
115
  /**
206
116
  * Grid Splitter Utility
207
117
  *
@@ -266,78 +176,32 @@ declare function splitWithDimensions(imageDataUrl: string, rows: number, cols: n
266
176
  }>;
267
177
 
268
178
  /**
269
- * Node Dimensions Utility
270
- *
271
- * Calculate node dimensions based on output aspect ratio,
272
- * respecting min/max constraints.
273
- */
274
- /**
275
- * Extract dimensions from a base64 data URL image.
276
- */
277
- declare function getImageDimensions(base64DataUrl: string): Promise<{
278
- width: number;
279
- height: number;
280
- } | null>;
281
- /**
282
- * Extract dimensions from a video data URL or blob URL.
283
- */
284
- declare function getVideoDimensions(videoUrl: string): Promise<{
285
- width: number;
286
- height: number;
287
- } | null>;
288
- /**
289
- * Calculate node dimensions that maintain aspect ratio within constraints.
290
- *
291
- * @param aspectRatio - Width divided by height (e.g., 16/9 for landscape)
292
- * @param baseWidth - Starting width to calculate from (default 300px)
179
+ * Get the dimensions of an image from its source URL or data URL.
293
180
  */
294
- declare function calculateNodeSize(aspectRatio: number, baseWidth?: number): {
181
+ declare function getImageDimensions$1(src: string): Promise<{
295
182
  width: number;
296
183
  height: number;
297
- };
184
+ }>;
298
185
  /**
299
- * Calculate node dimensions preserving current height if provided.
300
- *
301
- * @param aspectRatio - Width divided by height
302
- * @param currentHeight - Optional current height to preserve (if within constraints)
186
+ * Get duration and dimensions of a video from its source URL or data URL.
303
187
  */
304
- declare function calculateNodeSizePreservingHeight(aspectRatio: number, currentHeight?: number): {
305
- width: number;
306
- height: number;
307
- };
188
+ declare function getVideoMetadata(src: string): Promise<{
189
+ duration: number;
190
+ dimensions: {
191
+ width: number;
192
+ height: number;
193
+ };
194
+ }>;
308
195
 
196
+ interface MediaInfo {
197
+ url: string | null;
198
+ urls?: string[];
199
+ type: 'image' | 'video' | null;
200
+ }
309
201
  /**
310
- * Deduplicated Fetch Utility
311
- *
312
- * When multiple callers request the same URL concurrently, only one
313
- * actual network request is made. All callers receive the same response
314
- * data once the request completes. Responses are cached for 5 seconds.
315
- */
316
- /**
317
- * Fetch with request deduplication.
318
- *
319
- * Multiple concurrent calls to the same URL (with same headers) will
320
- * share a single network request. The response is cloned for each caller.
321
- */
322
- declare function deduplicatedFetch(url: string, options?: RequestInit): Promise<Response>;
323
- /**
324
- * Clear all cached responses.
202
+ * Extract media URL and type from node data
325
203
  */
326
- declare function clearFetchCache(): void;
327
-
328
- declare function calculateWorkflowCost(nodes: WorkflowNode[]): CostBreakdown;
329
- declare function formatCost(amount: number): string;
330
-
331
- interface CubicBezierEditorProps {
332
- value: CubicBezier;
333
- onChange: (value: CubicBezier) => void;
334
- onCommit?: (value: CubicBezier) => void;
335
- disabled?: boolean;
336
- width?: number;
337
- height?: number;
338
- }
339
- declare function CubicBezierEditorComponent({ value, onChange, onCommit, disabled, width, height, }: CubicBezierEditorProps): react_jsx_runtime.JSX.Element;
340
- declare const CubicBezierEditor: react.MemoExoticComponent<typeof CubicBezierEditorComponent>;
204
+ declare function getMediaFromNode(nodeType: NodeType, data: WorkflowNodeData): MediaInfo;
341
205
 
342
206
  interface ImageModelConfig {
343
207
  value: ImageModel;
@@ -365,20 +229,20 @@ interface LipSyncModelConfig {
365
229
  }
366
230
  declare const LIPSYNC_MODELS: LipSyncModelConfig[];
367
231
  declare const LIPSYNC_SYNC_MODES: ({
368
- value: "loop";
369
232
  label: string;
233
+ value: "loop";
370
234
  } | {
371
- value: "bounce";
372
235
  label: string;
236
+ value: "bounce";
373
237
  } | {
374
- value: "cut_off";
375
238
  label: string;
239
+ value: "cut_off";
376
240
  } | {
377
- value: "silence";
378
241
  label: string;
242
+ value: "silence";
379
243
  } | {
380
- value: "remap";
381
244
  label: string;
245
+ value: "remap";
382
246
  })[];
383
247
  declare const DEFAULT_LIPSYNC_MODEL: LipSyncModel;
384
248
  interface TextModelConfig {
@@ -396,4 +260,140 @@ declare function getLipSyncModelLabel(model: LipSyncModel): string;
396
260
  declare function getLLMModelLabel(model: TextModel): string;
397
261
  declare function lipSyncModelSupportsImage(model: LipSyncModel): boolean;
398
262
 
263
+ /**
264
+ * Node Dimensions Utility
265
+ *
266
+ * Calculate node dimensions based on output aspect ratio,
267
+ * respecting min/max constraints.
268
+ */
269
+ /**
270
+ * Extract dimensions from a base64 data URL image.
271
+ */
272
+ declare function getImageDimensions(base64DataUrl: string): Promise<{
273
+ width: number;
274
+ height: number;
275
+ } | null>;
276
+ /**
277
+ * Extract dimensions from a video data URL or blob URL.
278
+ */
279
+ declare function getVideoDimensions(videoUrl: string): Promise<{
280
+ width: number;
281
+ height: number;
282
+ } | null>;
283
+ /**
284
+ * Calculate node dimensions that maintain aspect ratio within constraints.
285
+ *
286
+ * @param aspectRatio - Width divided by height (e.g., 16/9 for landscape)
287
+ * @param baseWidth - Starting width to calculate from (default 300px)
288
+ */
289
+ declare function calculateNodeSize(aspectRatio: number, baseWidth?: number): {
290
+ width: number;
291
+ height: number;
292
+ };
293
+ /**
294
+ * Calculate node dimensions preserving current height if provided.
295
+ *
296
+ * @param aspectRatio - Width divided by height
297
+ * @param currentHeight - Optional current height to preserve (if within constraints)
298
+ */
299
+ declare function calculateNodeSizePreservingHeight(aspectRatio: number, currentHeight?: number): {
300
+ width: number;
301
+ height: number;
302
+ };
303
+
304
+ /**
305
+ * Generates dynamic input handles from a model's input schema.
306
+ *
307
+ * Merges dynamically discovered handles with static handles defined in NODE_DEFINITIONS.
308
+ * Static handles take precedence - dynamic handles are only added if not already present.
309
+ *
310
+ * @param inputSchema - The model's input schema containing properties
311
+ * @param staticHandles - Static handles from NODE_DEFINITIONS
312
+ * @returns Combined array of handles (static + dynamic)
313
+ */
314
+ declare function generateHandlesFromSchema(inputSchema: Record<string, unknown> | undefined, staticHandles: HandleDefinition[]): HandleDefinition[];
315
+ /**
316
+ * Check if a handle was dynamically generated from schema.
317
+ */
318
+ declare function isSchemaHandle(handle: HandleDefinition): boolean;
319
+
320
+ /**
321
+ * Shared utilities for working with provider model schemas
322
+ */
323
+ /**
324
+ * Extract default values from schema properties
325
+ */
326
+ declare function getSchemaDefaults(schema: Record<string, unknown> | undefined): Record<string, unknown>;
327
+ /**
328
+ * Check if the model's schema supports image input
329
+ * Used to determine whether to enable/disable image input handles
330
+ */
331
+ declare function supportsImageInput(schema: Record<string, unknown> | undefined): boolean;
332
+ /**
333
+ * Extract enum values from component schemas for SchemaInputs dropdowns
334
+ */
335
+ declare function extractEnumValues(componentSchemas: Record<string, {
336
+ enum?: unknown[];
337
+ type?: string;
338
+ }> | undefined): Record<string, string[]> | undefined;
339
+
340
+ /**
341
+ * Utility functions for validating required schema fields
342
+ */
343
+ /**
344
+ * Validates that all required fields in a JSON Schema have values.
345
+ *
346
+ * @param inputSchema - The JSON Schema with required array
347
+ * @param values - Current field values
348
+ * @param skipFields - Fields to skip (e.g., fields populated via connections)
349
+ * @returns Validation result with isValid flag and list of missing fields
350
+ */
351
+ declare function validateRequiredSchemaFields(inputSchema: Record<string, unknown> | undefined, values: Record<string, unknown>, skipFields: Set<string>): {
352
+ isValid: boolean;
353
+ missingFields: string[];
354
+ };
355
+ /**
356
+ * Fields that are populated via node connections rather than schema inputs.
357
+ * These should be skipped when validating schema required fields.
358
+ */
359
+ declare const CONNECTION_FIELDS: Set<string>;
360
+
361
+ /**
362
+ * Speed Curve Utility
363
+ *
364
+ * Advanced time-warping for video speed ramps using easing functions.
365
+ * Maps original video timestamps to warped timestamps through easing curves.
366
+ */
367
+
368
+ /**
369
+ * Maps original video timestamps to warped timestamps using any easing function.
370
+ *
371
+ * @param originalTime - Original timestamp in seconds (0 to inputDuration)
372
+ * @param inputDuration - Input video duration in seconds (default: 5)
373
+ * @param outputDuration - Output video duration in seconds (default: 1.5)
374
+ * @param easingFunction - Easing function or function name string (default: easeInOutCubic)
375
+ * @returns Warped timestamp for the output video
376
+ */
377
+ declare function warpTime(originalTime: number, inputDuration?: number, outputDuration?: number, easingFunction?: EasingFunction | string): number;
378
+ /**
379
+ * Calculate the duration of a frame after warping.
380
+ */
381
+ declare function calculateWarpedDuration(originalStart: number, originalDuration: number, inputDuration?: number, outputDuration?: number, easingFunction?: EasingFunction | string): number;
382
+ /**
383
+ * Validate that a warp time function produces valid output.
384
+ */
385
+ declare function validateWarpFunction(easingFunction?: EasingFunction | string, inputDuration?: number, outputDuration?: number, tolerance?: number): {
386
+ valid: boolean;
387
+ errors: string[];
388
+ };
389
+ /**
390
+ * Generate statistics about the warp curve.
391
+ */
392
+ declare function analyzeWarpCurve(easingFunction?: EasingFunction | string, inputDuration?: number, outputDuration?: number, samples?: number): {
393
+ speedMultipliers: number[];
394
+ minSpeed: number;
395
+ maxSpeed: number;
396
+ avgSpeed: number;
397
+ };
398
+
399
399
  export { CONNECTION_FIELDS, CubicBezierEditor, DEFAULT_CUSTOM_BEZIER, DEFAULT_IMAGE_MODEL, DEFAULT_LIPSYNC_MODEL, DEFAULT_LLM_MODEL, DEFAULT_VIDEO_MODEL, EASING_BEZIER_MAP, EASING_PRESETS, type EasingFunction, type EasingPresetName, type GridCandidate, type GridCell, type GridDetectionResult, IMAGE_MODELS, IMAGE_MODEL_ID_MAP, IMAGE_MODEL_MAP, type ImageModelConfig, LIPSYNC_MODELS, LIPSYNC_SYNC_MODES, LLM_MODELS, LLM_MODEL_ID_MAP, LLM_MODEL_MAP, type LipSyncModelConfig, type MediaInfo, PRESET_BEZIERS, type TextModelConfig, VIDEO_MODELS, VIDEO_MODEL_ID_MAP, VIDEO_MODEL_MAP, type VideoModelConfig, analyzeWarpCurve, applySpeedCurve, calculateNodeSize, calculateNodeSizePreservingHeight, calculateWarpedDuration, calculateWorkflowCost, clearFetchCache, createAsymmetricEase, createBezierEasing, createGridForDimensions, deduplicatedFetch, detectAndSplitGrid, detectGrid, detectGridWithDimensions, easing, evaluateBezier, extractEnumValues, formatCost, generateHandlesFromSchema, getAllEasingNames, getEasingBezier, getEasingDisplayName, getEasingFunction, getGridCandidates, getImageDimensions$1 as getImageDimensions, getImageDimensions as getImageDimensionsFromDataUrl, getImageModelLabel, getLLMModelLabel, getLipSyncModelLabel, getMediaFromNode, getPresetBezier, getSchemaDefaults, getVideoDimensions as getVideoDimensionsFromUrl, getVideoMetadata, getVideoModelLabel, isSchemaHandle, lipSyncModelSupportsImage, splitImage, splitWithDimensions, supportsImageInput, validateRequiredSchemaFields, validateWarpFunction, warpTime };