clipwise 0.5.1 → 0.6.0

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.
package/dist/index.d.ts CHANGED
@@ -176,14 +176,15 @@ declare const EffectsConfigSchema: z.ZodObject<{
176
176
  enabled: z.ZodDefault<z.ZodBoolean>;
177
177
  /**
178
178
  * Numeric zoom scale (1.0 = no zoom). Overridden by `intensity` when set.
179
- * Default lowered from 1.8 → 1.35 to match "moderate" intensity.
179
+ * Default: 1.25 to match "light" intensity (industry standard).
180
180
  */
181
181
  scale: z.ZodDefault<z.ZodNumber>;
182
182
  /**
183
183
  * Intensity preset — overrides `scale` when set.
184
184
  * Calibrated against Loom (light≈1.25x) and Camtasia (moderate≈1.35x).
185
+ * Default: "light" (1.25x) — matches industry standard (Screen Studio, Loom).
185
186
  */
186
- intensity: z.ZodOptional<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>;
187
+ intensity: z.ZodDefault<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>;
187
188
  duration: z.ZodDefault<z.ZodNumber>;
188
189
  easing: z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear"]>>;
189
190
  autoZoom: z.ZodDefault<z.ZodObject<{
@@ -207,6 +208,7 @@ declare const EffectsConfigSchema: z.ZodObject<{
207
208
  duration: number;
208
209
  enabled: boolean;
209
210
  scale: number;
211
+ intensity: "subtle" | "light" | "moderate" | "strong" | "dramatic";
210
212
  easing: "ease-in-out" | "ease-in" | "ease-out" | "linear";
211
213
  autoZoom: {
212
214
  followCursor: boolean;
@@ -214,7 +216,6 @@ declare const EffectsConfigSchema: z.ZodObject<{
214
216
  transitionDuration: number;
215
217
  padding: number;
216
218
  };
217
- intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
218
219
  }, {
219
220
  duration?: number | undefined;
220
221
  enabled?: boolean | undefined;
@@ -387,6 +388,7 @@ declare const EffectsConfigSchema: z.ZodObject<{
387
388
  duration: number;
388
389
  enabled: boolean;
389
390
  scale: number;
391
+ intensity: "subtle" | "light" | "moderate" | "strong" | "dramatic";
390
392
  easing: "ease-in-out" | "ease-in" | "ease-out" | "linear";
391
393
  autoZoom: {
392
394
  followCursor: boolean;
@@ -394,7 +396,6 @@ declare const EffectsConfigSchema: z.ZodObject<{
394
396
  transitionDuration: number;
395
397
  padding: number;
396
398
  };
397
- intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
398
399
  };
399
400
  cursor: {
400
401
  enabled: boolean;
@@ -521,6 +522,7 @@ declare const OutputConfigSchema: z.ZodObject<{
521
522
  width: z.ZodDefault<z.ZodNumber>;
522
523
  height: z.ZodDefault<z.ZodNumber>;
523
524
  fps: z.ZodDefault<z.ZodNumber>;
525
+ /** @deprecated Use `preset` instead. Will be removed in v0.7. */
524
526
  quality: z.ZodDefault<z.ZodNumber>;
525
527
  preset: z.ZodOptional<z.ZodEnum<["social", "balanced", "archive"]>>;
526
528
  outputDir: z.ZodDefault<z.ZodString>;
@@ -545,155 +547,489 @@ declare const OutputConfigSchema: z.ZodObject<{
545
547
  filename?: string | undefined;
546
548
  }>;
547
549
  type OutputConfig = z.infer<typeof OutputConfigSchema>;
548
- declare const StepSchema: z.ZodObject<{
549
- name: z.ZodOptional<z.ZodString>;
550
- actions: z.ZodArray<z.ZodDiscriminatedUnion<"action", [z.ZodObject<{
551
- action: z.ZodLiteral<"navigate">;
552
- url: z.ZodString;
553
- waitUntil: z.ZodDefault<z.ZodEnum<["load", "domcontentloaded", "networkidle"]>>;
554
- }, "strip", z.ZodTypeAny, {
555
- action: "navigate";
556
- url: string;
557
- waitUntil: "load" | "domcontentloaded" | "networkidle";
558
- }, {
559
- action: "navigate";
560
- url: string;
561
- waitUntil?: "load" | "domcontentloaded" | "networkidle" | undefined;
562
- }>, z.ZodObject<{
563
- action: z.ZodLiteral<"click">;
564
- selector: z.ZodString;
565
- delay: z.ZodOptional<z.ZodNumber>;
566
- timeout: z.ZodOptional<z.ZodNumber>;
567
- }, "strip", z.ZodTypeAny, {
568
- action: "click";
569
- selector: string;
570
- delay?: number | undefined;
571
- timeout?: number | undefined;
572
- }, {
573
- action: "click";
574
- selector: string;
575
- delay?: number | undefined;
576
- timeout?: number | undefined;
577
- }>, z.ZodObject<{
578
- action: z.ZodLiteral<"type">;
579
- selector: z.ZodString;
580
- text: z.ZodString;
581
- delay: z.ZodDefault<z.ZodNumber>;
582
- timeout: z.ZodOptional<z.ZodNumber>;
583
- }, "strip", z.ZodTypeAny, {
584
- action: "type";
585
- selector: string;
586
- delay: number;
587
- text: string;
588
- timeout?: number | undefined;
589
- }, {
590
- action: "type";
591
- selector: string;
592
- text: string;
593
- delay?: number | undefined;
594
- timeout?: number | undefined;
595
- }>, z.ZodObject<{
596
- action: z.ZodLiteral<"scroll">;
597
- selector: z.ZodOptional<z.ZodString>;
598
- y: z.ZodDefault<z.ZodNumber>;
599
- x: z.ZodDefault<z.ZodNumber>;
600
- smooth: z.ZodDefault<z.ZodBoolean>;
601
- timeout: z.ZodOptional<z.ZodNumber>;
550
+ /**
551
+ * Per-step effects override — allows each step to customize effects
552
+ * independently from the global effects config. Only the fields
553
+ * specified here are merged; everything else falls back to global.
554
+ */
555
+ declare const StepEffectsOverrideSchema: z.ZodOptional<z.ZodObject<{
556
+ zoom: z.ZodOptional<z.ZodObject<{
557
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
558
+ scale: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
559
+ intensity: z.ZodOptional<z.ZodDefault<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>>;
560
+ duration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
561
+ easing: z.ZodOptional<z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear"]>>>;
562
+ autoZoom: z.ZodOptional<z.ZodDefault<z.ZodObject<{
563
+ followCursor: z.ZodDefault<z.ZodBoolean>;
564
+ /** @deprecated Use `intensity` on the parent zoom config instead. */
565
+ maxScale: z.ZodDefault<z.ZodNumber>;
566
+ transitionDuration: z.ZodDefault<z.ZodNumber>;
567
+ padding: z.ZodDefault<z.ZodNumber>;
568
+ }, "strip", z.ZodTypeAny, {
569
+ followCursor: boolean;
570
+ maxScale: number;
571
+ transitionDuration: number;
572
+ padding: number;
573
+ }, {
574
+ followCursor?: boolean | undefined;
575
+ maxScale?: number | undefined;
576
+ transitionDuration?: number | undefined;
577
+ padding?: number | undefined;
578
+ }>>>;
602
579
  }, "strip", z.ZodTypeAny, {
603
- action: "scroll";
604
- y: number;
605
- x: number;
606
- smooth: boolean;
607
- selector?: string | undefined;
608
- timeout?: number | undefined;
580
+ duration?: number | undefined;
581
+ enabled?: boolean | undefined;
582
+ scale?: number | undefined;
583
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
584
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
585
+ autoZoom?: {
586
+ followCursor: boolean;
587
+ maxScale: number;
588
+ transitionDuration: number;
589
+ padding: number;
590
+ } | undefined;
609
591
  }, {
610
- action: "scroll";
611
- selector?: string | undefined;
612
- timeout?: number | undefined;
613
- y?: number | undefined;
614
- x?: number | undefined;
615
- smooth?: boolean | undefined;
616
- }>, z.ZodObject<{
617
- action: z.ZodLiteral<"wait">;
618
- duration: z.ZodNumber;
592
+ duration?: number | undefined;
593
+ enabled?: boolean | undefined;
594
+ scale?: number | undefined;
595
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
596
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
597
+ autoZoom?: {
598
+ followCursor?: boolean | undefined;
599
+ maxScale?: number | undefined;
600
+ transitionDuration?: number | undefined;
601
+ padding?: number | undefined;
602
+ } | undefined;
603
+ }>>;
604
+ cursor: z.ZodOptional<z.ZodObject<{
605
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
606
+ size: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
607
+ color: z.ZodOptional<z.ZodDefault<z.ZodString>>;
608
+ speed: z.ZodOptional<z.ZodDefault<z.ZodEnum<["fast", "normal", "slow"]>>>;
609
+ smoothing: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
610
+ clickEffect: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
611
+ clickColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
612
+ clickRadius: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
613
+ trail: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
614
+ trailLength: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
615
+ trailColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
616
+ highlight: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
617
+ highlightRadius: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
618
+ highlightColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
619
619
  }, "strip", z.ZodTypeAny, {
620
- action: "wait";
621
- duration: number;
620
+ enabled?: boolean | undefined;
621
+ size?: number | undefined;
622
+ color?: string | undefined;
623
+ speed?: "fast" | "normal" | "slow" | undefined;
624
+ smoothing?: boolean | undefined;
625
+ clickEffect?: boolean | undefined;
626
+ clickColor?: string | undefined;
627
+ clickRadius?: number | undefined;
628
+ trail?: boolean | undefined;
629
+ trailLength?: number | undefined;
630
+ trailColor?: string | undefined;
631
+ highlight?: boolean | undefined;
632
+ highlightRadius?: number | undefined;
633
+ highlightColor?: string | undefined;
622
634
  }, {
623
- action: "wait";
624
- duration: number;
625
- }>, z.ZodObject<{
626
- action: z.ZodLiteral<"hover">;
627
- selector: z.ZodString;
628
- timeout: z.ZodOptional<z.ZodNumber>;
635
+ enabled?: boolean | undefined;
636
+ size?: number | undefined;
637
+ color?: string | undefined;
638
+ speed?: "fast" | "normal" | "slow" | undefined;
639
+ smoothing?: boolean | undefined;
640
+ clickEffect?: boolean | undefined;
641
+ clickColor?: string | undefined;
642
+ clickRadius?: number | undefined;
643
+ trail?: boolean | undefined;
644
+ trailLength?: number | undefined;
645
+ trailColor?: string | undefined;
646
+ highlight?: boolean | undefined;
647
+ highlightRadius?: number | undefined;
648
+ highlightColor?: string | undefined;
649
+ }>>;
650
+ background: z.ZodOptional<z.ZodObject<{
651
+ type: z.ZodOptional<z.ZodDefault<z.ZodEnum<["gradient", "solid", "image"]>>>;
652
+ value: z.ZodOptional<z.ZodDefault<z.ZodString>>;
653
+ padding: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
654
+ borderRadius: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
655
+ shadow: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
629
656
  }, "strip", z.ZodTypeAny, {
630
- action: "hover";
631
- selector: string;
632
- timeout?: number | undefined;
657
+ value?: string | undefined;
658
+ type?: "gradient" | "solid" | "image" | undefined;
659
+ padding?: number | undefined;
660
+ borderRadius?: number | undefined;
661
+ shadow?: boolean | undefined;
633
662
  }, {
634
- action: "hover";
635
- selector: string;
636
- timeout?: number | undefined;
637
- }>, z.ZodObject<{
638
- action: z.ZodLiteral<"screenshot">;
639
- name: z.ZodOptional<z.ZodString>;
640
- fullPage: z.ZodDefault<z.ZodBoolean>;
663
+ value?: string | undefined;
664
+ type?: "gradient" | "solid" | "image" | undefined;
665
+ padding?: number | undefined;
666
+ borderRadius?: number | undefined;
667
+ shadow?: boolean | undefined;
668
+ }>>;
669
+ deviceFrame: z.ZodOptional<z.ZodObject<{
670
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
671
+ type: z.ZodOptional<z.ZodDefault<z.ZodEnum<["browser", "macbook", "iphone", "ipad", "android", "none"]>>>;
672
+ darkMode: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
641
673
  }, "strip", z.ZodTypeAny, {
642
- action: "screenshot";
643
- fullPage: boolean;
644
- name?: string | undefined;
674
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
675
+ enabled?: boolean | undefined;
676
+ darkMode?: boolean | undefined;
645
677
  }, {
646
- action: "screenshot";
647
- name?: string | undefined;
648
- fullPage?: boolean | undefined;
649
- }>, z.ZodObject<{
650
- action: z.ZodLiteral<"waitForSelector">;
651
- selector: z.ZodString;
652
- state: z.ZodDefault<z.ZodEnum<["visible", "attached", "hidden"]>>;
653
- timeout: z.ZodDefault<z.ZodNumber>;
678
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
679
+ enabled?: boolean | undefined;
680
+ darkMode?: boolean | undefined;
681
+ }>>;
682
+ speedRamp: z.ZodOptional<z.ZodObject<{
683
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
684
+ idleSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
685
+ actionSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
686
+ transitionFrames: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
654
687
  }, "strip", z.ZodTypeAny, {
655
- action: "waitForSelector";
656
- selector: string;
657
- timeout: number;
658
- state: "visible" | "attached" | "hidden";
688
+ enabled?: boolean | undefined;
689
+ idleSpeed?: number | undefined;
690
+ actionSpeed?: number | undefined;
691
+ transitionFrames?: number | undefined;
659
692
  }, {
660
- action: "waitForSelector";
661
- selector: string;
662
- timeout?: number | undefined;
663
- state?: "visible" | "attached" | "hidden" | undefined;
664
- }>, z.ZodObject<{
665
- action: z.ZodLiteral<"waitForNavigation">;
666
- waitUntil: z.ZodDefault<z.ZodEnum<["load", "domcontentloaded", "networkidle"]>>;
667
- timeout: z.ZodDefault<z.ZodNumber>;
693
+ enabled?: boolean | undefined;
694
+ idleSpeed?: number | undefined;
695
+ actionSpeed?: number | undefined;
696
+ transitionFrames?: number | undefined;
697
+ }>>;
698
+ keystroke: z.ZodOptional<z.ZodObject<{
699
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
700
+ showTyping: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
701
+ position: z.ZodOptional<z.ZodDefault<z.ZodEnum<["bottom-center", "bottom-left", "bottom-right"]>>>;
702
+ fontSize: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
703
+ backgroundColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
704
+ textColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
705
+ padding: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
706
+ fadeAfter: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
668
707
  }, "strip", z.ZodTypeAny, {
669
- action: "waitForNavigation";
670
- waitUntil: "load" | "domcontentloaded" | "networkidle";
671
- timeout: number;
708
+ padding?: number | undefined;
709
+ enabled?: boolean | undefined;
710
+ showTyping?: boolean | undefined;
711
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
712
+ fontSize?: number | undefined;
713
+ backgroundColor?: string | undefined;
714
+ textColor?: string | undefined;
715
+ fadeAfter?: number | undefined;
672
716
  }, {
673
- action: "waitForNavigation";
674
- waitUntil?: "load" | "domcontentloaded" | "networkidle" | undefined;
675
- timeout?: number | undefined;
676
- }>, z.ZodObject<{
677
- action: z.ZodLiteral<"waitForURL">;
678
- url: z.ZodString;
679
- timeout: z.ZodDefault<z.ZodNumber>;
717
+ padding?: number | undefined;
718
+ enabled?: boolean | undefined;
719
+ showTyping?: boolean | undefined;
720
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
721
+ fontSize?: number | undefined;
722
+ backgroundColor?: string | undefined;
723
+ textColor?: string | undefined;
724
+ fadeAfter?: number | undefined;
725
+ }>>;
726
+ watermark: z.ZodOptional<z.ZodObject<{
727
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
728
+ text: z.ZodOptional<z.ZodDefault<z.ZodString>>;
729
+ position: z.ZodOptional<z.ZodDefault<z.ZodEnum<["top-left", "top-right", "bottom-left", "bottom-right"]>>>;
730
+ opacity: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
731
+ fontSize: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
732
+ color: z.ZodOptional<z.ZodDefault<z.ZodString>>;
680
733
  }, "strip", z.ZodTypeAny, {
681
- action: "waitForURL";
682
- url: string;
683
- timeout: number;
734
+ text?: string | undefined;
735
+ enabled?: boolean | undefined;
736
+ color?: string | undefined;
737
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
738
+ fontSize?: number | undefined;
739
+ opacity?: number | undefined;
684
740
  }, {
685
- action: "waitForURL";
686
- url: string;
687
- timeout?: number | undefined;
688
- }>, z.ZodObject<{
689
- action: z.ZodLiteral<"waitForFunction">;
690
- expression: z.ZodString;
691
- polling: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"raf">, z.ZodNumber]>>;
692
- timeout: z.ZodDefault<z.ZodNumber>;
693
- }, "strip", z.ZodTypeAny, {
694
- action: "waitForFunction";
695
- timeout: number;
696
- expression: string;
741
+ text?: string | undefined;
742
+ enabled?: boolean | undefined;
743
+ color?: string | undefined;
744
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
745
+ fontSize?: number | undefined;
746
+ opacity?: number | undefined;
747
+ }>>;
748
+ }, "strip", z.ZodTypeAny, {
749
+ zoom?: {
750
+ duration?: number | undefined;
751
+ enabled?: boolean | undefined;
752
+ scale?: number | undefined;
753
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
754
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
755
+ autoZoom?: {
756
+ followCursor: boolean;
757
+ maxScale: number;
758
+ transitionDuration: number;
759
+ padding: number;
760
+ } | undefined;
761
+ } | undefined;
762
+ cursor?: {
763
+ enabled?: boolean | undefined;
764
+ size?: number | undefined;
765
+ color?: string | undefined;
766
+ speed?: "fast" | "normal" | "slow" | undefined;
767
+ smoothing?: boolean | undefined;
768
+ clickEffect?: boolean | undefined;
769
+ clickColor?: string | undefined;
770
+ clickRadius?: number | undefined;
771
+ trail?: boolean | undefined;
772
+ trailLength?: number | undefined;
773
+ trailColor?: string | undefined;
774
+ highlight?: boolean | undefined;
775
+ highlightRadius?: number | undefined;
776
+ highlightColor?: string | undefined;
777
+ } | undefined;
778
+ background?: {
779
+ value?: string | undefined;
780
+ type?: "gradient" | "solid" | "image" | undefined;
781
+ padding?: number | undefined;
782
+ borderRadius?: number | undefined;
783
+ shadow?: boolean | undefined;
784
+ } | undefined;
785
+ deviceFrame?: {
786
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
787
+ enabled?: boolean | undefined;
788
+ darkMode?: boolean | undefined;
789
+ } | undefined;
790
+ speedRamp?: {
791
+ enabled?: boolean | undefined;
792
+ idleSpeed?: number | undefined;
793
+ actionSpeed?: number | undefined;
794
+ transitionFrames?: number | undefined;
795
+ } | undefined;
796
+ keystroke?: {
797
+ padding?: number | undefined;
798
+ enabled?: boolean | undefined;
799
+ showTyping?: boolean | undefined;
800
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
801
+ fontSize?: number | undefined;
802
+ backgroundColor?: string | undefined;
803
+ textColor?: string | undefined;
804
+ fadeAfter?: number | undefined;
805
+ } | undefined;
806
+ watermark?: {
807
+ text?: string | undefined;
808
+ enabled?: boolean | undefined;
809
+ color?: string | undefined;
810
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
811
+ fontSize?: number | undefined;
812
+ opacity?: number | undefined;
813
+ } | undefined;
814
+ }, {
815
+ zoom?: {
816
+ duration?: number | undefined;
817
+ enabled?: boolean | undefined;
818
+ scale?: number | undefined;
819
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
820
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
821
+ autoZoom?: {
822
+ followCursor?: boolean | undefined;
823
+ maxScale?: number | undefined;
824
+ transitionDuration?: number | undefined;
825
+ padding?: number | undefined;
826
+ } | undefined;
827
+ } | undefined;
828
+ cursor?: {
829
+ enabled?: boolean | undefined;
830
+ size?: number | undefined;
831
+ color?: string | undefined;
832
+ speed?: "fast" | "normal" | "slow" | undefined;
833
+ smoothing?: boolean | undefined;
834
+ clickEffect?: boolean | undefined;
835
+ clickColor?: string | undefined;
836
+ clickRadius?: number | undefined;
837
+ trail?: boolean | undefined;
838
+ trailLength?: number | undefined;
839
+ trailColor?: string | undefined;
840
+ highlight?: boolean | undefined;
841
+ highlightRadius?: number | undefined;
842
+ highlightColor?: string | undefined;
843
+ } | undefined;
844
+ background?: {
845
+ value?: string | undefined;
846
+ type?: "gradient" | "solid" | "image" | undefined;
847
+ padding?: number | undefined;
848
+ borderRadius?: number | undefined;
849
+ shadow?: boolean | undefined;
850
+ } | undefined;
851
+ deviceFrame?: {
852
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
853
+ enabled?: boolean | undefined;
854
+ darkMode?: boolean | undefined;
855
+ } | undefined;
856
+ speedRamp?: {
857
+ enabled?: boolean | undefined;
858
+ idleSpeed?: number | undefined;
859
+ actionSpeed?: number | undefined;
860
+ transitionFrames?: number | undefined;
861
+ } | undefined;
862
+ keystroke?: {
863
+ padding?: number | undefined;
864
+ enabled?: boolean | undefined;
865
+ showTyping?: boolean | undefined;
866
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
867
+ fontSize?: number | undefined;
868
+ backgroundColor?: string | undefined;
869
+ textColor?: string | undefined;
870
+ fadeAfter?: number | undefined;
871
+ } | undefined;
872
+ watermark?: {
873
+ text?: string | undefined;
874
+ enabled?: boolean | undefined;
875
+ color?: string | undefined;
876
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
877
+ fontSize?: number | undefined;
878
+ opacity?: number | undefined;
879
+ } | undefined;
880
+ }>>;
881
+ type StepEffectsOverride = z.infer<typeof StepEffectsOverrideSchema>;
882
+ declare const TransitionTypeSchema: z.ZodEnum<["none", "fade", "slide-left", "slide-up", "blur"]>;
883
+ type TransitionType = z.infer<typeof TransitionTypeSchema>;
884
+ declare const StepSchema: z.ZodObject<{
885
+ name: z.ZodOptional<z.ZodString>;
886
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<"action", [z.ZodObject<{
887
+ action: z.ZodLiteral<"navigate">;
888
+ url: z.ZodString;
889
+ waitUntil: z.ZodDefault<z.ZodEnum<["load", "domcontentloaded", "networkidle"]>>;
890
+ }, "strip", z.ZodTypeAny, {
891
+ action: "navigate";
892
+ url: string;
893
+ waitUntil: "load" | "domcontentloaded" | "networkidle";
894
+ }, {
895
+ action: "navigate";
896
+ url: string;
897
+ waitUntil?: "load" | "domcontentloaded" | "networkidle" | undefined;
898
+ }>, z.ZodObject<{
899
+ action: z.ZodLiteral<"click">;
900
+ selector: z.ZodString;
901
+ delay: z.ZodOptional<z.ZodNumber>;
902
+ timeout: z.ZodOptional<z.ZodNumber>;
903
+ }, "strip", z.ZodTypeAny, {
904
+ action: "click";
905
+ selector: string;
906
+ delay?: number | undefined;
907
+ timeout?: number | undefined;
908
+ }, {
909
+ action: "click";
910
+ selector: string;
911
+ delay?: number | undefined;
912
+ timeout?: number | undefined;
913
+ }>, z.ZodObject<{
914
+ action: z.ZodLiteral<"type">;
915
+ selector: z.ZodString;
916
+ text: z.ZodString;
917
+ delay: z.ZodDefault<z.ZodNumber>;
918
+ timeout: z.ZodOptional<z.ZodNumber>;
919
+ }, "strip", z.ZodTypeAny, {
920
+ action: "type";
921
+ selector: string;
922
+ delay: number;
923
+ text: string;
924
+ timeout?: number | undefined;
925
+ }, {
926
+ action: "type";
927
+ selector: string;
928
+ text: string;
929
+ delay?: number | undefined;
930
+ timeout?: number | undefined;
931
+ }>, z.ZodObject<{
932
+ action: z.ZodLiteral<"scroll">;
933
+ selector: z.ZodOptional<z.ZodString>;
934
+ y: z.ZodDefault<z.ZodNumber>;
935
+ x: z.ZodDefault<z.ZodNumber>;
936
+ smooth: z.ZodDefault<z.ZodBoolean>;
937
+ timeout: z.ZodOptional<z.ZodNumber>;
938
+ }, "strip", z.ZodTypeAny, {
939
+ action: "scroll";
940
+ y: number;
941
+ x: number;
942
+ smooth: boolean;
943
+ selector?: string | undefined;
944
+ timeout?: number | undefined;
945
+ }, {
946
+ action: "scroll";
947
+ selector?: string | undefined;
948
+ timeout?: number | undefined;
949
+ y?: number | undefined;
950
+ x?: number | undefined;
951
+ smooth?: boolean | undefined;
952
+ }>, z.ZodObject<{
953
+ action: z.ZodLiteral<"wait">;
954
+ duration: z.ZodNumber;
955
+ }, "strip", z.ZodTypeAny, {
956
+ action: "wait";
957
+ duration: number;
958
+ }, {
959
+ action: "wait";
960
+ duration: number;
961
+ }>, z.ZodObject<{
962
+ action: z.ZodLiteral<"hover">;
963
+ selector: z.ZodString;
964
+ timeout: z.ZodOptional<z.ZodNumber>;
965
+ }, "strip", z.ZodTypeAny, {
966
+ action: "hover";
967
+ selector: string;
968
+ timeout?: number | undefined;
969
+ }, {
970
+ action: "hover";
971
+ selector: string;
972
+ timeout?: number | undefined;
973
+ }>, z.ZodObject<{
974
+ action: z.ZodLiteral<"screenshot">;
975
+ name: z.ZodOptional<z.ZodString>;
976
+ fullPage: z.ZodDefault<z.ZodBoolean>;
977
+ }, "strip", z.ZodTypeAny, {
978
+ action: "screenshot";
979
+ fullPage: boolean;
980
+ name?: string | undefined;
981
+ }, {
982
+ action: "screenshot";
983
+ name?: string | undefined;
984
+ fullPage?: boolean | undefined;
985
+ }>, z.ZodObject<{
986
+ action: z.ZodLiteral<"waitForSelector">;
987
+ selector: z.ZodString;
988
+ state: z.ZodDefault<z.ZodEnum<["visible", "attached", "hidden"]>>;
989
+ timeout: z.ZodDefault<z.ZodNumber>;
990
+ }, "strip", z.ZodTypeAny, {
991
+ action: "waitForSelector";
992
+ selector: string;
993
+ timeout: number;
994
+ state: "visible" | "attached" | "hidden";
995
+ }, {
996
+ action: "waitForSelector";
997
+ selector: string;
998
+ timeout?: number | undefined;
999
+ state?: "visible" | "attached" | "hidden" | undefined;
1000
+ }>, z.ZodObject<{
1001
+ action: z.ZodLiteral<"waitForNavigation">;
1002
+ waitUntil: z.ZodDefault<z.ZodEnum<["load", "domcontentloaded", "networkidle"]>>;
1003
+ timeout: z.ZodDefault<z.ZodNumber>;
1004
+ }, "strip", z.ZodTypeAny, {
1005
+ action: "waitForNavigation";
1006
+ waitUntil: "load" | "domcontentloaded" | "networkidle";
1007
+ timeout: number;
1008
+ }, {
1009
+ action: "waitForNavigation";
1010
+ waitUntil?: "load" | "domcontentloaded" | "networkidle" | undefined;
1011
+ timeout?: number | undefined;
1012
+ }>, z.ZodObject<{
1013
+ action: z.ZodLiteral<"waitForURL">;
1014
+ url: z.ZodString;
1015
+ timeout: z.ZodDefault<z.ZodNumber>;
1016
+ }, "strip", z.ZodTypeAny, {
1017
+ action: "waitForURL";
1018
+ url: string;
1019
+ timeout: number;
1020
+ }, {
1021
+ action: "waitForURL";
1022
+ url: string;
1023
+ timeout?: number | undefined;
1024
+ }>, z.ZodObject<{
1025
+ action: z.ZodLiteral<"waitForFunction">;
1026
+ expression: z.ZodString;
1027
+ polling: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"raf">, z.ZodNumber]>>;
1028
+ timeout: z.ZodDefault<z.ZodNumber>;
1029
+ }, "strip", z.ZodTypeAny, {
1030
+ action: "waitForFunction";
1031
+ timeout: number;
1032
+ expression: string;
697
1033
  polling: number | "raf";
698
1034
  }, {
699
1035
  action: "waitForFunction";
@@ -706,19 +1042,346 @@ declare const StepSchema: z.ZodObject<{
706
1042
  status: z.ZodOptional<z.ZodNumber>;
707
1043
  timeout: z.ZodDefault<z.ZodNumber>;
708
1044
  }, "strip", z.ZodTypeAny, {
709
- action: "waitForResponse";
710
- url: string;
711
- timeout: number;
712
- status?: number | undefined;
1045
+ action: "waitForResponse";
1046
+ url: string;
1047
+ timeout: number;
1048
+ status?: number | undefined;
1049
+ }, {
1050
+ action: "waitForResponse";
1051
+ url: string;
1052
+ status?: number | undefined;
1053
+ timeout?: number | undefined;
1054
+ }>]>, "many">;
1055
+ captureDelay: z.ZodDefault<z.ZodNumber>;
1056
+ holdDuration: z.ZodDefault<z.ZodNumber>;
1057
+ transition: z.ZodDefault<z.ZodEnum<["none", "fade", "slide-left", "slide-up", "blur"]>>;
1058
+ /** Per-step effects override — merges with global effects config. */
1059
+ effects: z.ZodOptional<z.ZodObject<{
1060
+ zoom: z.ZodOptional<z.ZodObject<{
1061
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1062
+ scale: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1063
+ intensity: z.ZodOptional<z.ZodDefault<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>>;
1064
+ duration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1065
+ easing: z.ZodOptional<z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear"]>>>;
1066
+ autoZoom: z.ZodOptional<z.ZodDefault<z.ZodObject<{
1067
+ followCursor: z.ZodDefault<z.ZodBoolean>;
1068
+ /** @deprecated Use `intensity` on the parent zoom config instead. */
1069
+ maxScale: z.ZodDefault<z.ZodNumber>;
1070
+ transitionDuration: z.ZodDefault<z.ZodNumber>;
1071
+ padding: z.ZodDefault<z.ZodNumber>;
1072
+ }, "strip", z.ZodTypeAny, {
1073
+ followCursor: boolean;
1074
+ maxScale: number;
1075
+ transitionDuration: number;
1076
+ padding: number;
1077
+ }, {
1078
+ followCursor?: boolean | undefined;
1079
+ maxScale?: number | undefined;
1080
+ transitionDuration?: number | undefined;
1081
+ padding?: number | undefined;
1082
+ }>>>;
1083
+ }, "strip", z.ZodTypeAny, {
1084
+ duration?: number | undefined;
1085
+ enabled?: boolean | undefined;
1086
+ scale?: number | undefined;
1087
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
1088
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
1089
+ autoZoom?: {
1090
+ followCursor: boolean;
1091
+ maxScale: number;
1092
+ transitionDuration: number;
1093
+ padding: number;
1094
+ } | undefined;
1095
+ }, {
1096
+ duration?: number | undefined;
1097
+ enabled?: boolean | undefined;
1098
+ scale?: number | undefined;
1099
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
1100
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
1101
+ autoZoom?: {
1102
+ followCursor?: boolean | undefined;
1103
+ maxScale?: number | undefined;
1104
+ transitionDuration?: number | undefined;
1105
+ padding?: number | undefined;
1106
+ } | undefined;
1107
+ }>>;
1108
+ cursor: z.ZodOptional<z.ZodObject<{
1109
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1110
+ size: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1111
+ color: z.ZodOptional<z.ZodDefault<z.ZodString>>;
1112
+ speed: z.ZodOptional<z.ZodDefault<z.ZodEnum<["fast", "normal", "slow"]>>>;
1113
+ smoothing: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1114
+ clickEffect: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1115
+ clickColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
1116
+ clickRadius: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1117
+ trail: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1118
+ trailLength: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1119
+ trailColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
1120
+ highlight: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1121
+ highlightRadius: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1122
+ highlightColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
1123
+ }, "strip", z.ZodTypeAny, {
1124
+ enabled?: boolean | undefined;
1125
+ size?: number | undefined;
1126
+ color?: string | undefined;
1127
+ speed?: "fast" | "normal" | "slow" | undefined;
1128
+ smoothing?: boolean | undefined;
1129
+ clickEffect?: boolean | undefined;
1130
+ clickColor?: string | undefined;
1131
+ clickRadius?: number | undefined;
1132
+ trail?: boolean | undefined;
1133
+ trailLength?: number | undefined;
1134
+ trailColor?: string | undefined;
1135
+ highlight?: boolean | undefined;
1136
+ highlightRadius?: number | undefined;
1137
+ highlightColor?: string | undefined;
1138
+ }, {
1139
+ enabled?: boolean | undefined;
1140
+ size?: number | undefined;
1141
+ color?: string | undefined;
1142
+ speed?: "fast" | "normal" | "slow" | undefined;
1143
+ smoothing?: boolean | undefined;
1144
+ clickEffect?: boolean | undefined;
1145
+ clickColor?: string | undefined;
1146
+ clickRadius?: number | undefined;
1147
+ trail?: boolean | undefined;
1148
+ trailLength?: number | undefined;
1149
+ trailColor?: string | undefined;
1150
+ highlight?: boolean | undefined;
1151
+ highlightRadius?: number | undefined;
1152
+ highlightColor?: string | undefined;
1153
+ }>>;
1154
+ background: z.ZodOptional<z.ZodObject<{
1155
+ type: z.ZodOptional<z.ZodDefault<z.ZodEnum<["gradient", "solid", "image"]>>>;
1156
+ value: z.ZodOptional<z.ZodDefault<z.ZodString>>;
1157
+ padding: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1158
+ borderRadius: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1159
+ shadow: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1160
+ }, "strip", z.ZodTypeAny, {
1161
+ value?: string | undefined;
1162
+ type?: "gradient" | "solid" | "image" | undefined;
1163
+ padding?: number | undefined;
1164
+ borderRadius?: number | undefined;
1165
+ shadow?: boolean | undefined;
1166
+ }, {
1167
+ value?: string | undefined;
1168
+ type?: "gradient" | "solid" | "image" | undefined;
1169
+ padding?: number | undefined;
1170
+ borderRadius?: number | undefined;
1171
+ shadow?: boolean | undefined;
1172
+ }>>;
1173
+ deviceFrame: z.ZodOptional<z.ZodObject<{
1174
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1175
+ type: z.ZodOptional<z.ZodDefault<z.ZodEnum<["browser", "macbook", "iphone", "ipad", "android", "none"]>>>;
1176
+ darkMode: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1177
+ }, "strip", z.ZodTypeAny, {
1178
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
1179
+ enabled?: boolean | undefined;
1180
+ darkMode?: boolean | undefined;
1181
+ }, {
1182
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
1183
+ enabled?: boolean | undefined;
1184
+ darkMode?: boolean | undefined;
1185
+ }>>;
1186
+ speedRamp: z.ZodOptional<z.ZodObject<{
1187
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1188
+ idleSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1189
+ actionSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1190
+ transitionFrames: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1191
+ }, "strip", z.ZodTypeAny, {
1192
+ enabled?: boolean | undefined;
1193
+ idleSpeed?: number | undefined;
1194
+ actionSpeed?: number | undefined;
1195
+ transitionFrames?: number | undefined;
1196
+ }, {
1197
+ enabled?: boolean | undefined;
1198
+ idleSpeed?: number | undefined;
1199
+ actionSpeed?: number | undefined;
1200
+ transitionFrames?: number | undefined;
1201
+ }>>;
1202
+ keystroke: z.ZodOptional<z.ZodObject<{
1203
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1204
+ showTyping: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1205
+ position: z.ZodOptional<z.ZodDefault<z.ZodEnum<["bottom-center", "bottom-left", "bottom-right"]>>>;
1206
+ fontSize: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1207
+ backgroundColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
1208
+ textColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
1209
+ padding: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1210
+ fadeAfter: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1211
+ }, "strip", z.ZodTypeAny, {
1212
+ padding?: number | undefined;
1213
+ enabled?: boolean | undefined;
1214
+ showTyping?: boolean | undefined;
1215
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
1216
+ fontSize?: number | undefined;
1217
+ backgroundColor?: string | undefined;
1218
+ textColor?: string | undefined;
1219
+ fadeAfter?: number | undefined;
1220
+ }, {
1221
+ padding?: number | undefined;
1222
+ enabled?: boolean | undefined;
1223
+ showTyping?: boolean | undefined;
1224
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
1225
+ fontSize?: number | undefined;
1226
+ backgroundColor?: string | undefined;
1227
+ textColor?: string | undefined;
1228
+ fadeAfter?: number | undefined;
1229
+ }>>;
1230
+ watermark: z.ZodOptional<z.ZodObject<{
1231
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1232
+ text: z.ZodOptional<z.ZodDefault<z.ZodString>>;
1233
+ position: z.ZodOptional<z.ZodDefault<z.ZodEnum<["top-left", "top-right", "bottom-left", "bottom-right"]>>>;
1234
+ opacity: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1235
+ fontSize: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1236
+ color: z.ZodOptional<z.ZodDefault<z.ZodString>>;
1237
+ }, "strip", z.ZodTypeAny, {
1238
+ text?: string | undefined;
1239
+ enabled?: boolean | undefined;
1240
+ color?: string | undefined;
1241
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
1242
+ fontSize?: number | undefined;
1243
+ opacity?: number | undefined;
1244
+ }, {
1245
+ text?: string | undefined;
1246
+ enabled?: boolean | undefined;
1247
+ color?: string | undefined;
1248
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
1249
+ fontSize?: number | undefined;
1250
+ opacity?: number | undefined;
1251
+ }>>;
1252
+ }, "strip", z.ZodTypeAny, {
1253
+ zoom?: {
1254
+ duration?: number | undefined;
1255
+ enabled?: boolean | undefined;
1256
+ scale?: number | undefined;
1257
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
1258
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
1259
+ autoZoom?: {
1260
+ followCursor: boolean;
1261
+ maxScale: number;
1262
+ transitionDuration: number;
1263
+ padding: number;
1264
+ } | undefined;
1265
+ } | undefined;
1266
+ cursor?: {
1267
+ enabled?: boolean | undefined;
1268
+ size?: number | undefined;
1269
+ color?: string | undefined;
1270
+ speed?: "fast" | "normal" | "slow" | undefined;
1271
+ smoothing?: boolean | undefined;
1272
+ clickEffect?: boolean | undefined;
1273
+ clickColor?: string | undefined;
1274
+ clickRadius?: number | undefined;
1275
+ trail?: boolean | undefined;
1276
+ trailLength?: number | undefined;
1277
+ trailColor?: string | undefined;
1278
+ highlight?: boolean | undefined;
1279
+ highlightRadius?: number | undefined;
1280
+ highlightColor?: string | undefined;
1281
+ } | undefined;
1282
+ background?: {
1283
+ value?: string | undefined;
1284
+ type?: "gradient" | "solid" | "image" | undefined;
1285
+ padding?: number | undefined;
1286
+ borderRadius?: number | undefined;
1287
+ shadow?: boolean | undefined;
1288
+ } | undefined;
1289
+ deviceFrame?: {
1290
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
1291
+ enabled?: boolean | undefined;
1292
+ darkMode?: boolean | undefined;
1293
+ } | undefined;
1294
+ speedRamp?: {
1295
+ enabled?: boolean | undefined;
1296
+ idleSpeed?: number | undefined;
1297
+ actionSpeed?: number | undefined;
1298
+ transitionFrames?: number | undefined;
1299
+ } | undefined;
1300
+ keystroke?: {
1301
+ padding?: number | undefined;
1302
+ enabled?: boolean | undefined;
1303
+ showTyping?: boolean | undefined;
1304
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
1305
+ fontSize?: number | undefined;
1306
+ backgroundColor?: string | undefined;
1307
+ textColor?: string | undefined;
1308
+ fadeAfter?: number | undefined;
1309
+ } | undefined;
1310
+ watermark?: {
1311
+ text?: string | undefined;
1312
+ enabled?: boolean | undefined;
1313
+ color?: string | undefined;
1314
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
1315
+ fontSize?: number | undefined;
1316
+ opacity?: number | undefined;
1317
+ } | undefined;
713
1318
  }, {
714
- action: "waitForResponse";
715
- url: string;
716
- status?: number | undefined;
717
- timeout?: number | undefined;
718
- }>]>, "many">;
719
- captureDelay: z.ZodDefault<z.ZodNumber>;
720
- holdDuration: z.ZodDefault<z.ZodNumber>;
721
- transition: z.ZodDefault<z.ZodEnum<["fade", "none"]>>;
1319
+ zoom?: {
1320
+ duration?: number | undefined;
1321
+ enabled?: boolean | undefined;
1322
+ scale?: number | undefined;
1323
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
1324
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
1325
+ autoZoom?: {
1326
+ followCursor?: boolean | undefined;
1327
+ maxScale?: number | undefined;
1328
+ transitionDuration?: number | undefined;
1329
+ padding?: number | undefined;
1330
+ } | undefined;
1331
+ } | undefined;
1332
+ cursor?: {
1333
+ enabled?: boolean | undefined;
1334
+ size?: number | undefined;
1335
+ color?: string | undefined;
1336
+ speed?: "fast" | "normal" | "slow" | undefined;
1337
+ smoothing?: boolean | undefined;
1338
+ clickEffect?: boolean | undefined;
1339
+ clickColor?: string | undefined;
1340
+ clickRadius?: number | undefined;
1341
+ trail?: boolean | undefined;
1342
+ trailLength?: number | undefined;
1343
+ trailColor?: string | undefined;
1344
+ highlight?: boolean | undefined;
1345
+ highlightRadius?: number | undefined;
1346
+ highlightColor?: string | undefined;
1347
+ } | undefined;
1348
+ background?: {
1349
+ value?: string | undefined;
1350
+ type?: "gradient" | "solid" | "image" | undefined;
1351
+ padding?: number | undefined;
1352
+ borderRadius?: number | undefined;
1353
+ shadow?: boolean | undefined;
1354
+ } | undefined;
1355
+ deviceFrame?: {
1356
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
1357
+ enabled?: boolean | undefined;
1358
+ darkMode?: boolean | undefined;
1359
+ } | undefined;
1360
+ speedRamp?: {
1361
+ enabled?: boolean | undefined;
1362
+ idleSpeed?: number | undefined;
1363
+ actionSpeed?: number | undefined;
1364
+ transitionFrames?: number | undefined;
1365
+ } | undefined;
1366
+ keystroke?: {
1367
+ padding?: number | undefined;
1368
+ enabled?: boolean | undefined;
1369
+ showTyping?: boolean | undefined;
1370
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
1371
+ fontSize?: number | undefined;
1372
+ backgroundColor?: string | undefined;
1373
+ textColor?: string | undefined;
1374
+ fadeAfter?: number | undefined;
1375
+ } | undefined;
1376
+ watermark?: {
1377
+ text?: string | undefined;
1378
+ enabled?: boolean | undefined;
1379
+ color?: string | undefined;
1380
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
1381
+ fontSize?: number | undefined;
1382
+ opacity?: number | undefined;
1383
+ } | undefined;
1384
+ }>>;
722
1385
  }, "strip", z.ZodTypeAny, {
723
1386
  actions: ({
724
1387
  action: "navigate";
@@ -779,8 +1442,75 @@ declare const StepSchema: z.ZodObject<{
779
1442
  })[];
780
1443
  captureDelay: number;
781
1444
  holdDuration: number;
782
- transition: "none" | "fade";
1445
+ transition: "none" | "fade" | "slide-left" | "slide-up" | "blur";
783
1446
  name?: string | undefined;
1447
+ effects?: {
1448
+ zoom?: {
1449
+ duration?: number | undefined;
1450
+ enabled?: boolean | undefined;
1451
+ scale?: number | undefined;
1452
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
1453
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
1454
+ autoZoom?: {
1455
+ followCursor: boolean;
1456
+ maxScale: number;
1457
+ transitionDuration: number;
1458
+ padding: number;
1459
+ } | undefined;
1460
+ } | undefined;
1461
+ cursor?: {
1462
+ enabled?: boolean | undefined;
1463
+ size?: number | undefined;
1464
+ color?: string | undefined;
1465
+ speed?: "fast" | "normal" | "slow" | undefined;
1466
+ smoothing?: boolean | undefined;
1467
+ clickEffect?: boolean | undefined;
1468
+ clickColor?: string | undefined;
1469
+ clickRadius?: number | undefined;
1470
+ trail?: boolean | undefined;
1471
+ trailLength?: number | undefined;
1472
+ trailColor?: string | undefined;
1473
+ highlight?: boolean | undefined;
1474
+ highlightRadius?: number | undefined;
1475
+ highlightColor?: string | undefined;
1476
+ } | undefined;
1477
+ background?: {
1478
+ value?: string | undefined;
1479
+ type?: "gradient" | "solid" | "image" | undefined;
1480
+ padding?: number | undefined;
1481
+ borderRadius?: number | undefined;
1482
+ shadow?: boolean | undefined;
1483
+ } | undefined;
1484
+ deviceFrame?: {
1485
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
1486
+ enabled?: boolean | undefined;
1487
+ darkMode?: boolean | undefined;
1488
+ } | undefined;
1489
+ speedRamp?: {
1490
+ enabled?: boolean | undefined;
1491
+ idleSpeed?: number | undefined;
1492
+ actionSpeed?: number | undefined;
1493
+ transitionFrames?: number | undefined;
1494
+ } | undefined;
1495
+ keystroke?: {
1496
+ padding?: number | undefined;
1497
+ enabled?: boolean | undefined;
1498
+ showTyping?: boolean | undefined;
1499
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
1500
+ fontSize?: number | undefined;
1501
+ backgroundColor?: string | undefined;
1502
+ textColor?: string | undefined;
1503
+ fadeAfter?: number | undefined;
1504
+ } | undefined;
1505
+ watermark?: {
1506
+ text?: string | undefined;
1507
+ enabled?: boolean | undefined;
1508
+ color?: string | undefined;
1509
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
1510
+ fontSize?: number | undefined;
1511
+ opacity?: number | undefined;
1512
+ } | undefined;
1513
+ } | undefined;
784
1514
  }, {
785
1515
  actions: ({
786
1516
  action: "navigate";
@@ -842,9 +1572,100 @@ declare const StepSchema: z.ZodObject<{
842
1572
  name?: string | undefined;
843
1573
  captureDelay?: number | undefined;
844
1574
  holdDuration?: number | undefined;
845
- transition?: "none" | "fade" | undefined;
1575
+ transition?: "none" | "fade" | "slide-left" | "slide-up" | "blur" | undefined;
1576
+ effects?: {
1577
+ zoom?: {
1578
+ duration?: number | undefined;
1579
+ enabled?: boolean | undefined;
1580
+ scale?: number | undefined;
1581
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
1582
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
1583
+ autoZoom?: {
1584
+ followCursor?: boolean | undefined;
1585
+ maxScale?: number | undefined;
1586
+ transitionDuration?: number | undefined;
1587
+ padding?: number | undefined;
1588
+ } | undefined;
1589
+ } | undefined;
1590
+ cursor?: {
1591
+ enabled?: boolean | undefined;
1592
+ size?: number | undefined;
1593
+ color?: string | undefined;
1594
+ speed?: "fast" | "normal" | "slow" | undefined;
1595
+ smoothing?: boolean | undefined;
1596
+ clickEffect?: boolean | undefined;
1597
+ clickColor?: string | undefined;
1598
+ clickRadius?: number | undefined;
1599
+ trail?: boolean | undefined;
1600
+ trailLength?: number | undefined;
1601
+ trailColor?: string | undefined;
1602
+ highlight?: boolean | undefined;
1603
+ highlightRadius?: number | undefined;
1604
+ highlightColor?: string | undefined;
1605
+ } | undefined;
1606
+ background?: {
1607
+ value?: string | undefined;
1608
+ type?: "gradient" | "solid" | "image" | undefined;
1609
+ padding?: number | undefined;
1610
+ borderRadius?: number | undefined;
1611
+ shadow?: boolean | undefined;
1612
+ } | undefined;
1613
+ deviceFrame?: {
1614
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
1615
+ enabled?: boolean | undefined;
1616
+ darkMode?: boolean | undefined;
1617
+ } | undefined;
1618
+ speedRamp?: {
1619
+ enabled?: boolean | undefined;
1620
+ idleSpeed?: number | undefined;
1621
+ actionSpeed?: number | undefined;
1622
+ transitionFrames?: number | undefined;
1623
+ } | undefined;
1624
+ keystroke?: {
1625
+ padding?: number | undefined;
1626
+ enabled?: boolean | undefined;
1627
+ showTyping?: boolean | undefined;
1628
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
1629
+ fontSize?: number | undefined;
1630
+ backgroundColor?: string | undefined;
1631
+ textColor?: string | undefined;
1632
+ fadeAfter?: number | undefined;
1633
+ } | undefined;
1634
+ watermark?: {
1635
+ text?: string | undefined;
1636
+ enabled?: boolean | undefined;
1637
+ color?: string | undefined;
1638
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
1639
+ fontSize?: number | undefined;
1640
+ opacity?: number | undefined;
1641
+ } | undefined;
1642
+ } | undefined;
846
1643
  }>;
847
1644
  type Step = z.infer<typeof StepSchema>;
1645
+ /**
1646
+ * Audio narration configuration — mux an audio file into the MP4 output.
1647
+ */
1648
+ declare const AudioConfigSchema: z.ZodObject<{
1649
+ /** Path to the audio file (MP3, WAV, AAC, etc.). */
1650
+ file: z.ZodString;
1651
+ /** Volume level (0.0 = silent, 1.0 = full). */
1652
+ volume: z.ZodDefault<z.ZodNumber>;
1653
+ /** Fade-in duration in milliseconds. */
1654
+ fadeIn: z.ZodDefault<z.ZodNumber>;
1655
+ /** Fade-out duration in milliseconds. */
1656
+ fadeOut: z.ZodDefault<z.ZodNumber>;
1657
+ }, "strip", z.ZodTypeAny, {
1658
+ file: string;
1659
+ volume: number;
1660
+ fadeIn: number;
1661
+ fadeOut: number;
1662
+ }, {
1663
+ file: string;
1664
+ volume?: number | undefined;
1665
+ fadeIn?: number | undefined;
1666
+ fadeOut?: number | undefined;
1667
+ }>;
1668
+ type AudioConfig = z.infer<typeof AudioConfigSchema>;
848
1669
  declare const ScenarioSchema: z.ZodObject<{
849
1670
  name: z.ZodString;
850
1671
  description: z.ZodOptional<z.ZodString>;
@@ -863,14 +1684,15 @@ declare const ScenarioSchema: z.ZodObject<{
863
1684
  enabled: z.ZodDefault<z.ZodBoolean>;
864
1685
  /**
865
1686
  * Numeric zoom scale (1.0 = no zoom). Overridden by `intensity` when set.
866
- * Default lowered from 1.8 → 1.35 to match "moderate" intensity.
1687
+ * Default: 1.25 to match "light" intensity (industry standard).
867
1688
  */
868
1689
  scale: z.ZodDefault<z.ZodNumber>;
869
1690
  /**
870
1691
  * Intensity preset — overrides `scale` when set.
871
1692
  * Calibrated against Loom (light≈1.25x) and Camtasia (moderate≈1.35x).
1693
+ * Default: "light" (1.25x) — matches industry standard (Screen Studio, Loom).
872
1694
  */
873
- intensity: z.ZodOptional<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>;
1695
+ intensity: z.ZodDefault<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>;
874
1696
  duration: z.ZodDefault<z.ZodNumber>;
875
1697
  easing: z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear"]>>;
876
1698
  autoZoom: z.ZodDefault<z.ZodObject<{
@@ -894,6 +1716,7 @@ declare const ScenarioSchema: z.ZodObject<{
894
1716
  duration: number;
895
1717
  enabled: boolean;
896
1718
  scale: number;
1719
+ intensity: "subtle" | "light" | "moderate" | "strong" | "dramatic";
897
1720
  easing: "ease-in-out" | "ease-in" | "ease-out" | "linear";
898
1721
  autoZoom: {
899
1722
  followCursor: boolean;
@@ -901,7 +1724,6 @@ declare const ScenarioSchema: z.ZodObject<{
901
1724
  transitionDuration: number;
902
1725
  padding: number;
903
1726
  };
904
- intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
905
1727
  }, {
906
1728
  duration?: number | undefined;
907
1729
  enabled?: boolean | undefined;
@@ -1074,6 +1896,7 @@ declare const ScenarioSchema: z.ZodObject<{
1074
1896
  duration: number;
1075
1897
  enabled: boolean;
1076
1898
  scale: number;
1899
+ intensity: "subtle" | "light" | "moderate" | "strong" | "dramatic";
1077
1900
  easing: "ease-in-out" | "ease-in" | "ease-out" | "linear";
1078
1901
  autoZoom: {
1079
1902
  followCursor: boolean;
@@ -1081,7 +1904,6 @@ declare const ScenarioSchema: z.ZodObject<{
1081
1904
  transitionDuration: number;
1082
1905
  padding: number;
1083
1906
  };
1084
- intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
1085
1907
  };
1086
1908
  cursor: {
1087
1909
  enabled: boolean;
@@ -1207,6 +2029,7 @@ declare const ScenarioSchema: z.ZodObject<{
1207
2029
  width: z.ZodDefault<z.ZodNumber>;
1208
2030
  height: z.ZodDefault<z.ZodNumber>;
1209
2031
  fps: z.ZodDefault<z.ZodNumber>;
2032
+ /** @deprecated Use `preset` instead. Will be removed in v0.7. */
1210
2033
  quality: z.ZodDefault<z.ZodNumber>;
1211
2034
  preset: z.ZodOptional<z.ZodEnum<["social", "balanced", "archive"]>>;
1212
2035
  outputDir: z.ZodDefault<z.ZodString>;
@@ -1230,6 +2053,27 @@ declare const ScenarioSchema: z.ZodObject<{
1230
2053
  outputDir?: string | undefined;
1231
2054
  filename?: string | undefined;
1232
2055
  }>>;
2056
+ /** Optional audio narration — muxed into MP4 output. */
2057
+ audio: z.ZodOptional<z.ZodObject<{
2058
+ /** Path to the audio file (MP3, WAV, AAC, etc.). */
2059
+ file: z.ZodString;
2060
+ /** Volume level (0.0 = silent, 1.0 = full). */
2061
+ volume: z.ZodDefault<z.ZodNumber>;
2062
+ /** Fade-in duration in milliseconds. */
2063
+ fadeIn: z.ZodDefault<z.ZodNumber>;
2064
+ /** Fade-out duration in milliseconds. */
2065
+ fadeOut: z.ZodDefault<z.ZodNumber>;
2066
+ }, "strip", z.ZodTypeAny, {
2067
+ file: string;
2068
+ volume: number;
2069
+ fadeIn: number;
2070
+ fadeOut: number;
2071
+ }, {
2072
+ file: string;
2073
+ volume?: number | undefined;
2074
+ fadeIn?: number | undefined;
2075
+ fadeOut?: number | undefined;
2076
+ }>>;
1233
2077
  steps: z.ZodArray<z.ZodObject<{
1234
2078
  name: z.ZodOptional<z.ZodString>;
1235
2079
  actions: z.ZodArray<z.ZodDiscriminatedUnion<"action", [z.ZodObject<{
@@ -1403,7 +2247,334 @@ declare const ScenarioSchema: z.ZodObject<{
1403
2247
  }>]>, "many">;
1404
2248
  captureDelay: z.ZodDefault<z.ZodNumber>;
1405
2249
  holdDuration: z.ZodDefault<z.ZodNumber>;
1406
- transition: z.ZodDefault<z.ZodEnum<["fade", "none"]>>;
2250
+ transition: z.ZodDefault<z.ZodEnum<["none", "fade", "slide-left", "slide-up", "blur"]>>;
2251
+ /** Per-step effects override — merges with global effects config. */
2252
+ effects: z.ZodOptional<z.ZodObject<{
2253
+ zoom: z.ZodOptional<z.ZodObject<{
2254
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2255
+ scale: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2256
+ intensity: z.ZodOptional<z.ZodDefault<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>>;
2257
+ duration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2258
+ easing: z.ZodOptional<z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear"]>>>;
2259
+ autoZoom: z.ZodOptional<z.ZodDefault<z.ZodObject<{
2260
+ followCursor: z.ZodDefault<z.ZodBoolean>;
2261
+ /** @deprecated Use `intensity` on the parent zoom config instead. */
2262
+ maxScale: z.ZodDefault<z.ZodNumber>;
2263
+ transitionDuration: z.ZodDefault<z.ZodNumber>;
2264
+ padding: z.ZodDefault<z.ZodNumber>;
2265
+ }, "strip", z.ZodTypeAny, {
2266
+ followCursor: boolean;
2267
+ maxScale: number;
2268
+ transitionDuration: number;
2269
+ padding: number;
2270
+ }, {
2271
+ followCursor?: boolean | undefined;
2272
+ maxScale?: number | undefined;
2273
+ transitionDuration?: number | undefined;
2274
+ padding?: number | undefined;
2275
+ }>>>;
2276
+ }, "strip", z.ZodTypeAny, {
2277
+ duration?: number | undefined;
2278
+ enabled?: boolean | undefined;
2279
+ scale?: number | undefined;
2280
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
2281
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
2282
+ autoZoom?: {
2283
+ followCursor: boolean;
2284
+ maxScale: number;
2285
+ transitionDuration: number;
2286
+ padding: number;
2287
+ } | undefined;
2288
+ }, {
2289
+ duration?: number | undefined;
2290
+ enabled?: boolean | undefined;
2291
+ scale?: number | undefined;
2292
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
2293
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
2294
+ autoZoom?: {
2295
+ followCursor?: boolean | undefined;
2296
+ maxScale?: number | undefined;
2297
+ transitionDuration?: number | undefined;
2298
+ padding?: number | undefined;
2299
+ } | undefined;
2300
+ }>>;
2301
+ cursor: z.ZodOptional<z.ZodObject<{
2302
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2303
+ size: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2304
+ color: z.ZodOptional<z.ZodDefault<z.ZodString>>;
2305
+ speed: z.ZodOptional<z.ZodDefault<z.ZodEnum<["fast", "normal", "slow"]>>>;
2306
+ smoothing: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2307
+ clickEffect: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2308
+ clickColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
2309
+ clickRadius: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2310
+ trail: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2311
+ trailLength: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2312
+ trailColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
2313
+ highlight: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2314
+ highlightRadius: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2315
+ highlightColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
2316
+ }, "strip", z.ZodTypeAny, {
2317
+ enabled?: boolean | undefined;
2318
+ size?: number | undefined;
2319
+ color?: string | undefined;
2320
+ speed?: "fast" | "normal" | "slow" | undefined;
2321
+ smoothing?: boolean | undefined;
2322
+ clickEffect?: boolean | undefined;
2323
+ clickColor?: string | undefined;
2324
+ clickRadius?: number | undefined;
2325
+ trail?: boolean | undefined;
2326
+ trailLength?: number | undefined;
2327
+ trailColor?: string | undefined;
2328
+ highlight?: boolean | undefined;
2329
+ highlightRadius?: number | undefined;
2330
+ highlightColor?: string | undefined;
2331
+ }, {
2332
+ enabled?: boolean | undefined;
2333
+ size?: number | undefined;
2334
+ color?: string | undefined;
2335
+ speed?: "fast" | "normal" | "slow" | undefined;
2336
+ smoothing?: boolean | undefined;
2337
+ clickEffect?: boolean | undefined;
2338
+ clickColor?: string | undefined;
2339
+ clickRadius?: number | undefined;
2340
+ trail?: boolean | undefined;
2341
+ trailLength?: number | undefined;
2342
+ trailColor?: string | undefined;
2343
+ highlight?: boolean | undefined;
2344
+ highlightRadius?: number | undefined;
2345
+ highlightColor?: string | undefined;
2346
+ }>>;
2347
+ background: z.ZodOptional<z.ZodObject<{
2348
+ type: z.ZodOptional<z.ZodDefault<z.ZodEnum<["gradient", "solid", "image"]>>>;
2349
+ value: z.ZodOptional<z.ZodDefault<z.ZodString>>;
2350
+ padding: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2351
+ borderRadius: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2352
+ shadow: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2353
+ }, "strip", z.ZodTypeAny, {
2354
+ value?: string | undefined;
2355
+ type?: "gradient" | "solid" | "image" | undefined;
2356
+ padding?: number | undefined;
2357
+ borderRadius?: number | undefined;
2358
+ shadow?: boolean | undefined;
2359
+ }, {
2360
+ value?: string | undefined;
2361
+ type?: "gradient" | "solid" | "image" | undefined;
2362
+ padding?: number | undefined;
2363
+ borderRadius?: number | undefined;
2364
+ shadow?: boolean | undefined;
2365
+ }>>;
2366
+ deviceFrame: z.ZodOptional<z.ZodObject<{
2367
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2368
+ type: z.ZodOptional<z.ZodDefault<z.ZodEnum<["browser", "macbook", "iphone", "ipad", "android", "none"]>>>;
2369
+ darkMode: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2370
+ }, "strip", z.ZodTypeAny, {
2371
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
2372
+ enabled?: boolean | undefined;
2373
+ darkMode?: boolean | undefined;
2374
+ }, {
2375
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
2376
+ enabled?: boolean | undefined;
2377
+ darkMode?: boolean | undefined;
2378
+ }>>;
2379
+ speedRamp: z.ZodOptional<z.ZodObject<{
2380
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2381
+ idleSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2382
+ actionSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2383
+ transitionFrames: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2384
+ }, "strip", z.ZodTypeAny, {
2385
+ enabled?: boolean | undefined;
2386
+ idleSpeed?: number | undefined;
2387
+ actionSpeed?: number | undefined;
2388
+ transitionFrames?: number | undefined;
2389
+ }, {
2390
+ enabled?: boolean | undefined;
2391
+ idleSpeed?: number | undefined;
2392
+ actionSpeed?: number | undefined;
2393
+ transitionFrames?: number | undefined;
2394
+ }>>;
2395
+ keystroke: z.ZodOptional<z.ZodObject<{
2396
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2397
+ showTyping: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2398
+ position: z.ZodOptional<z.ZodDefault<z.ZodEnum<["bottom-center", "bottom-left", "bottom-right"]>>>;
2399
+ fontSize: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2400
+ backgroundColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
2401
+ textColor: z.ZodOptional<z.ZodDefault<z.ZodString>>;
2402
+ padding: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2403
+ fadeAfter: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2404
+ }, "strip", z.ZodTypeAny, {
2405
+ padding?: number | undefined;
2406
+ enabled?: boolean | undefined;
2407
+ showTyping?: boolean | undefined;
2408
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
2409
+ fontSize?: number | undefined;
2410
+ backgroundColor?: string | undefined;
2411
+ textColor?: string | undefined;
2412
+ fadeAfter?: number | undefined;
2413
+ }, {
2414
+ padding?: number | undefined;
2415
+ enabled?: boolean | undefined;
2416
+ showTyping?: boolean | undefined;
2417
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
2418
+ fontSize?: number | undefined;
2419
+ backgroundColor?: string | undefined;
2420
+ textColor?: string | undefined;
2421
+ fadeAfter?: number | undefined;
2422
+ }>>;
2423
+ watermark: z.ZodOptional<z.ZodObject<{
2424
+ enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2425
+ text: z.ZodOptional<z.ZodDefault<z.ZodString>>;
2426
+ position: z.ZodOptional<z.ZodDefault<z.ZodEnum<["top-left", "top-right", "bottom-left", "bottom-right"]>>>;
2427
+ opacity: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2428
+ fontSize: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
2429
+ color: z.ZodOptional<z.ZodDefault<z.ZodString>>;
2430
+ }, "strip", z.ZodTypeAny, {
2431
+ text?: string | undefined;
2432
+ enabled?: boolean | undefined;
2433
+ color?: string | undefined;
2434
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
2435
+ fontSize?: number | undefined;
2436
+ opacity?: number | undefined;
2437
+ }, {
2438
+ text?: string | undefined;
2439
+ enabled?: boolean | undefined;
2440
+ color?: string | undefined;
2441
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
2442
+ fontSize?: number | undefined;
2443
+ opacity?: number | undefined;
2444
+ }>>;
2445
+ }, "strip", z.ZodTypeAny, {
2446
+ zoom?: {
2447
+ duration?: number | undefined;
2448
+ enabled?: boolean | undefined;
2449
+ scale?: number | undefined;
2450
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
2451
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
2452
+ autoZoom?: {
2453
+ followCursor: boolean;
2454
+ maxScale: number;
2455
+ transitionDuration: number;
2456
+ padding: number;
2457
+ } | undefined;
2458
+ } | undefined;
2459
+ cursor?: {
2460
+ enabled?: boolean | undefined;
2461
+ size?: number | undefined;
2462
+ color?: string | undefined;
2463
+ speed?: "fast" | "normal" | "slow" | undefined;
2464
+ smoothing?: boolean | undefined;
2465
+ clickEffect?: boolean | undefined;
2466
+ clickColor?: string | undefined;
2467
+ clickRadius?: number | undefined;
2468
+ trail?: boolean | undefined;
2469
+ trailLength?: number | undefined;
2470
+ trailColor?: string | undefined;
2471
+ highlight?: boolean | undefined;
2472
+ highlightRadius?: number | undefined;
2473
+ highlightColor?: string | undefined;
2474
+ } | undefined;
2475
+ background?: {
2476
+ value?: string | undefined;
2477
+ type?: "gradient" | "solid" | "image" | undefined;
2478
+ padding?: number | undefined;
2479
+ borderRadius?: number | undefined;
2480
+ shadow?: boolean | undefined;
2481
+ } | undefined;
2482
+ deviceFrame?: {
2483
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
2484
+ enabled?: boolean | undefined;
2485
+ darkMode?: boolean | undefined;
2486
+ } | undefined;
2487
+ speedRamp?: {
2488
+ enabled?: boolean | undefined;
2489
+ idleSpeed?: number | undefined;
2490
+ actionSpeed?: number | undefined;
2491
+ transitionFrames?: number | undefined;
2492
+ } | undefined;
2493
+ keystroke?: {
2494
+ padding?: number | undefined;
2495
+ enabled?: boolean | undefined;
2496
+ showTyping?: boolean | undefined;
2497
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
2498
+ fontSize?: number | undefined;
2499
+ backgroundColor?: string | undefined;
2500
+ textColor?: string | undefined;
2501
+ fadeAfter?: number | undefined;
2502
+ } | undefined;
2503
+ watermark?: {
2504
+ text?: string | undefined;
2505
+ enabled?: boolean | undefined;
2506
+ color?: string | undefined;
2507
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
2508
+ fontSize?: number | undefined;
2509
+ opacity?: number | undefined;
2510
+ } | undefined;
2511
+ }, {
2512
+ zoom?: {
2513
+ duration?: number | undefined;
2514
+ enabled?: boolean | undefined;
2515
+ scale?: number | undefined;
2516
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
2517
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
2518
+ autoZoom?: {
2519
+ followCursor?: boolean | undefined;
2520
+ maxScale?: number | undefined;
2521
+ transitionDuration?: number | undefined;
2522
+ padding?: number | undefined;
2523
+ } | undefined;
2524
+ } | undefined;
2525
+ cursor?: {
2526
+ enabled?: boolean | undefined;
2527
+ size?: number | undefined;
2528
+ color?: string | undefined;
2529
+ speed?: "fast" | "normal" | "slow" | undefined;
2530
+ smoothing?: boolean | undefined;
2531
+ clickEffect?: boolean | undefined;
2532
+ clickColor?: string | undefined;
2533
+ clickRadius?: number | undefined;
2534
+ trail?: boolean | undefined;
2535
+ trailLength?: number | undefined;
2536
+ trailColor?: string | undefined;
2537
+ highlight?: boolean | undefined;
2538
+ highlightRadius?: number | undefined;
2539
+ highlightColor?: string | undefined;
2540
+ } | undefined;
2541
+ background?: {
2542
+ value?: string | undefined;
2543
+ type?: "gradient" | "solid" | "image" | undefined;
2544
+ padding?: number | undefined;
2545
+ borderRadius?: number | undefined;
2546
+ shadow?: boolean | undefined;
2547
+ } | undefined;
2548
+ deviceFrame?: {
2549
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
2550
+ enabled?: boolean | undefined;
2551
+ darkMode?: boolean | undefined;
2552
+ } | undefined;
2553
+ speedRamp?: {
2554
+ enabled?: boolean | undefined;
2555
+ idleSpeed?: number | undefined;
2556
+ actionSpeed?: number | undefined;
2557
+ transitionFrames?: number | undefined;
2558
+ } | undefined;
2559
+ keystroke?: {
2560
+ padding?: number | undefined;
2561
+ enabled?: boolean | undefined;
2562
+ showTyping?: boolean | undefined;
2563
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
2564
+ fontSize?: number | undefined;
2565
+ backgroundColor?: string | undefined;
2566
+ textColor?: string | undefined;
2567
+ fadeAfter?: number | undefined;
2568
+ } | undefined;
2569
+ watermark?: {
2570
+ text?: string | undefined;
2571
+ enabled?: boolean | undefined;
2572
+ color?: string | undefined;
2573
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
2574
+ fontSize?: number | undefined;
2575
+ opacity?: number | undefined;
2576
+ } | undefined;
2577
+ }>>;
1407
2578
  }, "strip", z.ZodTypeAny, {
1408
2579
  actions: ({
1409
2580
  action: "navigate";
@@ -1464,8 +2635,75 @@ declare const ScenarioSchema: z.ZodObject<{
1464
2635
  })[];
1465
2636
  captureDelay: number;
1466
2637
  holdDuration: number;
1467
- transition: "none" | "fade";
2638
+ transition: "none" | "fade" | "slide-left" | "slide-up" | "blur";
1468
2639
  name?: string | undefined;
2640
+ effects?: {
2641
+ zoom?: {
2642
+ duration?: number | undefined;
2643
+ enabled?: boolean | undefined;
2644
+ scale?: number | undefined;
2645
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
2646
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
2647
+ autoZoom?: {
2648
+ followCursor: boolean;
2649
+ maxScale: number;
2650
+ transitionDuration: number;
2651
+ padding: number;
2652
+ } | undefined;
2653
+ } | undefined;
2654
+ cursor?: {
2655
+ enabled?: boolean | undefined;
2656
+ size?: number | undefined;
2657
+ color?: string | undefined;
2658
+ speed?: "fast" | "normal" | "slow" | undefined;
2659
+ smoothing?: boolean | undefined;
2660
+ clickEffect?: boolean | undefined;
2661
+ clickColor?: string | undefined;
2662
+ clickRadius?: number | undefined;
2663
+ trail?: boolean | undefined;
2664
+ trailLength?: number | undefined;
2665
+ trailColor?: string | undefined;
2666
+ highlight?: boolean | undefined;
2667
+ highlightRadius?: number | undefined;
2668
+ highlightColor?: string | undefined;
2669
+ } | undefined;
2670
+ background?: {
2671
+ value?: string | undefined;
2672
+ type?: "gradient" | "solid" | "image" | undefined;
2673
+ padding?: number | undefined;
2674
+ borderRadius?: number | undefined;
2675
+ shadow?: boolean | undefined;
2676
+ } | undefined;
2677
+ deviceFrame?: {
2678
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
2679
+ enabled?: boolean | undefined;
2680
+ darkMode?: boolean | undefined;
2681
+ } | undefined;
2682
+ speedRamp?: {
2683
+ enabled?: boolean | undefined;
2684
+ idleSpeed?: number | undefined;
2685
+ actionSpeed?: number | undefined;
2686
+ transitionFrames?: number | undefined;
2687
+ } | undefined;
2688
+ keystroke?: {
2689
+ padding?: number | undefined;
2690
+ enabled?: boolean | undefined;
2691
+ showTyping?: boolean | undefined;
2692
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
2693
+ fontSize?: number | undefined;
2694
+ backgroundColor?: string | undefined;
2695
+ textColor?: string | undefined;
2696
+ fadeAfter?: number | undefined;
2697
+ } | undefined;
2698
+ watermark?: {
2699
+ text?: string | undefined;
2700
+ enabled?: boolean | undefined;
2701
+ color?: string | undefined;
2702
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
2703
+ fontSize?: number | undefined;
2704
+ opacity?: number | undefined;
2705
+ } | undefined;
2706
+ } | undefined;
1469
2707
  }, {
1470
2708
  actions: ({
1471
2709
  action: "navigate";
@@ -1527,19 +2765,83 @@ declare const ScenarioSchema: z.ZodObject<{
1527
2765
  name?: string | undefined;
1528
2766
  captureDelay?: number | undefined;
1529
2767
  holdDuration?: number | undefined;
1530
- transition?: "none" | "fade" | undefined;
2768
+ transition?: "none" | "fade" | "slide-left" | "slide-up" | "blur" | undefined;
2769
+ effects?: {
2770
+ zoom?: {
2771
+ duration?: number | undefined;
2772
+ enabled?: boolean | undefined;
2773
+ scale?: number | undefined;
2774
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
2775
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
2776
+ autoZoom?: {
2777
+ followCursor?: boolean | undefined;
2778
+ maxScale?: number | undefined;
2779
+ transitionDuration?: number | undefined;
2780
+ padding?: number | undefined;
2781
+ } | undefined;
2782
+ } | undefined;
2783
+ cursor?: {
2784
+ enabled?: boolean | undefined;
2785
+ size?: number | undefined;
2786
+ color?: string | undefined;
2787
+ speed?: "fast" | "normal" | "slow" | undefined;
2788
+ smoothing?: boolean | undefined;
2789
+ clickEffect?: boolean | undefined;
2790
+ clickColor?: string | undefined;
2791
+ clickRadius?: number | undefined;
2792
+ trail?: boolean | undefined;
2793
+ trailLength?: number | undefined;
2794
+ trailColor?: string | undefined;
2795
+ highlight?: boolean | undefined;
2796
+ highlightRadius?: number | undefined;
2797
+ highlightColor?: string | undefined;
2798
+ } | undefined;
2799
+ background?: {
2800
+ value?: string | undefined;
2801
+ type?: "gradient" | "solid" | "image" | undefined;
2802
+ padding?: number | undefined;
2803
+ borderRadius?: number | undefined;
2804
+ shadow?: boolean | undefined;
2805
+ } | undefined;
2806
+ deviceFrame?: {
2807
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
2808
+ enabled?: boolean | undefined;
2809
+ darkMode?: boolean | undefined;
2810
+ } | undefined;
2811
+ speedRamp?: {
2812
+ enabled?: boolean | undefined;
2813
+ idleSpeed?: number | undefined;
2814
+ actionSpeed?: number | undefined;
2815
+ transitionFrames?: number | undefined;
2816
+ } | undefined;
2817
+ keystroke?: {
2818
+ padding?: number | undefined;
2819
+ enabled?: boolean | undefined;
2820
+ showTyping?: boolean | undefined;
2821
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
2822
+ fontSize?: number | undefined;
2823
+ backgroundColor?: string | undefined;
2824
+ textColor?: string | undefined;
2825
+ fadeAfter?: number | undefined;
2826
+ } | undefined;
2827
+ watermark?: {
2828
+ text?: string | undefined;
2829
+ enabled?: boolean | undefined;
2830
+ color?: string | undefined;
2831
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
2832
+ fontSize?: number | undefined;
2833
+ opacity?: number | undefined;
2834
+ } | undefined;
2835
+ } | undefined;
1531
2836
  }>, "many">;
1532
2837
  }, "strip", z.ZodTypeAny, {
1533
2838
  name: string;
1534
- viewport: {
1535
- width: number;
1536
- height: number;
1537
- };
1538
2839
  effects: {
1539
2840
  zoom: {
1540
2841
  duration: number;
1541
2842
  enabled: boolean;
1542
2843
  scale: number;
2844
+ intensity: "subtle" | "light" | "moderate" | "strong" | "dramatic";
1543
2845
  easing: "ease-in-out" | "ease-in" | "ease-out" | "linear";
1544
2846
  autoZoom: {
1545
2847
  followCursor: boolean;
@@ -1547,7 +2849,6 @@ declare const ScenarioSchema: z.ZodObject<{
1547
2849
  transitionDuration: number;
1548
2850
  padding: number;
1549
2851
  };
1550
- intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
1551
2852
  };
1552
2853
  cursor: {
1553
2854
  enabled: boolean;
@@ -1602,6 +2903,10 @@ declare const ScenarioSchema: z.ZodObject<{
1602
2903
  opacity: number;
1603
2904
  };
1604
2905
  };
2906
+ viewport: {
2907
+ width: number;
2908
+ height: number;
2909
+ };
1605
2910
  output: {
1606
2911
  format: "gif" | "mp4" | "webm" | "png-sequence";
1607
2912
  width: number;
@@ -1672,10 +2977,83 @@ declare const ScenarioSchema: z.ZodObject<{
1672
2977
  })[];
1673
2978
  captureDelay: number;
1674
2979
  holdDuration: number;
1675
- transition: "none" | "fade";
2980
+ transition: "none" | "fade" | "slide-left" | "slide-up" | "blur";
1676
2981
  name?: string | undefined;
2982
+ effects?: {
2983
+ zoom?: {
2984
+ duration?: number | undefined;
2985
+ enabled?: boolean | undefined;
2986
+ scale?: number | undefined;
2987
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
2988
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
2989
+ autoZoom?: {
2990
+ followCursor: boolean;
2991
+ maxScale: number;
2992
+ transitionDuration: number;
2993
+ padding: number;
2994
+ } | undefined;
2995
+ } | undefined;
2996
+ cursor?: {
2997
+ enabled?: boolean | undefined;
2998
+ size?: number | undefined;
2999
+ color?: string | undefined;
3000
+ speed?: "fast" | "normal" | "slow" | undefined;
3001
+ smoothing?: boolean | undefined;
3002
+ clickEffect?: boolean | undefined;
3003
+ clickColor?: string | undefined;
3004
+ clickRadius?: number | undefined;
3005
+ trail?: boolean | undefined;
3006
+ trailLength?: number | undefined;
3007
+ trailColor?: string | undefined;
3008
+ highlight?: boolean | undefined;
3009
+ highlightRadius?: number | undefined;
3010
+ highlightColor?: string | undefined;
3011
+ } | undefined;
3012
+ background?: {
3013
+ value?: string | undefined;
3014
+ type?: "gradient" | "solid" | "image" | undefined;
3015
+ padding?: number | undefined;
3016
+ borderRadius?: number | undefined;
3017
+ shadow?: boolean | undefined;
3018
+ } | undefined;
3019
+ deviceFrame?: {
3020
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
3021
+ enabled?: boolean | undefined;
3022
+ darkMode?: boolean | undefined;
3023
+ } | undefined;
3024
+ speedRamp?: {
3025
+ enabled?: boolean | undefined;
3026
+ idleSpeed?: number | undefined;
3027
+ actionSpeed?: number | undefined;
3028
+ transitionFrames?: number | undefined;
3029
+ } | undefined;
3030
+ keystroke?: {
3031
+ padding?: number | undefined;
3032
+ enabled?: boolean | undefined;
3033
+ showTyping?: boolean | undefined;
3034
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
3035
+ fontSize?: number | undefined;
3036
+ backgroundColor?: string | undefined;
3037
+ textColor?: string | undefined;
3038
+ fadeAfter?: number | undefined;
3039
+ } | undefined;
3040
+ watermark?: {
3041
+ text?: string | undefined;
3042
+ enabled?: boolean | undefined;
3043
+ color?: string | undefined;
3044
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
3045
+ fontSize?: number | undefined;
3046
+ opacity?: number | undefined;
3047
+ } | undefined;
3048
+ } | undefined;
1677
3049
  }[];
1678
3050
  description?: string | undefined;
3051
+ audio?: {
3052
+ file: string;
3053
+ volume: number;
3054
+ fadeIn: number;
3055
+ fadeOut: number;
3056
+ } | undefined;
1679
3057
  }, {
1680
3058
  name: string;
1681
3059
  steps: {
@@ -1739,13 +3117,75 @@ declare const ScenarioSchema: z.ZodObject<{
1739
3117
  name?: string | undefined;
1740
3118
  captureDelay?: number | undefined;
1741
3119
  holdDuration?: number | undefined;
1742
- transition?: "none" | "fade" | undefined;
3120
+ transition?: "none" | "fade" | "slide-left" | "slide-up" | "blur" | undefined;
3121
+ effects?: {
3122
+ zoom?: {
3123
+ duration?: number | undefined;
3124
+ enabled?: boolean | undefined;
3125
+ scale?: number | undefined;
3126
+ intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
3127
+ easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
3128
+ autoZoom?: {
3129
+ followCursor?: boolean | undefined;
3130
+ maxScale?: number | undefined;
3131
+ transitionDuration?: number | undefined;
3132
+ padding?: number | undefined;
3133
+ } | undefined;
3134
+ } | undefined;
3135
+ cursor?: {
3136
+ enabled?: boolean | undefined;
3137
+ size?: number | undefined;
3138
+ color?: string | undefined;
3139
+ speed?: "fast" | "normal" | "slow" | undefined;
3140
+ smoothing?: boolean | undefined;
3141
+ clickEffect?: boolean | undefined;
3142
+ clickColor?: string | undefined;
3143
+ clickRadius?: number | undefined;
3144
+ trail?: boolean | undefined;
3145
+ trailLength?: number | undefined;
3146
+ trailColor?: string | undefined;
3147
+ highlight?: boolean | undefined;
3148
+ highlightRadius?: number | undefined;
3149
+ highlightColor?: string | undefined;
3150
+ } | undefined;
3151
+ background?: {
3152
+ value?: string | undefined;
3153
+ type?: "gradient" | "solid" | "image" | undefined;
3154
+ padding?: number | undefined;
3155
+ borderRadius?: number | undefined;
3156
+ shadow?: boolean | undefined;
3157
+ } | undefined;
3158
+ deviceFrame?: {
3159
+ type?: "browser" | "macbook" | "iphone" | "ipad" | "android" | "none" | undefined;
3160
+ enabled?: boolean | undefined;
3161
+ darkMode?: boolean | undefined;
3162
+ } | undefined;
3163
+ speedRamp?: {
3164
+ enabled?: boolean | undefined;
3165
+ idleSpeed?: number | undefined;
3166
+ actionSpeed?: number | undefined;
3167
+ transitionFrames?: number | undefined;
3168
+ } | undefined;
3169
+ keystroke?: {
3170
+ padding?: number | undefined;
3171
+ enabled?: boolean | undefined;
3172
+ showTyping?: boolean | undefined;
3173
+ position?: "bottom-center" | "bottom-left" | "bottom-right" | undefined;
3174
+ fontSize?: number | undefined;
3175
+ backgroundColor?: string | undefined;
3176
+ textColor?: string | undefined;
3177
+ fadeAfter?: number | undefined;
3178
+ } | undefined;
3179
+ watermark?: {
3180
+ text?: string | undefined;
3181
+ enabled?: boolean | undefined;
3182
+ color?: string | undefined;
3183
+ position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | undefined;
3184
+ fontSize?: number | undefined;
3185
+ opacity?: number | undefined;
3186
+ } | undefined;
3187
+ } | undefined;
1743
3188
  }[];
1744
- description?: string | undefined;
1745
- viewport?: {
1746
- width?: number | undefined;
1747
- height?: number | undefined;
1748
- } | undefined;
1749
3189
  effects?: {
1750
3190
  zoom?: {
1751
3191
  duration?: number | undefined;
@@ -1813,6 +3253,11 @@ declare const ScenarioSchema: z.ZodObject<{
1813
3253
  opacity?: number | undefined;
1814
3254
  } | undefined;
1815
3255
  } | undefined;
3256
+ description?: string | undefined;
3257
+ viewport?: {
3258
+ width?: number | undefined;
3259
+ height?: number | undefined;
3260
+ } | undefined;
1816
3261
  output?: {
1817
3262
  format?: "gif" | "mp4" | "webm" | "png-sequence" | undefined;
1818
3263
  width?: number | undefined;
@@ -1823,6 +3268,12 @@ declare const ScenarioSchema: z.ZodObject<{
1823
3268
  outputDir?: string | undefined;
1824
3269
  filename?: string | undefined;
1825
3270
  } | undefined;
3271
+ audio?: {
3272
+ file: string;
3273
+ volume?: number | undefined;
3274
+ fadeIn?: number | undefined;
3275
+ fadeOut?: number | undefined;
3276
+ } | undefined;
1826
3277
  }>;
1827
3278
  type Scenario = z.infer<typeof ScenarioSchema>;
1828
3279
  interface KeystrokeEvent {
@@ -1858,6 +3309,8 @@ interface CapturedFrame {
1858
3309
  stepIndex?: number;
1859
3310
  actionType?: string;
1860
3311
  keystrokes?: KeystrokeEvent[];
3312
+ /** True when the frame was captured during a scroll action. */
3313
+ isScrolling?: boolean;
1861
3314
  }
1862
3315
  interface ComposedFrame {
1863
3316
  index: number;
@@ -1917,6 +3370,7 @@ declare class ClipwiseRecorder {
1917
3370
  * each input field's text on a separate line. */
1918
3371
  private keystrokeSessionId;
1919
3372
  private currentStepIndex;
3373
+ private isScrolling;
1920
3374
  private cursorPosition;
1921
3375
  private viewport;
1922
3376
  private deviceScaleFactor;
@@ -2227,13 +3681,13 @@ declare function encodeGif(frames: ComposedFrame[], config: OutputConfig): Promi
2227
3681
  *
2228
3682
  * Requires ffmpeg to be installed and available in PATH.
2229
3683
  */
2230
- declare function encodeMp4(frames: ComposedFrame[], config: OutputConfig): Promise<Buffer>;
3684
+ declare function encodeMp4(frames: ComposedFrame[], config: OutputConfig, audio?: AudioConfig): Promise<Buffer>;
2231
3685
  /**
2232
3686
  * Streaming variant of encodeMp4 — accepts an AsyncIterable so frames can
2233
3687
  * be piped to FFmpeg as they arrive from the composition pipeline,
2234
3688
  * overlapping composition and encoding rather than waiting for all frames.
2235
3689
  */
2236
- declare function encodeMp4Stream(frames: AsyncIterable<ComposedFrame>, config: OutputConfig): Promise<Buffer>;
3690
+ declare function encodeMp4Stream(frames: AsyncIterable<ComposedFrame>, config: OutputConfig, audio?: AudioConfig): Promise<Buffer>;
2237
3691
  /**
2238
3692
  * Save a sequence of composed frames as individual PNG files.
2239
3693
  */
@@ -2460,22 +3914,31 @@ type RawInfo = {
2460
3914
  height: number;
2461
3915
  channels: 4;
2462
3916
  };
3917
+ type TransitionResult = {
3918
+ buffer: Buffer;
3919
+ rawInfo: RawInfo;
3920
+ };
2463
3921
  /**
2464
3922
  * Apply a crossfade transition between two frame buffers.
2465
3923
  * Uses raw pixel weighted averaging for accurate blending.
3924
+ */
3925
+ declare function applyCrossfade(fromBuffer: Buffer, toBuffer: Buffer, progress: number, width: number, height: number, fromRawInfo?: RawInfo, toRawInfo?: RawInfo): Promise<TransitionResult>;
3926
+ /**
3927
+ * Slide transition: the incoming frame slides in from the given direction,
3928
+ * pushing the outgoing frame away.
2466
3929
  *
2467
- * @param fromBuffer - The outgoing frame (PNG or raw RGBA)
2468
- * @param toBuffer - The incoming frame (PNG or raw RGBA)
2469
- * @param progress - 0 = fully "from", 1 = fully "to"
2470
- * @param width - Frame width
2471
- * @param height - Frame height
2472
- * @param fromRawInfo - Pass when fromBuffer is raw RGBA
2473
- * @param toRawInfo - Pass when toBuffer is raw RGBA
3930
+ * @param direction - "left" = new frame enters from left; "up" = from bottom
2474
3931
  */
2475
- declare function applyCrossfade(fromBuffer: Buffer, toBuffer: Buffer, progress: number, width: number, height: number, fromRawInfo?: RawInfo, toRawInfo?: RawInfo): Promise<{
2476
- buffer: Buffer;
2477
- rawInfo: RawInfo;
2478
- }>;
3932
+ declare function applySlide(fromBuffer: Buffer, toBuffer: Buffer, progress: number, width: number, height: number, direction: "left" | "up", fromRawInfo?: RawInfo, toRawInfo?: RawInfo): Promise<TransitionResult>;
3933
+ /**
3934
+ * Blur transition: outgoing frame blurs out while incoming frame fades in.
3935
+ * Combines a Gaussian blur on the "from" frame with crossfade to "to".
3936
+ */
3937
+ declare function applyBlur(fromBuffer: Buffer, toBuffer: Buffer, progress: number, width: number, height: number, fromRawInfo?: RawInfo, toRawInfo?: RawInfo): Promise<TransitionResult>;
3938
+ /**
3939
+ * Apply any transition type between two frame buffers.
3940
+ */
3941
+ declare function applyTransition(type: TransitionType, fromBuffer: Buffer, toBuffer: Buffer, progress: number, width: number, height: number, fromRawInfo?: RawInfo, toRawInfo?: RawInfo): Promise<TransitionResult>;
2479
3942
 
2480
3943
  type WatermarkConfig = EffectsConfig["watermark"];
2481
3944
  /**
@@ -2504,4 +3967,4 @@ interface ValidationResult {
2504
3967
  */
2505
3968
  declare function validateScenario(scenario: Scenario): ValidationResult;
2506
3969
 
2507
- export { CanvasRenderer, type CapturedFrame, ClipwiseRecorder, type ComposedFrame, type ConcurrentResult, ConcurrentSession, type EffectsConfig, type FrameContext, type KeystrokeEvent, type OutputConfig, type PipelineProgress, type RecordingHandle, type RecordingSession, type Scenario, type Step, type StepAction, StreamingSession, ZOOM_INTENSITY_SCALES, type ZoomIntensity, applyCrossfade, buildZoomClickLookup, calculateAdaptiveZoom, calculateAdaptiveZoomFromLookup, calculateAdaptiveZoomInWindow, calculatePanOffset, encodeGif, encodeMp4, encodeMp4Stream, lerpZoom, loadScenario, parseScenario, renderCursorHighlight, renderCursorTrail, renderKeystrokeHud, renderWatermark, resolveZoomScale, savePngSequence, validateScenario };
3970
+ export { type AudioConfig, CanvasRenderer, type CapturedFrame, ClipwiseRecorder, type ComposedFrame, type ConcurrentResult, ConcurrentSession, type EffectsConfig, type FrameContext, type KeystrokeEvent, type OutputConfig, type PipelineProgress, type RecordingHandle, type RecordingSession, type Scenario, type Step, type StepAction, type StepEffectsOverride, StreamingSession, type TransitionType, ZOOM_INTENSITY_SCALES, type ZoomIntensity, applyBlur, applyCrossfade, applySlide, applyTransition, buildZoomClickLookup, calculateAdaptiveZoom, calculateAdaptiveZoomFromLookup, calculateAdaptiveZoomInWindow, calculatePanOffset, encodeGif, encodeMp4, encodeMp4Stream, lerpZoom, loadScenario, parseScenario, renderCursorHighlight, renderCursorTrail, renderKeystrokeHud, renderWatermark, resolveZoomScale, savePngSequence, validateScenario };