framefields 2.6.2 → 2.7.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.
Files changed (463) hide show
  1. package/dist/audio/index.d.mts +4 -4
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-BHuVoNc-.mjs → audio-j3ttoRDX.mjs} +4 -4
  4. package/dist/{audio-BHuVoNc-.mjs.map → audio-j3ttoRDX.mjs.map} +1 -1
  5. package/dist/{audio-WcPMxtcz.d.mts → audio-tL8CcPra.d.mts} +3 -3
  6. package/dist/{audio-WcPMxtcz.d.mts.map → audio-tL8CcPra.d.mts.map} +1 -1
  7. package/dist/components/index.d.mts +10 -10
  8. package/dist/components/index.mjs +44 -44
  9. package/dist/{dist-Wsjx_Rza.mjs → dist-BHTd-EC1.mjs} +92 -19
  10. package/dist/{dist-Wsjx_Rza.mjs.map → dist-BHTd-EC1.mjs.map} +1 -1
  11. package/dist/{dist-CSU_2yUb.mjs → dist-BM0ilHvQ.mjs} +115 -21
  12. package/dist/dist-BM0ilHvQ.mjs.map +1 -0
  13. package/dist/{dist-CL5JOMSp.mjs → dist-BRXsfWKQ.mjs} +424 -8
  14. package/dist/dist-BRXsfWKQ.mjs.map +1 -0
  15. package/dist/{dist-PlaSQJ43.mjs → dist-CPtFZxtu.mjs} +2 -2
  16. package/dist/{dist-PlaSQJ43.mjs.map → dist-CPtFZxtu.mjs.map} +1 -1
  17. package/dist/effects/index.d.mts +4 -4
  18. package/dist/effects/index.mjs +35 -35
  19. package/dist/{effects-BvloJaPQ.mjs → effects-Dy661XS_.mjs} +3 -3
  20. package/dist/{effects-BvloJaPQ.mjs.map → effects-Dy661XS_.mjs.map} +1 -1
  21. package/dist/fonts/index.mjs +2 -2
  22. package/dist/{fonts-DpnBDAqM.mjs → fonts-BcFhAqqO.mjs} +2 -2
  23. package/dist/{fonts-DpnBDAqM.mjs.map → fonts-BcFhAqqO.mjs.map} +1 -1
  24. package/dist/{gpu-BvYDrqOC.mjs → gpu-zIhSz_0X.mjs} +2 -2
  25. package/dist/{gpu-BvYDrqOC.mjs.map → gpu-zIhSz_0X.mjs.map} +1 -1
  26. package/dist/{index-kj5uSzaI.d.mts → index-B1ENegOQ.d.mts} +204 -2
  27. package/dist/index-B1ENegOQ.d.mts.map +1 -0
  28. package/dist/{index-DsGBouQM.d.mts → index-CJRTBLZ4.d.mts} +4 -4
  29. package/dist/{index-DsGBouQM.d.mts.map → index-CJRTBLZ4.d.mts.map} +1 -1
  30. package/dist/{index-DcIR_DgU.d.mts → index-Cg30slle.d.mts} +2 -2
  31. package/dist/{index-DcIR_DgU.d.mts.map → index-Cg30slle.d.mts.map} +1 -1
  32. package/dist/{index-wUhS1_4W.d.mts → index-DeeMmoEA.d.mts} +2 -2
  33. package/dist/{index-wUhS1_4W.d.mts.map → index-DeeMmoEA.d.mts.map} +1 -1
  34. package/dist/{index-C541Ol1N.d.mts → index-ePGQ_C7f.d.mts} +39 -16
  35. package/dist/index-ePGQ_C7f.d.mts.map +1 -0
  36. package/dist/{index-C6ihzCpZ.d.mts → index-l1yRugLc.d.mts} +3 -3
  37. package/dist/{index-C6ihzCpZ.d.mts.map → index-l1yRugLc.d.mts.map} +1 -1
  38. package/dist/{index-BCzXnNpb.d.mts → index-uDZ9Yuv-.d.mts} +5 -8
  39. package/dist/index-uDZ9Yuv-.d.mts.map +1 -0
  40. package/dist/index.d.mts +11 -11
  41. package/dist/index.mjs +53 -53
  42. package/dist/preview/index.d.mts +3 -3
  43. package/dist/preview/index.mjs +10 -10
  44. package/dist/{preview-UMG4Colu.mjs → preview-IpdVFuxv.mjs} +3 -2
  45. package/dist/{preview-UMG4Colu.mjs.map → preview-IpdVFuxv.mjs.map} +1 -1
  46. package/dist/preview-engine/audio.mjs +1 -1
  47. package/dist/preview-engine/{chunk-RF62TV3G.mjs → chunk-25WRUINA.mjs} +1 -1
  48. package/dist/preview-engine/{chunk-MMVFX42U.mjs → chunk-2AEWPT6Y.mjs} +1 -1
  49. package/dist/preview-engine/{chunk-IIOHF7MH.mjs → chunk-2MDTUA3W.mjs} +1 -1
  50. package/dist/preview-engine/{chunk-KWTTANYN.mjs → chunk-2TLABBER.mjs} +1 -1
  51. package/dist/preview-engine/{chunk-MUOJMF7M.mjs → chunk-3QOJVABU.mjs} +1 -1
  52. package/dist/preview-engine/{chunk-RDEQ4LQU.mjs → chunk-4Q3ZUTQC.mjs} +1 -1
  53. package/dist/preview-engine/{chunk-OXXRKNHW.mjs → chunk-5BXCJ2QX.mjs} +1 -1
  54. package/dist/preview-engine/{chunk-JTT3YX7W.mjs → chunk-5R4UF7YK.mjs} +1 -1
  55. package/dist/preview-engine/{chunk-SVE3XWO7.mjs → chunk-6VDYWMP5.mjs} +1 -1
  56. package/dist/preview-engine/{chunk-ULPLHKM2.mjs → chunk-7B7QQDPZ.mjs} +1 -1
  57. package/dist/preview-engine/{chunk-ULVX4VYT.mjs → chunk-7ZA36EZE.mjs} +1 -1
  58. package/dist/preview-engine/{chunk-LYSU6S4O.mjs → chunk-AJ6BVUDB.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-J24VHZS6.mjs → chunk-BDXGUSSF.mjs} +1 -1
  60. package/dist/preview-engine/{chunk-B7J72YSP.mjs → chunk-CC5V7UBF.mjs} +1 -1
  61. package/dist/preview-engine/{chunk-JD4TBC6Z.mjs → chunk-CP42LYD7.mjs} +1 -1
  62. package/dist/preview-engine/{chunk-LN3YAWUD.mjs → chunk-DJWDD3OE.mjs} +1 -1
  63. package/dist/preview-engine/{chunk-V3FODTPI.mjs → chunk-DZEWY4PR.mjs} +22 -22
  64. package/dist/preview-engine/{chunk-RKNV5N7D.mjs → chunk-ENGQ55LR.mjs} +1 -1
  65. package/dist/preview-engine/{chunk-NIILFJKE.mjs → chunk-FBXKVLTB.mjs} +14 -14
  66. package/dist/preview-engine/{chunk-MJCK5FLZ.mjs → chunk-FMEXTHL7.mjs} +1 -1
  67. package/dist/preview-engine/{chunk-UEQIO6AH.mjs → chunk-FQ7UCMWR.mjs} +1 -1
  68. package/dist/preview-engine/{chunk-TPFDAOW7.mjs → chunk-FRIBHQTM.mjs} +1 -1
  69. package/dist/preview-engine/chunk-FT7HJ6IE.mjs +3 -0
  70. package/dist/preview-engine/{chunk-YEPYVASB.mjs → chunk-G3UOUGIE.mjs} +1 -1
  71. package/dist/preview-engine/{chunk-4JX5LBE2.mjs → chunk-H4GDIVX4.mjs} +1 -1
  72. package/dist/preview-engine/{chunk-DDFWN7DI.mjs → chunk-I7QIQURU.mjs} +1 -1
  73. package/dist/preview-engine/{chunk-3KHD67Q3.mjs → chunk-ID344UBN.mjs} +1 -1
  74. package/dist/preview-engine/{chunk-5NT7WWJR.mjs → chunk-IGCXUGHT.mjs} +1 -1
  75. package/dist/preview-engine/{chunk-QPBTLJ5W.mjs → chunk-IK3YA6MC.mjs} +1 -1
  76. package/dist/preview-engine/chunk-J5SKQFJ6.mjs +1 -0
  77. package/dist/preview-engine/{chunk-Q7JN4EHX.mjs → chunk-JOPZNSZJ.mjs} +1 -1
  78. package/dist/preview-engine/{chunk-SQ52PBF3.mjs → chunk-JOSNIMFT.mjs} +1 -1
  79. package/dist/preview-engine/{chunk-SXNCNG4L.mjs → chunk-JR443L5E.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-FZLKPBKS.mjs → chunk-KCAFMWDM.mjs} +1 -1
  81. package/dist/preview-engine/{chunk-QRYCB6E3.mjs → chunk-LAEPNVOE.mjs} +1 -1
  82. package/dist/preview-engine/chunk-MAALUQK3.mjs +1974 -0
  83. package/dist/preview-engine/chunk-MHCXSWK7.mjs +1 -0
  84. package/dist/preview-engine/{chunk-4INGTMZ5.mjs → chunk-MWBARRK2.mjs} +1 -1
  85. package/dist/preview-engine/{chunk-GQIRV466.mjs → chunk-MXPN2GB7.mjs} +1 -1
  86. package/dist/preview-engine/{chunk-W2EZFV4Q.mjs → chunk-NHYB5YC3.mjs} +1 -1
  87. package/dist/preview-engine/{chunk-22BLMBWX.mjs → chunk-PXSKIGAP.mjs} +6 -6
  88. package/dist/preview-engine/{chunk-SP22JWN2.mjs → chunk-PYM2FBFA.mjs} +1 -1
  89. package/dist/preview-engine/chunk-QDTJ4MOJ.mjs +1 -0
  90. package/dist/preview-engine/{chunk-6PMATELR.mjs → chunk-RQU2GFGH.mjs} +1 -1
  91. package/dist/preview-engine/{chunk-UQD2UE6I.mjs → chunk-RWDPBES3.mjs} +1 -1
  92. package/dist/preview-engine/{chunk-QVW5METG.mjs → chunk-S5ONWSZF.mjs} +1 -1
  93. package/dist/preview-engine/{chunk-2YGR5YCN.mjs → chunk-SIU6JU2R.mjs} +1 -1
  94. package/dist/preview-engine/{chunk-NQZRPPUU.mjs → chunk-SJ3Q4AQP.mjs} +1 -1
  95. package/dist/preview-engine/chunk-TEBZRQPG.mjs +1 -0
  96. package/dist/preview-engine/{chunk-WDWHOXSA.mjs → chunk-UUDML2SN.mjs} +1 -1
  97. package/dist/preview-engine/{chunk-RHXZXWJ4.mjs → chunk-VAS4IJZR.mjs} +1 -1
  98. package/dist/preview-engine/{chunk-DOCFOSA6.mjs → chunk-WTDK6H46.mjs} +1 -1
  99. package/dist/preview-engine/chunk-XNMEVVQB.mjs +1 -0
  100. package/dist/preview-engine/{chunk-AKT4YQWL.mjs → chunk-YVGT4NK6.mjs} +2 -2
  101. package/dist/preview-engine/chunk-ZYTXBBIX.mjs +1 -0
  102. package/dist/preview-engine/components.mjs +1 -1
  103. package/dist/preview-engine/effects.mjs +1 -1
  104. package/dist/preview-engine/framefields.mjs +1 -1
  105. package/dist/preview-engine/player.mjs +2 -2
  106. package/dist/preview-engine/{renderers-FC7G7KU7.mjs → renderers-2AKYMAIK.mjs} +1 -1
  107. package/dist/preview-engine/renderers-363CKEIG.mjs +1 -0
  108. package/dist/preview-engine/{renderers-EJGF3PYQ.mjs → renderers-36L24ZVS.mjs} +1 -1
  109. package/dist/preview-engine/renderers-3FMMVDMA.mjs +1 -0
  110. package/dist/preview-engine/{renderers-56TGEFDK.mjs → renderers-44AANAXR.mjs} +1 -1
  111. package/dist/preview-engine/renderers-4UUU62VV.mjs +1 -0
  112. package/dist/preview-engine/renderers-4ZTZFSAR.mjs +1 -0
  113. package/dist/preview-engine/{renderers-PYDOSDEY.mjs → renderers-5ZSB75GY.mjs} +1 -1
  114. package/dist/preview-engine/renderers-6KDD75BM.mjs +1 -0
  115. package/dist/preview-engine/renderers-7BJRD4G2.mjs +1 -0
  116. package/dist/preview-engine/{renderers-HBIBRZD7.mjs → renderers-AIIHGDJM.mjs} +1 -1
  117. package/dist/preview-engine/{renderers-P2FTCDZ7.mjs → renderers-AU746ORP.mjs} +1 -1
  118. package/dist/preview-engine/renderers-BIF2BETK.mjs +1 -0
  119. package/dist/preview-engine/{renderers-FD3ZT73R.mjs → renderers-BTQCHVHV.mjs} +1 -1
  120. package/dist/preview-engine/{renderers-HMNCIEU3.mjs → renderers-CFHBOAZG.mjs} +1 -1
  121. package/dist/preview-engine/renderers-CU5RW5UA.mjs +1 -0
  122. package/dist/preview-engine/renderers-DK5OBTKE.mjs +1 -0
  123. package/dist/preview-engine/renderers-EAKCDGTY.mjs +1 -0
  124. package/dist/preview-engine/{renderers-FYI6QNUH.mjs → renderers-EGBGC7MU.mjs} +1 -1
  125. package/dist/preview-engine/renderers-EVXCU7G7.mjs +1 -0
  126. package/dist/preview-engine/renderers-EXEYEH3F.mjs +1 -0
  127. package/dist/preview-engine/{renderers-RDHHVXRE.mjs → renderers-EXJDPS3T.mjs} +1 -1
  128. package/dist/preview-engine/renderers-F3WALPWI.mjs +1 -0
  129. package/dist/preview-engine/{renderers-4RVSLTCX.mjs → renderers-FS3EOB4J.mjs} +1 -1
  130. package/dist/preview-engine/{renderers-C3YXNKNM.mjs → renderers-GUL2MXDD.mjs} +1 -1
  131. package/dist/preview-engine/{renderers-EQDINUMT.mjs → renderers-H4HC44B5.mjs} +1 -1
  132. package/dist/preview-engine/renderers-H6565HO4.mjs +1 -0
  133. package/dist/preview-engine/renderers-HT5V6OZ2.mjs +1 -0
  134. package/dist/preview-engine/renderers-HXMOARWO.mjs +1 -0
  135. package/dist/preview-engine/renderers-HZ2Q7BGK.mjs +1 -0
  136. package/dist/preview-engine/renderers-I4N2K2KW.mjs +1 -0
  137. package/dist/preview-engine/renderers-I5J7U6CB.mjs +1 -0
  138. package/dist/preview-engine/renderers-IZV6QXR5.mjs +1 -0
  139. package/dist/preview-engine/renderers-JWGAPHWX.mjs +1 -0
  140. package/dist/preview-engine/renderers-KNDSVQTY.mjs +1 -0
  141. package/dist/preview-engine/renderers-KNDUOO6M.mjs +1 -0
  142. package/dist/preview-engine/renderers-KQAO3QEI.mjs +1 -0
  143. package/dist/preview-engine/{renderers-7SW2AHM2.mjs → renderers-LCSQLXRD.mjs} +1 -1
  144. package/dist/preview-engine/renderers-M34LOEHC.mjs +1 -0
  145. package/dist/preview-engine/renderers-ML6GNCWB.mjs +1 -0
  146. package/dist/preview-engine/renderers-NARG274F.mjs +1 -0
  147. package/dist/preview-engine/renderers-NCFPOSWR.mjs +1 -0
  148. package/dist/preview-engine/{renderers-ZAMSS7QN.mjs → renderers-PCOTECQB.mjs} +1 -1
  149. package/dist/preview-engine/renderers-PG5JHI2S.mjs +1 -0
  150. package/dist/preview-engine/{renderers-LTV5RFDJ.mjs → renderers-Q7MNLQJF.mjs} +1 -1
  151. package/dist/preview-engine/{renderers-GHP7SL5M.mjs → renderers-QXVSJYZL.mjs} +1 -1
  152. package/dist/preview-engine/{renderers-H2UI7YEO.mjs → renderers-R3ERZ3ZY.mjs} +1 -1
  153. package/dist/preview-engine/renderers-RXQKV65L.mjs +1 -0
  154. package/dist/preview-engine/renderers-SA73GD2B.mjs +1 -0
  155. package/dist/preview-engine/renderers-SLIXUHNX.mjs +1 -0
  156. package/dist/preview-engine/renderers-T462JZNA.mjs +1 -0
  157. package/dist/preview-engine/{renderers-LV6LLULR.mjs → renderers-TH2XZAYW.mjs} +1 -1
  158. package/dist/preview-engine/{renderers-ART3EGSZ.mjs → renderers-UHZIERVH.mjs} +1 -1
  159. package/dist/preview-engine/renderers-V7CFVGYK.mjs +1 -0
  160. package/dist/preview-engine/renderers-VY5E7BPK.mjs +1 -0
  161. package/dist/preview-engine/{renderers-ZDMDDWLN.mjs → renderers-WKXGELRG.mjs} +1 -1
  162. package/dist/preview-engine/{renderers-GY4R467B.mjs → renderers-WLDIIFR5.mjs} +1 -1
  163. package/dist/preview-engine/{renderers-NTKSN32T.mjs → renderers-WM6WBRH6.mjs} +1 -1
  164. package/dist/preview-engine/renderers-WT5FQZM7.mjs +228 -0
  165. package/dist/preview-engine/{renderers-YK74777T.mjs → renderers-WTKRLNNR.mjs} +1 -1
  166. package/dist/preview-engine/{renderers-BWRNCXR6.mjs → renderers-X6GKEVP7.mjs} +1 -1
  167. package/dist/preview-engine/renderers-Y47N5EYR.mjs +1 -0
  168. package/dist/preview-engine/renderers-Y4CUVZYI.mjs +1 -0
  169. package/dist/preview-engine/renderers-Y6YC7ZAK.mjs +1 -0
  170. package/dist/preview-engine/renderers-Y6ZYUAQG.mjs +1 -0
  171. package/dist/preview-engine/{renderers-YBTWN76S.mjs → renderers-YRWXYT5A.mjs} +1 -1
  172. package/dist/preview-engine/{renderers-SY435YU3.mjs → renderers-YWC4MXPG.mjs} +1 -1
  173. package/dist/preview-engine/{renderers-7GMW52G3.mjs → renderers-ZWNPYZN6.mjs} +1 -1
  174. package/dist/preview-engine/signals.mjs +1 -1
  175. package/dist/{program-B6YvXPhj.mjs → program-KPBfq9tw.mjs} +84 -15
  176. package/dist/program-KPBfq9tw.mjs.map +1 -0
  177. package/dist/registry/index.json +1 -1
  178. package/dist/registry/lower-third.json +1 -1
  179. package/dist/registry/text-reveal.json +2 -2
  180. package/dist/registry/title-card.json +1 -1
  181. package/dist/renderer/index.d.mts +2 -2
  182. package/dist/renderer/index.mjs +2 -2
  183. package/dist/{renderer-DFGSy_ay.mjs → renderer-1-FLx8kd.mjs} +3 -3
  184. package/dist/{renderer-DFGSy_ay.mjs.map → renderer-1-FLx8kd.mjs.map} +1 -1
  185. package/dist/{renderer-Ck74BZ_L.mjs → renderer-47d3etrX.mjs} +4 -4
  186. package/dist/{renderer-Ck74BZ_L.mjs.map → renderer-47d3etrX.mjs.map} +1 -1
  187. package/dist/{renderer-Cs8Od5S8.mjs → renderer-6GCG6JxD.mjs} +3 -3
  188. package/dist/{renderer-Cs8Od5S8.mjs.map → renderer-6GCG6JxD.mjs.map} +1 -1
  189. package/dist/{renderer-BLn9MrDC.mjs → renderer-8BIDdgjt.mjs} +3 -3
  190. package/dist/{renderer-BLn9MrDC.mjs.map → renderer-8BIDdgjt.mjs.map} +1 -1
  191. package/dist/renderer-B-5TlncB.mjs +5 -0
  192. package/dist/{renderer-CkbIz6M-.mjs → renderer-B1yzSbvC.mjs} +4 -4
  193. package/dist/{renderer-CkbIz6M-.mjs.map → renderer-B1yzSbvC.mjs.map} +1 -1
  194. package/dist/{renderer-BYNbtv_d.mjs → renderer-B2YiXpp-.mjs} +2 -2
  195. package/dist/{renderer-BYNbtv_d.mjs.map → renderer-B2YiXpp-.mjs.map} +1 -1
  196. package/dist/{renderer-DXfYdQ2o.mjs → renderer-B55ljMI_.mjs} +2 -2
  197. package/dist/{renderer-DXfYdQ2o.mjs.map → renderer-B55ljMI_.mjs.map} +1 -1
  198. package/dist/{renderer-CopRZnwp.mjs → renderer-B6Tg4UgH.mjs} +4 -4
  199. package/dist/{renderer-CopRZnwp.mjs.map → renderer-B6Tg4UgH.mjs.map} +1 -1
  200. package/dist/{renderer-CuQceSLi.mjs → renderer-BFnf-8Yt.mjs} +3 -3
  201. package/dist/{renderer-CuQceSLi.mjs.map → renderer-BFnf-8Yt.mjs.map} +1 -1
  202. package/dist/{renderer-BmarvBo8.mjs → renderer-BGHHoPiD.mjs} +2 -2
  203. package/dist/{renderer-CLvXiFPk.mjs → renderer-BHUjPi24.mjs} +2 -2
  204. package/dist/{renderer-CLvXiFPk.mjs.map → renderer-BHUjPi24.mjs.map} +1 -1
  205. package/dist/renderer-BHXtDg5_.mjs +3 -0
  206. package/dist/{renderer-CTQTbvWR.mjs → renderer-BIk67-jU.mjs} +2 -2
  207. package/dist/{renderer-CTQTbvWR.mjs.map → renderer-BIk67-jU.mjs.map} +1 -1
  208. package/dist/{renderer-BHjw4EdY.d.mts → renderer-BLEmr0Lt.d.mts} +2 -2
  209. package/dist/{renderer-BHjw4EdY.d.mts.map → renderer-BLEmr0Lt.d.mts.map} +1 -1
  210. package/dist/{renderer-BcH6-FsA.mjs → renderer-BLs5sDdk.mjs} +3 -3
  211. package/dist/{renderer-BcH6-FsA.mjs.map → renderer-BLs5sDdk.mjs.map} +1 -1
  212. package/dist/renderer-BPd3gvEt.mjs +5 -0
  213. package/dist/{renderer-Hs9t2qY-.mjs → renderer-BXul0Wy6.mjs} +3 -3
  214. package/dist/{renderer-Hs9t2qY-.mjs.map → renderer-BXul0Wy6.mjs.map} +1 -1
  215. package/dist/{renderer-BX2tt7zA.mjs → renderer-B_1SLBPa.mjs} +3 -3
  216. package/dist/{renderer-BX2tt7zA.mjs.map → renderer-B_1SLBPa.mjs.map} +1 -1
  217. package/dist/renderer-B_ep98BH.mjs +5 -0
  218. package/dist/renderer-Ba_KUbKW.mjs +5 -0
  219. package/dist/{renderer-v779MqRx.mjs → renderer-BbyNUjE_.mjs} +3 -3
  220. package/dist/{renderer-v779MqRx.mjs.map → renderer-BbyNUjE_.mjs.map} +1 -1
  221. package/dist/{renderer-rLhze-dj.mjs → renderer-BcVr_cIk.mjs} +2 -2
  222. package/dist/{renderer-rLhze-dj.mjs.map → renderer-BcVr_cIk.mjs.map} +1 -1
  223. package/dist/renderer-BeL2hstU.mjs +5 -0
  224. package/dist/renderer-Bj81osPQ.mjs +5 -0
  225. package/dist/{renderer-Cy_rrWEC.mjs → renderer-BjL7sKGU.mjs} +3 -3
  226. package/dist/{renderer-Cy_rrWEC.mjs.map → renderer-BjL7sKGU.mjs.map} +1 -1
  227. package/dist/{renderer-BZ9zGp0Z.mjs → renderer-BjNcuJ4H.mjs} +3 -3
  228. package/dist/{renderer-BZ9zGp0Z.mjs.map → renderer-BjNcuJ4H.mjs.map} +1 -1
  229. package/dist/{renderer-Da5Xcwx5.mjs → renderer-Br8aDmf0.mjs} +2 -2
  230. package/dist/renderer-BvZQngSm.mjs +5 -0
  231. package/dist/renderer-BxgN8oXx.mjs +5 -0
  232. package/dist/{renderer-CptS_UFe.mjs → renderer-ByOvGGzp.mjs} +3 -3
  233. package/dist/{renderer-CptS_UFe.mjs.map → renderer-ByOvGGzp.mjs.map} +1 -1
  234. package/dist/{renderer-C3gJco03.mjs → renderer-C11qLlrz.mjs} +3 -3
  235. package/dist/{renderer-C3gJco03.mjs.map → renderer-C11qLlrz.mjs.map} +1 -1
  236. package/dist/{renderer-D4KKtfTl.mjs → renderer-C5dyPQjG.mjs} +3 -3
  237. package/dist/{renderer-D4KKtfTl.mjs.map → renderer-C5dyPQjG.mjs.map} +1 -1
  238. package/dist/renderer-C5jDrTBc.mjs +5 -0
  239. package/dist/{renderer-Dk88a53K.mjs → renderer-C6TbU8U5.mjs} +3 -3
  240. package/dist/{renderer-Dk88a53K.mjs.map → renderer-C6TbU8U5.mjs.map} +1 -1
  241. package/dist/{renderer-DKkXBsVx.mjs → renderer-C9bcEaBE.mjs} +3 -3
  242. package/dist/{renderer-DKkXBsVx.mjs.map → renderer-C9bcEaBE.mjs.map} +1 -1
  243. package/dist/{renderer-COAYUhv2.mjs → renderer-CAH00Lub.mjs} +2 -2
  244. package/dist/{renderer-GNgSEbBu.mjs → renderer-CAhsBEpU.mjs} +2 -2
  245. package/dist/{renderer-GNgSEbBu.mjs.map → renderer-CAhsBEpU.mjs.map} +1 -1
  246. package/dist/renderer-CBK4M82Y.mjs +5 -0
  247. package/dist/{renderer-876_ArdD.mjs → renderer-CCH0gSF7.mjs} +3 -3
  248. package/dist/{renderer-876_ArdD.mjs.map → renderer-CCH0gSF7.mjs.map} +1 -1
  249. package/dist/{renderer-DNNxsVQh.mjs → renderer-CCbOp0BM.mjs} +3 -3
  250. package/dist/{renderer-DNNxsVQh.mjs.map → renderer-CCbOp0BM.mjs.map} +1 -1
  251. package/dist/{renderer-UPRkHFPp.mjs → renderer-CEb5GjcU.mjs} +3 -3
  252. package/dist/{renderer-UPRkHFPp.mjs.map → renderer-CEb5GjcU.mjs.map} +1 -1
  253. package/dist/{renderer-Cwhm9oQe.mjs → renderer-CIL9zh-a.mjs} +3 -3
  254. package/dist/{renderer-Cwhm9oQe.mjs.map → renderer-CIL9zh-a.mjs.map} +1 -1
  255. package/dist/{renderer-URxsYx_I.mjs → renderer-CIbXIFOb.mjs} +4 -4
  256. package/dist/{renderer-URxsYx_I.mjs.map → renderer-CIbXIFOb.mjs.map} +1 -1
  257. package/dist/renderer-CLHtCctc.mjs +5 -0
  258. package/dist/{renderer-Q6A9dB56.mjs → renderer-CLX33fIK.mjs} +3 -3
  259. package/dist/{renderer-Q6A9dB56.mjs.map → renderer-CLX33fIK.mjs.map} +1 -1
  260. package/dist/{renderer-DJJXvO27.mjs → renderer-CLXpWDqx.mjs} +2 -2
  261. package/dist/{renderer-DJJXvO27.mjs.map → renderer-CLXpWDqx.mjs.map} +1 -1
  262. package/dist/renderer-CLin7MNN.mjs +5 -0
  263. package/dist/{renderer-BBnurLTw.mjs → renderer-CLypsmiH.mjs} +3 -3
  264. package/dist/{renderer-BBnurLTw.mjs.map → renderer-CLypsmiH.mjs.map} +1 -1
  265. package/dist/renderer-CN7TypOB.mjs +5 -0
  266. package/dist/renderer-CV5Jfwq7.mjs +5 -0
  267. package/dist/renderer-Ca5E46WK.mjs +5 -0
  268. package/dist/renderer-CdbOtoOU.mjs +5 -0
  269. package/dist/renderer-CeD_bqWj.mjs +5 -0
  270. package/dist/{renderer-nIKvk_ij.mjs → renderer-CfEuoZ7b.mjs} +3 -3
  271. package/dist/{renderer-nIKvk_ij.mjs.map → renderer-CfEuoZ7b.mjs.map} +1 -1
  272. package/dist/renderer-CfzNNUOd.mjs +5 -0
  273. package/dist/{renderer-I-KtRtuL.mjs → renderer-Cg3h0Mz9.mjs} +3 -3
  274. package/dist/{renderer-I-KtRtuL.mjs.map → renderer-Cg3h0Mz9.mjs.map} +1 -1
  275. package/dist/renderer-Cl8TmdU8.mjs +5 -0
  276. package/dist/{renderer-CW05KUXE.mjs → renderer-ClHqvIps.mjs} +10 -10
  277. package/dist/renderer-ClHqvIps.mjs.map +1 -0
  278. package/dist/renderer-CosBP_IM.mjs +5 -0
  279. package/dist/renderer-CpwVs5Fh.mjs +5 -0
  280. package/dist/renderer-Cq7baxNb.mjs +5 -0
  281. package/dist/{renderer-PTV0M2HP.mjs → renderer-CqMz_iXy.mjs} +2 -2
  282. package/dist/{renderer-PTV0M2HP.mjs.map → renderer-CqMz_iXy.mjs.map} +1 -1
  283. package/dist/{renderer-DGUL7JlO.mjs → renderer-CqSmfrE1.mjs} +3 -3
  284. package/dist/{renderer-DGUL7JlO.mjs.map → renderer-CqSmfrE1.mjs.map} +1 -1
  285. package/dist/{renderer-D1fjdDVu.d.mts → renderer-CrhJJKFY.d.mts} +5 -3
  286. package/dist/renderer-CrhJJKFY.d.mts.map +1 -0
  287. package/dist/{renderer-sQjiRkiF.mjs → renderer-CxxwhUwy.mjs} +3 -3
  288. package/dist/{renderer-sQjiRkiF.mjs.map → renderer-CxxwhUwy.mjs.map} +1 -1
  289. package/dist/{renderer-BsSZdDHQ.mjs → renderer-D24aiXmB.mjs} +3 -3
  290. package/dist/{renderer-BsSZdDHQ.mjs.map → renderer-D24aiXmB.mjs.map} +1 -1
  291. package/dist/renderer-D6GkxwAx.mjs +5 -0
  292. package/dist/renderer-D7SfGdzX.mjs +5 -0
  293. package/dist/renderer-D7wt09_l.mjs +5 -0
  294. package/dist/{renderer-BHJzeFp9.mjs → renderer-DBslE7fc.mjs} +2 -2
  295. package/dist/{renderer-BHJzeFp9.mjs.map → renderer-DBslE7fc.mjs.map} +1 -1
  296. package/dist/{renderer-DfQWeysg.mjs → renderer-DE3Ki96C.mjs} +3 -3
  297. package/dist/{renderer-DfQWeysg.mjs.map → renderer-DE3Ki96C.mjs.map} +1 -1
  298. package/dist/{renderer-C6YcfNbV.mjs → renderer-DJCqc98W.mjs} +3 -3
  299. package/dist/{renderer-C6YcfNbV.mjs.map → renderer-DJCqc98W.mjs.map} +1 -1
  300. package/dist/{renderer-CdxHmvvf.mjs → renderer-DODOyrty.mjs} +3 -3
  301. package/dist/{renderer-CdxHmvvf.mjs.map → renderer-DODOyrty.mjs.map} +1 -1
  302. package/dist/{renderer-B51lS0Zb.mjs → renderer-DRYxcfgi.mjs} +2 -2
  303. package/dist/renderer-DSuDMYqY.mjs +5 -0
  304. package/dist/{renderer-BfYAlY63.mjs → renderer-DYreml_A.mjs} +3 -3
  305. package/dist/{renderer-BfYAlY63.mjs.map → renderer-DYreml_A.mjs.map} +1 -1
  306. package/dist/{renderer-Byp6c5Y4.mjs → renderer-DZJnNISO.mjs} +2 -2
  307. package/dist/{renderer-Byp6c5Y4.mjs.map → renderer-DZJnNISO.mjs.map} +1 -1
  308. package/dist/renderer-DaIstCIs.mjs +5 -0
  309. package/dist/renderer-DbOD3Nc0.mjs +5 -0
  310. package/dist/{renderer-Bpm12fcQ.mjs → renderer-DbenSRjl.mjs} +3 -3
  311. package/dist/{renderer-Bpm12fcQ.mjs.map → renderer-DbenSRjl.mjs.map} +1 -1
  312. package/dist/{renderer-56T9Wf1N.mjs → renderer-DcXxkxds.mjs} +75 -72
  313. package/dist/renderer-DcXxkxds.mjs.map +1 -0
  314. package/dist/renderer-DdRCA1bn.mjs +6 -0
  315. package/dist/{renderer-15a6H6Yg.mjs → renderer-DdUtL-qF.mjs} +3 -3
  316. package/dist/{renderer-15a6H6Yg.mjs.map → renderer-DdUtL-qF.mjs.map} +1 -1
  317. package/dist/renderer-DfO37haf.mjs +5 -0
  318. package/dist/renderer-DjZwzxZ7.mjs +5 -0
  319. package/dist/renderer-DnAvySNy.mjs +5 -0
  320. package/dist/{renderer-IP6Iy2RQ.mjs → renderer-DnbY04Qk.mjs} +3 -3
  321. package/dist/{renderer-IP6Iy2RQ.mjs.map → renderer-DnbY04Qk.mjs.map} +1 -1
  322. package/dist/renderer-DnvEPm5E.mjs +5 -0
  323. package/dist/{renderer-HW-6FmmO.mjs → renderer-Do9mW_-B.mjs} +3 -3
  324. package/dist/{renderer-HW-6FmmO.mjs.map → renderer-Do9mW_-B.mjs.map} +1 -1
  325. package/dist/{renderer-DlboTFM8.mjs → renderer-Dqg8qxjq.mjs} +3 -3
  326. package/dist/{renderer-DlboTFM8.mjs.map → renderer-Dqg8qxjq.mjs.map} +1 -1
  327. package/dist/{renderer-BfuMCx2c.mjs → renderer-DvkRbmb2.mjs} +3 -3
  328. package/dist/{renderer-BfuMCx2c.mjs.map → renderer-DvkRbmb2.mjs.map} +1 -1
  329. package/dist/renderer-DwNpKnWf.mjs +5 -0
  330. package/dist/{renderer-Djpx4utT.mjs → renderer-Dw_xy3zx.mjs} +3 -3
  331. package/dist/{renderer-Djpx4utT.mjs.map → renderer-Dw_xy3zx.mjs.map} +1 -1
  332. package/dist/renderer-Dx3Dghus.mjs +5 -0
  333. package/dist/{renderer-SPq9BbnG.mjs → renderer-DyrNti45.mjs} +3 -3
  334. package/dist/{renderer-SPq9BbnG.mjs.map → renderer-DyrNti45.mjs.map} +1 -1
  335. package/dist/renderer-KvaoEwIk.mjs +5 -0
  336. package/dist/{renderer-BxtbwOSp.mjs → renderer-SwUFJ4aA.mjs} +3 -3
  337. package/dist/{renderer-BxtbwOSp.mjs.map → renderer-SwUFJ4aA.mjs.map} +1 -1
  338. package/dist/{renderer-DF_TswHB.mjs → renderer-XEoQnDs5.mjs} +3 -3
  339. package/dist/{renderer-DF_TswHB.mjs.map → renderer-XEoQnDs5.mjs.map} +1 -1
  340. package/dist/{renderer-QYjSQL80.mjs → renderer-Xw9Zn3pD.mjs} +2 -2
  341. package/dist/{renderer-QYjSQL80.mjs.map → renderer-Xw9Zn3pD.mjs.map} +1 -1
  342. package/dist/{renderer-XU08U1If.mjs → renderer-ZWIDTOLV.mjs} +2 -2
  343. package/dist/{renderer-XU08U1If.mjs.map → renderer-ZWIDTOLV.mjs.map} +1 -1
  344. package/dist/{renderer-8ZxKRprN.mjs → renderer-bGhRdKB7.mjs} +2 -2
  345. package/dist/{renderer-8ZxKRprN.mjs.map → renderer-bGhRdKB7.mjs.map} +1 -1
  346. package/dist/{renderer-DUx7rcc5.mjs → renderer-d4weUlVq.mjs} +2 -2
  347. package/dist/{renderer-DUx7rcc5.mjs.map → renderer-d4weUlVq.mjs.map} +1 -1
  348. package/dist/{renderer-Bf0Bhqot.mjs → renderer-g7CMgD1v.mjs} +3 -3
  349. package/dist/{renderer-Bf0Bhqot.mjs.map → renderer-g7CMgD1v.mjs.map} +1 -1
  350. package/dist/{renderer-BUj6OsWX.mjs → renderer-gjLFqdv-.mjs} +4 -4
  351. package/dist/{renderer-BUj6OsWX.mjs.map → renderer-gjLFqdv-.mjs.map} +1 -1
  352. package/dist/{renderer-DLpjygMO.mjs → renderer-gv0u9XmU.mjs} +3 -3
  353. package/dist/{renderer-DLpjygMO.mjs.map → renderer-gv0u9XmU.mjs.map} +1 -1
  354. package/dist/{renderer-KS_JYan2.mjs → renderer-jJWwrha1.mjs} +3 -3
  355. package/dist/{renderer-KS_JYan2.mjs.map → renderer-jJWwrha1.mjs.map} +1 -1
  356. package/dist/{renderer-C7BxBoHC.mjs → renderer-kl_pAczD.mjs} +3 -3
  357. package/dist/{renderer-C7BxBoHC.mjs.map → renderer-kl_pAczD.mjs.map} +1 -1
  358. package/dist/{renderer-Bxs9zUIN.mjs → renderer-lrKwPhZi.mjs} +2 -2
  359. package/dist/{renderer-Bxs9zUIN.mjs.map → renderer-lrKwPhZi.mjs.map} +1 -1
  360. package/dist/{renderer-DJy8V_nb.mjs → renderer-pnYj1REL.mjs} +3 -3
  361. package/dist/{renderer-DJy8V_nb.mjs.map → renderer-pnYj1REL.mjs.map} +1 -1
  362. package/dist/{renderers-CP8CFWDs-CPfe6IN0.mjs → renderers-CP8CFWDs-CDikhBRO.mjs} +3 -3
  363. package/dist/{renderers-CP8CFWDs-CPfe6IN0.mjs.map → renderers-CP8CFWDs-CDikhBRO.mjs.map} +1 -1
  364. package/dist/signals/index.d.mts +5 -5
  365. package/dist/signals/index.mjs +6 -6
  366. package/dist/{signals-BRgYyspQ.mjs → signals-BeAWA_1Y.mjs} +3 -3
  367. package/dist/{signals-BRgYyspQ.mjs.map → signals-BeAWA_1Y.mjs.map} +1 -1
  368. package/dist/{src-Be7rjknf.mjs → src-LYcH_X8o.mjs} +233 -27
  369. package/dist/src-LYcH_X8o.mjs.map +1 -0
  370. package/package.json +58 -58
  371. package/dist/dist-CL5JOMSp.mjs.map +0 -1
  372. package/dist/dist-CSU_2yUb.mjs.map +0 -1
  373. package/dist/index-BCzXnNpb.d.mts.map +0 -1
  374. package/dist/index-C541Ol1N.d.mts.map +0 -1
  375. package/dist/index-kj5uSzaI.d.mts.map +0 -1
  376. package/dist/preview-engine/chunk-3SR6BI4B.mjs +0 -1
  377. package/dist/preview-engine/chunk-ALSOO22Q.mjs +0 -1
  378. package/dist/preview-engine/chunk-NKGXINCU.mjs +0 -1
  379. package/dist/preview-engine/chunk-PJMX2GFY.mjs +0 -1
  380. package/dist/preview-engine/chunk-SIXIF5QZ.mjs +0 -3
  381. package/dist/preview-engine/chunk-TXX2POD2.mjs +0 -1974
  382. package/dist/preview-engine/renderers-3HFRWF2G.mjs +0 -1
  383. package/dist/preview-engine/renderers-4CRXZJ5G.mjs +0 -1
  384. package/dist/preview-engine/renderers-5QF4OLFQ.mjs +0 -1
  385. package/dist/preview-engine/renderers-5SOW6OVE.mjs +0 -1
  386. package/dist/preview-engine/renderers-6M2HPY2J.mjs +0 -1
  387. package/dist/preview-engine/renderers-7HT5NW7W.mjs +0 -1
  388. package/dist/preview-engine/renderers-ATTGUTYY.mjs +0 -1
  389. package/dist/preview-engine/renderers-AYWCRBQC.mjs +0 -1
  390. package/dist/preview-engine/renderers-BA6ZCPI5.mjs +0 -1
  391. package/dist/preview-engine/renderers-BAS7RXTC.mjs +0 -1
  392. package/dist/preview-engine/renderers-CZTCW4FC.mjs +0 -1
  393. package/dist/preview-engine/renderers-D2XEQ2YY.mjs +0 -1
  394. package/dist/preview-engine/renderers-DFIJYBW2.mjs +0 -1
  395. package/dist/preview-engine/renderers-EJN6M6DO.mjs +0 -1
  396. package/dist/preview-engine/renderers-EK3HQUUF.mjs +0 -1
  397. package/dist/preview-engine/renderers-G34C5J27.mjs +0 -1
  398. package/dist/preview-engine/renderers-GKVTNDVH.mjs +0 -1
  399. package/dist/preview-engine/renderers-HZBYQKIQ.mjs +0 -1
  400. package/dist/preview-engine/renderers-IK7ZJJKJ.mjs +0 -1
  401. package/dist/preview-engine/renderers-ISASPH6T.mjs +0 -1
  402. package/dist/preview-engine/renderers-IW5MWDBI.mjs +0 -1
  403. package/dist/preview-engine/renderers-JBRPKCKF.mjs +0 -228
  404. package/dist/preview-engine/renderers-K2PI4WJS.mjs +0 -1
  405. package/dist/preview-engine/renderers-KESHVFL2.mjs +0 -1
  406. package/dist/preview-engine/renderers-KTZZVAB2.mjs +0 -1
  407. package/dist/preview-engine/renderers-KY5CJEOV.mjs +0 -1
  408. package/dist/preview-engine/renderers-M5W6SUQD.mjs +0 -1
  409. package/dist/preview-engine/renderers-MEM3REMI.mjs +0 -1
  410. package/dist/preview-engine/renderers-O5XMWFPY.mjs +0 -1
  411. package/dist/preview-engine/renderers-QJA35PKC.mjs +0 -1
  412. package/dist/preview-engine/renderers-TJIFTQHV.mjs +0 -1
  413. package/dist/preview-engine/renderers-TN4XN436.mjs +0 -1
  414. package/dist/preview-engine/renderers-UDYLCYCB.mjs +0 -1
  415. package/dist/preview-engine/renderers-WZ7SFIBZ.mjs +0 -1
  416. package/dist/preview-engine/renderers-X6QNDC6R.mjs +0 -1
  417. package/dist/preview-engine/renderers-X6RNTJOV.mjs +0 -1
  418. package/dist/preview-engine/renderers-Y3N7236P.mjs +0 -1
  419. package/dist/preview-engine/renderers-YP3ASXIJ.mjs +0 -1
  420. package/dist/preview-engine/renderers-YVJAG3PD.mjs +0 -1
  421. package/dist/preview-engine/renderers-ZPPZNMKJ.mjs +0 -1
  422. package/dist/program-B6YvXPhj.mjs.map +0 -1
  423. package/dist/renderer-1qAST5qk.mjs +0 -5
  424. package/dist/renderer-2dntY9lQ.mjs +0 -5
  425. package/dist/renderer-56T9Wf1N.mjs.map +0 -1
  426. package/dist/renderer-83Knj3DI.mjs +0 -5
  427. package/dist/renderer-B2GWXOwP.mjs +0 -5
  428. package/dist/renderer-B3LlOjNo.mjs +0 -5
  429. package/dist/renderer-B5cPLblQ.mjs +0 -5
  430. package/dist/renderer-B7uorwdR.mjs +0 -5
  431. package/dist/renderer-BJ6LDZlX.mjs +0 -5
  432. package/dist/renderer-BaQC4ylR.mjs +0 -5
  433. package/dist/renderer-BfQzj_uW.mjs +0 -5
  434. package/dist/renderer-Bl9uy1ra.mjs +0 -6
  435. package/dist/renderer-Bu4FyXDo.mjs +0 -5
  436. package/dist/renderer-BxbJwS3T.mjs +0 -5
  437. package/dist/renderer-C51hhQ7B.mjs +0 -5
  438. package/dist/renderer-C8ZShnSH.mjs +0 -5
  439. package/dist/renderer-CQh1RgN8.mjs +0 -5
  440. package/dist/renderer-CRYaMhGd.mjs +0 -5
  441. package/dist/renderer-CULThR_r.mjs +0 -5
  442. package/dist/renderer-CW05KUXE.mjs.map +0 -1
  443. package/dist/renderer-C_KDGeMJ.mjs +0 -5
  444. package/dist/renderer-Ce4Gam_S.mjs +0 -5
  445. package/dist/renderer-CkZ6xcN6.mjs +0 -5
  446. package/dist/renderer-Co4C29rw.mjs +0 -5
  447. package/dist/renderer-CyReVcsb.mjs +0 -3
  448. package/dist/renderer-CzgPat6y.mjs +0 -5
  449. package/dist/renderer-D-pFBDki.mjs +0 -5
  450. package/dist/renderer-D1fjdDVu.d.mts.map +0 -1
  451. package/dist/renderer-DELCePyB.mjs +0 -5
  452. package/dist/renderer-DWijRKGh.mjs +0 -5
  453. package/dist/renderer-Di-PH-vG.mjs +0 -5
  454. package/dist/renderer-Dn9CR9KL.mjs +0 -5
  455. package/dist/renderer-ICmKc1Bq.mjs +0 -5
  456. package/dist/renderer-IR3rE4TW.mjs +0 -5
  457. package/dist/renderer-Qyc4xLZY.mjs +0 -5
  458. package/dist/renderer-Riuen1UO.mjs +0 -5
  459. package/dist/renderer-YKJt5oPu.mjs +0 -5
  460. package/dist/renderer-asS1sOXb.mjs +0 -5
  461. package/dist/renderer-mAQErqBN.mjs +0 -5
  462. package/dist/renderer-pZazoCK-.mjs +0 -5
  463. package/dist/src-Be7rjknf.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"effects-BvloJaPQ.mjs","names":[],"sources":["../src/effects/with-defaults.ts","../src/effects/generated/meta.ts","../src/effects/generated/classes.ts","../src/effects/custom/blur.ts","../src/effects/generated/registry.ts","../src/effects/classes.ts"],"sourcesContent":["import { isSignal } from \"@framefields/core\";\n\n/** Literal metadata for one prop, emitted into `generated/meta.ts`. */\nexport interface PropMeta {\n\treadonly min?: number;\n\treadonly max?: number;\n\treadonly enum?: readonly (string | number | boolean)[];\n\t/** Members of a nested object prop. */\n\treadonly props?: EffectMeta;\n}\n\nexport type EffectMeta = Readonly<Record<string, PropMeta>>;\n\nfunction env(name: string): string | undefined {\n\treturn typeof process !== \"undefined\" ? process.env?.[name] : undefined;\n}\n\n/** Throw instead of warn. Recommended for agent harnesses and CI. */\nfunction isStrict(): boolean {\n\tconst flag = env(\"FRAMEFIELDS_STRICT_PROPS\");\n\treturn flag === \"1\" || flag === \"true\";\n}\n\nfunction checksEnabled(): boolean {\n\treturn isStrict() || env(\"NODE_ENV\") !== \"production\";\n}\n\nconst reported = new Set<string>();\n\nfunction report(message: string): void {\n\tif (isStrict()) throw new Error(message);\n\tif (reported.has(message)) return;\n\treported.add(message);\n\tconsole.warn(`[framefields] ${message}`);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\tif (typeof value !== \"object\" || value === null) return false;\n\tif (Array.isArray(value) || isSignal(value)) return false;\n\tconst proto = Object.getPrototypeOf(value);\n\treturn proto === Object.prototype || proto === null;\n}\n\n/** Levenshtein distance, for \"did you mean\" suggestions on small key sets. */\nfunction distance(a: string, b: string): number {\n\tconst row = Array.from({ length: b.length + 1 }, (_, i) => i);\n\tfor (let i = 1; i <= a.length; i++) {\n\t\tlet prev = row[0];\n\t\trow[0] = i;\n\t\tfor (let j = 1; j <= b.length; j++) {\n\t\t\tconst current = row[j];\n\t\t\trow[j] = Math.min(\n\t\t\t\trow[j] + 1,\n\t\t\t\trow[j - 1] + 1,\n\t\t\t\tprev + (a[i - 1] === b[j - 1] ? 0 : 1),\n\t\t\t);\n\t\t\tprev = current;\n\t\t}\n\t}\n\treturn row[b.length];\n}\n\nfunction suggest(key: string, known: readonly string[]): string {\n\tlet best: string | undefined;\n\tlet bestScore = Number.POSITIVE_INFINITY;\n\tconst lower = key.toLowerCase();\n\tfor (const candidate of known) {\n\t\tconst candidateLower = candidate.toLowerCase();\n\t\tconst score =\n\t\t\tcandidateLower.includes(lower) || lower.includes(candidateLower)\n\t\t\t\t? 1\n\t\t\t\t: distance(lower, candidateLower);\n\t\tif (score < bestScore) {\n\t\t\tbestScore = score;\n\t\t\tbest = candidate;\n\t\t}\n\t}\n\tconst close = best && bestScore <= Math.max(2, Math.ceil(key.length / 2));\n\treturn close\n\t\t? ` Did you mean \"${best}\"?`\n\t\t: ` Known props: ${known.join(\", \")}.`;\n}\n\nfunction checkValue(path: string, value: unknown, meta: PropMeta): void {\n\tif (typeof value === \"number\") {\n\t\tconst { min, max } = meta;\n\t\tconst below = min !== undefined && value < min;\n\t\tconst above = max !== undefined && value > max;\n\t\tif (below || above || Number.isNaN(value)) {\n\t\t\tconst range =\n\t\t\t\tmin !== undefined && max !== undefined\n\t\t\t\t\t? `${min} to ${max}`\n\t\t\t\t\t: min !== undefined\n\t\t\t\t\t\t? `≥ ${min}`\n\t\t\t\t\t\t: `≤ ${max}`;\n\t\t\treport(\n\t\t\t\tNumber.isNaN(value)\n\t\t\t\t\t? `${path} is NaN`\n\t\t\t\t\t: `${path} = ${value} is outside ${range}`,\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\tif (\n\t\tmeta.enum &&\n\t\t(typeof value === \"string\" || typeof value === \"boolean\") &&\n\t\t!meta.enum.includes(value)\n\t) {\n\t\treport(\n\t\t\t`${path} = ${JSON.stringify(value)} is not one of ${meta.enum\n\t\t\t\t.map((v) => JSON.stringify(v))\n\t\t\t\t.join(\", \")}`,\n\t\t);\n\t}\n}\n\nfunction checkProps(\n\tpath: string,\n\tconfig: Record<string, unknown>,\n\tmeta: EffectMeta,\n): void {\n\tconst known = Object.keys(meta);\n\tfor (const [key, value] of Object.entries(config)) {\n\t\tif (value === undefined) continue;\n\t\tconst propMeta = meta[key];\n\t\tif (!propMeta) {\n\t\t\treport(`${path}: unknown prop \"${key}\".${suggest(key, known)}`);\n\t\t\tcontinue;\n\t\t}\n\t\t// Signals and frame functions are sampled per frame; only static values\n\t\t// can be checked here.\n\t\tif (isSignal(value) || typeof value === \"function\") continue;\n\t\tif (propMeta.props && isPlainObject(value)) {\n\t\t\tcheckProps(`${path}.${key}`, value, propMeta.props);\n\t\t} else {\n\t\t\tcheckValue(`${path}.${key}`, value, propMeta);\n\t\t}\n\t}\n}\n\nfunction cloneDefault<T>(value: T): T {\n\treturn typeof value === \"object\" && value !== null\n\t\t? structuredClone(value)\n\t\t: value;\n}\n\n/**\n * Builds the initial config of a generated effect class.\n *\n * - `undefined` entries in `config` keep the default instead of overwriting it.\n * - When both the default and the supplied value are plain objects, they are\n * merged one level deep, so `new ColorBalance({ shadows: { cyanRed: 10 } })`\n * keeps the other two channels at their defaults.\n * - Object defaults are cloned per instance.\n * - Outside production, unknown props and out-of-range static values are\n * reported: a `console.warn` once per message, or a thrown `Error` when\n * `FRAMEFIELDS_STRICT_PROPS=1`. Unknown props are still passed through.\n */\nexport function withDefaults<T extends object>(\n\top: string,\n\tdefaults: Readonly<Partial<T>>,\n\tconfig: T,\n\tmeta: EffectMeta,\n): T {\n\tconst supplied = config as Record<string, unknown>;\n\tif (checksEnabled()) checkProps(op, supplied, meta);\n\n\tconst result: Record<string, unknown> = {};\n\tfor (const [key, value] of Object.entries(defaults)) {\n\t\tresult[key] = cloneDefault(value);\n\t}\n\tfor (const [key, value] of Object.entries(supplied)) {\n\t\tif (value === undefined) continue;\n\t\tconst base = result[key];\n\t\tresult[key] =\n\t\t\tisPlainObject(base) && isPlainObject(value)\n\t\t\t\t? {\n\t\t\t\t\t\t...base,\n\t\t\t\t\t\t...Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries(value).filter(([, v]) => v !== undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t}\n\t\t\t\t: value;\n\t}\n\treturn result as T;\n}\n","// @generated by scripts/generate-effects.mts — do not edit.\n// Source of truth: nodes/*/package.json (`framefields`) and nodes/*/src/shared/config.ts.\n// Regenerate with `pnpm run generate:effects`.\n\nimport type { EffectMeta } from \"../with-defaults.js\";\n\n/** Ranges and allowed values per effect prop, used by `withDefaults()` checks. */\nexport const effectMeta = {\n\tAscii: {\n\t\tcellSize: {\n\t\t\tmin: 4,\n\t\t\tmax: 64,\n\t\t},\n\t\tcolorMode: {\n\t\t\tenum: [\"mono\", \"source\", \"green\"],\n\t\t},\n\t\tfg: {},\n\t\tbg: {},\n\t\tcontrast: {\n\t\t\tmin: 0.5,\n\t\t\tmax: 3,\n\t\t},\n\t\tinvert: {},\n\t},\n\tAudioCompressor: {\n\t\tthreshold: {\n\t\t\tmin: -60,\n\t\t\tmax: 0,\n\t\t},\n\t\tratio: {\n\t\t\tmin: 1,\n\t\t\tmax: 100,\n\t\t},\n\t\tattack: {\n\t\t\tmin: 0.0001,\n\t\t\tmax: 1,\n\t\t},\n\t\trelease: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 5,\n\t\t},\n\t\tknee: {\n\t\t\tmin: 0,\n\t\t\tmax: 24,\n\t\t},\n\t\tmakeupGain: {\n\t\t\tmin: 0,\n\t\t\tmax: 24,\n\t\t},\n\t},\n\tAudioDelay: {\n\t\tdelayTime: {\n\t\t\tmin: 0.001,\n\t\t\tmax: 5,\n\t\t},\n\t\tfeedback: {\n\t\t\tmin: 0,\n\t\t\tmax: 0.95,\n\t\t},\n\t\twet: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tdry: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tpingPong: {},\n\t},\n\tAudioFade: {\n\t\tfadeInDuration: {\n\t\t\tmin: 0,\n\t\t\tmax: 60,\n\t\t},\n\t\tfadeOutDuration: {\n\t\t\tmin: 0,\n\t\t\tmax: 60,\n\t\t},\n\t\tfadeInCurve: {\n\t\t\tenum: [\"linear\", \"exponential\", \"scurve\"],\n\t\t},\n\t\tfadeOutCurve: {\n\t\t\tenum: [\"linear\", \"exponential\", \"scurve\"],\n\t\t},\n\t},\n\tAudioNoiseGate: {\n\t\tthreshold: {\n\t\t\tmin: -120,\n\t\t\tmax: 0,\n\t\t},\n\t\tattack: {\n\t\t\tmin: 0.0001,\n\t\t\tmax: 1,\n\t\t},\n\t\thold: {\n\t\t\tmin: 0.001,\n\t\t\tmax: 5,\n\t\t},\n\t\trelease: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 5,\n\t\t},\n\t\trange: {\n\t\t\tmin: -120,\n\t\t\tmax: 0,\n\t\t},\n\t},\n\tAudioParametricEq: {\n\t\ttype: {\n\t\t\tenum: [\"lowShelf\", \"highShelf\", \"peak\", \"lowPass\", \"highPass\", \"notch\"],\n\t\t},\n\t\tfrequency: {\n\t\t\tmin: 20,\n\t\t\tmax: 20000,\n\t\t},\n\t\tgain: {\n\t\t\tmin: -24,\n\t\t\tmax: 24,\n\t\t},\n\t\tq: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 10,\n\t\t},\n\t},\n\tAudioReverb: {\n\t\troomSize: {\n\t\t\tmin: 0,\n\t\t\tmax: 0.98,\n\t\t},\n\t\tdamping: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\twet: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tdry: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\twidth: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t},\n\tBlur: {\n\t\tblurType: {\n\t\t\tenum: [\n\t\t\t\t\"Gaussian\",\n\t\t\t\t\"Box\",\n\t\t\t\t\"Median\",\n\t\t\t\t\"Motion\",\n\t\t\t\t\"Bilateral\",\n\t\t\t\t\"Edge-preserving\",\n\t\t\t\t\"Radial\",\n\t\t\t\t\"Zoom\",\n\t\t\t],\n\t\t},\n\t\tstrength: {\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t},\n\t\tangle: {\n\t\t\tmin: 0,\n\t\t\tmax: 360,\n\t\t},\n\t\tsigmaColor: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterX: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tpartialBlur: {},\n\t\tradius: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 1,\n\t\t},\n\t\tradiusY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tshape: {\n\t\t\tenum: [\"ellipse\", \"circle\", \"rect\"],\n\t\t},\n\t},\n\tCameraParallax3D: {\n\t\tmotionPreset: {\n\t\t\tenum: [\n\t\t\t\t\"Custom\",\n\t\t\t\t\"DollyZoom\",\n\t\t\t\t\"Orbit\",\n\t\t\t\t\"FlyThrough\",\n\t\t\t\t\"HandheldShake\",\n\t\t\t\t\"RackFocus\",\n\t\t\t],\n\t\t},\n\t\tpanX: {\n\t\t\tmin: -1,\n\t\t\tmax: 1,\n\t\t},\n\t\tpanY: {\n\t\t\tmin: -1,\n\t\t\tmax: 1,\n\t\t},\n\t\tdollyZ: {\n\t\t\tmin: -1,\n\t\t\tmax: 1,\n\t\t},\n\t\tfov: {\n\t\t\tmin: 15,\n\t\t\tmax: 120,\n\t\t},\n\t\tparallaxAmount: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t\tdofAperture: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tfocusPlane: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tedgeDilation: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tdepthInvert: {},\n\t},\n\tChannelMerger: {\n\t\tcolorSpace: {\n\t\t\tenum: [\"RGBA\", \"HSLA\", \"CMYK\", \"LAB\"],\n\t\t},\n\t\tdefaultChannel4: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t},\n\tChannelSplitter: {\n\t\tcolorSpace: {\n\t\t\tenum: [\"RGBA\", \"HSLA\", \"CMYK\", \"LAB\"],\n\t\t},\n\t},\n\tColorBalance: {\n\t\tshadows: {\n\t\t\tprops: {\n\t\t\t\tcyanRed: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tmagentaGreen: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tyellowBlue: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tmidtones: {\n\t\t\tprops: {\n\t\t\t\tcyanRed: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tmagentaGreen: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tyellowBlue: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\thighlights: {\n\t\t\tprops: {\n\t\t\t\tcyanRed: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tmagentaGreen: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tyellowBlue: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tpreserveLuminosity: {},\n\t},\n\tColorKey: {\n\t\tkeyColor: {},\n\t\tsimilarity: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tsmoothness: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tspillSuppression: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcolorSpace: {\n\t\t\tenum: [\"YUV\", \"RGB\"],\n\t\t},\n\t\tspillSuppressionType: {\n\t\t\tenum: [\"Desaturate\", \"Neutralize\", \"None\"],\n\t\t},\n\t},\n\tContour: {\n\t\tlevels: {\n\t\t\tmin: 2,\n\t\t\tmax: 64,\n\t\t},\n\t\tlineWidth: {\n\t\t\tmin: 0.5,\n\t\t\tmax: 8,\n\t\t},\n\t\tlineColor: {},\n\t\tfill: {\n\t\t\tenum: [\"source\", \"flat\", \"none\"],\n\t\t},\n\t\tfillColor: {},\n\t\tsmoothing: {\n\t\t\tmin: 0,\n\t\t\tmax: 8,\n\t\t},\n\t},\n\tCornerPin: {\n\t\tpoints: {},\n\t},\n\tCRT: {\n\t\tscanlines: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tlineCount: {\n\t\t\tmin: 100,\n\t\t\tmax: 2160,\n\t\t},\n\t\tcurvature: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tmask: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tvignette: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tnoise: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tflicker: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\ttracking: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tchroma: {\n\t\t\tmin: 0,\n\t\t\tmax: 20,\n\t\t},\n\t},\n\tDatamosh: {\n\t\tkeyframes: {},\n\t\tstrength: {\n\t\t\tmin: 0,\n\t\t\tmax: 10,\n\t\t},\n\t\tbleed: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\twarmup: {\n\t\t\tmin: 1,\n\t\t\tmax: 240,\n\t\t},\n\t},\n\tDisplacementMap: {\n\t\tstrengthX: {\n\t\t\tmin: 0,\n\t\t\tmax: 500,\n\t\t},\n\t\tstrengthY: {\n\t\t\tmin: 0,\n\t\t\tmax: 500,\n\t\t},\n\t\txChannel: {\n\t\t\tenum: [\"Red\", \"Green\", \"Blue\", \"Alpha\", \"Luminance\"],\n\t\t},\n\t\tyChannel: {\n\t\t\tenum: [\"Red\", \"Green\", \"Blue\", \"Alpha\", \"Luminance\"],\n\t\t},\n\t\twrapMode: {\n\t\t\tenum: [\"Clamp\", \"Repeat\", \"Mirror\"],\n\t\t},\n\t},\n\tDither: {\n\t\tmode: {\n\t\t\tenum: [\"bayer\", \"noise\", \"halftone\"],\n\t\t},\n\t\tlevels: {\n\t\t\tmin: 2,\n\t\t\tmax: 16,\n\t\t},\n\t\tscale: {\n\t\t\tmin: 1,\n\t\t\tmax: 16,\n\t\t},\n\t\tmonochrome: {},\n\t\tdark: {},\n\t\tlight: {},\n\t},\n\tExtractLUT: {\n\t\tstrategy: {\n\t\t\tenum: [\"deterministic\", \"statistical\"],\n\t\t},\n\t\tsamplePoints: {\n\t\t\tmin: 10,\n\t\t\tmax: 500,\n\t\t},\n\t},\n\tFlip: {\n\t\thorizontal: {},\n\t\tvertical: {},\n\t\tdiagonal: {},\n\t\tmode: {\n\t\t\tenum: [\n\t\t\t\t\"horizontal\",\n\t\t\t\t\"vertical\",\n\t\t\t\t\"both\",\n\t\t\t\t\"diagonal\",\n\t\t\t\t\"antiDiagonal\",\n\t\t\t\t\"custom\",\n\t\t\t],\n\t\t},\n\t\tsymmetry: {\n\t\t\tenum: [\n\t\t\t\t\"none\",\n\t\t\t\t\"leftToRight\",\n\t\t\t\t\"rightToLeft\",\n\t\t\t\t\"topToBottom\",\n\t\t\t\t\"bottomToTop\",\n\t\t\t\t\"quadrant\",\n\t\t\t],\n\t\t},\n\t},\n\tGooey: {\n\t\tradius: {\n\t\t\tmin: 1,\n\t\t\tmax: 60,\n\t\t},\n\t\tthreshold: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tsoftness: {\n\t\t\tmin: 0.001,\n\t\t\tmax: 0.5,\n\t\t},\n\t},\n\tIridescence: {\n\t\tstrength: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tscale: {\n\t\t\tmin: 0.1,\n\t\t\tmax: 10,\n\t\t},\n\t\tshift: {\n\t\t\tmin: -3600,\n\t\t\tmax: 3600,\n\t\t},\n\t\tmode: {\n\t\t\tenum: [\"luminance\", \"relief\"],\n\t\t},\n\t},\n\tKaleidoscope: {\n\t\tsegments: {\n\t\t\tmin: 2,\n\t\t\tmax: 32,\n\t\t},\n\t\trotation: {\n\t\t\tmin: -3600,\n\t\t\tmax: 3600,\n\t\t},\n\t\tcenterX: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tzoom: {\n\t\t\tmin: 0.2,\n\t\t\tmax: 4,\n\t\t},\n\t},\n\tKenBurns: {\n\t\tkeyframes: {},\n\t\tmotionBlurSize: {\n\t\t\tmin: 0,\n\t\t\tmax: 10,\n\t\t},\n\t\tmovementStyle: {\n\t\t\tenum: [\"spline\", \"direct\"],\n\t\t},\n\t\taspectRatio: {\n\t\t\tenum: [\n\t\t\t\t\"input\",\n\t\t\t\t\"16:9\",\n\t\t\t\t\"9:16\",\n\t\t\t\t\"21:9\",\n\t\t\t\t\"9:21\",\n\t\t\t\t\"1:1\",\n\t\t\t\t\"4:3\",\n\t\t\t\t\"3:2\",\n\t\t\t\t\"2:3\",\n\t\t\t\t\"4:5\",\n\t\t\t\t\"5:4\",\n\t\t\t],\n\t\t},\n\t},\n\tLayerStyle: {\n\t\tdropShadow: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tangle: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 360,\n\t\t\t\t},\n\t\t\t\tdistance: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 500,\n\t\t\t\t},\n\t\t\t\tspread: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 250,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\tinnerShadow: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tangle: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 360,\n\t\t\t\t},\n\t\t\t\tdistance: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 500,\n\t\t\t\t},\n\t\t\t\tchoke: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 250,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\touterGlow: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 250,\n\t\t\t\t},\n\t\t\t\tspread: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\tinnerGlow: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 250,\n\t\t\t\t},\n\t\t\t\tspread: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\tstroke: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tposition: {\n\t\t\t\t\tenum: [\"inside\", \"center\", \"outside\"],\n\t\t\t\t},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\tbevelEmboss: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tstyle: {\n\t\t\t\t\tenum: [\"InnerBevel\", \"OuterBevel\", \"Emboss\", \"PillowEmboss\"],\n\t\t\t\t},\n\t\t\t\ttechnique: {\n\t\t\t\t\tenum: [\"Smooth\", \"ChiselHard\", \"ChiselSoft\"],\n\t\t\t\t},\n\t\t\t\tdepth: {\n\t\t\t\t\tmin: 1,\n\t\t\t\t\tmax: 1000,\n\t\t\t\t},\n\t\t\t\tdirection: {\n\t\t\t\t\tenum: [\"Up\", \"Down\"],\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 250,\n\t\t\t\t},\n\t\t\t\tsoften: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 50,\n\t\t\t\t},\n\t\t\t\tangle: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 360,\n\t\t\t\t},\n\t\t\t\taltitude: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 90,\n\t\t\t\t},\n\t\t\t\thighlightColor: {},\n\t\t\t\thighlightOpacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tshadowColor: {},\n\t\t\t\tshadowOpacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tcolorOverlay: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\tdropShadowAngleHandleId: {},\n\t\tdropShadowDistanceHandleId: {},\n\t\tdropShadowSpreadHandleId: {},\n\t\tdropShadowSizeHandleId: {},\n\t\tdropShadowOpacityHandleId: {},\n\t\tinnerShadowAngleHandleId: {},\n\t\tinnerShadowDistanceHandleId: {},\n\t\tinnerShadowChokeHandleId: {},\n\t\tinnerShadowSizeHandleId: {},\n\t\tinnerShadowOpacityHandleId: {},\n\t\touterGlowSizeHandleId: {},\n\t\touterGlowSpreadHandleId: {},\n\t\touterGlowOpacityHandleId: {},\n\t\tinnerGlowSizeHandleId: {},\n\t\tinnerGlowSpreadHandleId: {},\n\t\tinnerGlowOpacityHandleId: {},\n\t\tstrokeSizeHandleId: {},\n\t\tstrokeOpacityHandleId: {},\n\t\tbevelEmbossDepthHandleId: {},\n\t\tbevelEmbossSizeHandleId: {},\n\t\tbevelEmbossSoftenHandleId: {},\n\t\tbevelEmbossAngleHandleId: {},\n\t\tbevelEmbossAltitudeHandleId: {},\n\t\tbevelEmbossHighlightOpacityHandleId: {},\n\t\tbevelEmbossShadowOpacityHandleId: {},\n\t\tcolorOverlayOpacityHandleId: {},\n\t},\n\tLiquify: {\n\t\toperations: {},\n\t},\n\tMaskMath: {\n\t\toperation: {\n\t\t\tenum: [\n\t\t\t\t\"Union\",\n\t\t\t\t\"Intersect\",\n\t\t\t\t\"Subtract\",\n\t\t\t\t\"Difference\",\n\t\t\t\t\"Invert\",\n\t\t\t\t\"Dilate\",\n\t\t\t\t\"Erode\",\n\t\t\t\t\"Choke\",\n\t\t\t\t\"Feather\",\n\t\t\t],\n\t\t},\n\t\tradius: {\n\t\t\tmin: 0,\n\t\t\tmax: 200,\n\t\t},\n\t\tthreshold: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tclampMin: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tclampMax: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tchannelA: {\n\t\t\tenum: [\"Alpha\", \"Luminance\", \"Red\", \"Green\", \"Blue\"],\n\t\t},\n\t\tchannelB: {\n\t\t\tenum: [\"Alpha\", \"Luminance\", \"Red\", \"Green\", \"Blue\"],\n\t\t},\n\t\tbinarize: {},\n\t\tinvertResult: {},\n\t\toutputFormat: {\n\t\t\tenum: [\"WhiteWithAlpha\", \"GrayscaleRGB\", \"AlphaOnly\", \"PassthroughRGB\"],\n\t\t},\n\t},\n\tMeshWarp: {\n\t\tcols: {\n\t\t\tmin: 2,\n\t\t\tmax: 12,\n\t\t},\n\t\trows: {\n\t\t\tmin: 2,\n\t\t\tmax: 12,\n\t\t},\n\t\tpoints: {},\n\t},\n\tNoiseGenerator: {\n\t\tnoiseType: {\n\t\t\tenum: [\"Perlin\", \"Simplex\", \"Voronoi\"],\n\t\t},\n\t\toutputType: {\n\t\t\tenum: [\"Image\", \"Video\"],\n\t\t},\n\t\twidth: {\n\t\t\tmin: 16,\n\t\t\tmax: 4096,\n\t\t},\n\t\theight: {\n\t\t\tmin: 16,\n\t\t\tmax: 4096,\n\t\t},\n\t\tscale: {\n\t\t\tmin: 0.1,\n\t\t\tmax: 100,\n\t\t},\n\t\toctaves: {\n\t\t\tmin: 1,\n\t\t\tmax: 8,\n\t\t},\n\t\tpersistence: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tlacunarity: {\n\t\t\tmin: 1,\n\t\t\tmax: 4,\n\t\t},\n\t\tspeed: {\n\t\t\tmin: 0,\n\t\t\tmax: 10,\n\t\t},\n\t\tcolorStart: {},\n\t\tcolorEnd: {},\n\t\tdurationMs: {\n\t\t\tmin: 1,\n\t\t\tmax: 60000,\n\t\t},\n\t\tfps: {\n\t\t\tmin: 1,\n\t\t\tmax: 120,\n\t\t},\n\t},\n\tOpArt: {\n\t\tpattern: {\n\t\t\tenum: [\"stripes\", \"rings\", \"checker\", \"waves\"],\n\t\t},\n\t\tfrequency: {\n\t\t\tmin: 2,\n\t\t\tmax: 300,\n\t\t},\n\t\tangle: {\n\t\t\tmin: -360,\n\t\t\tmax: 360,\n\t\t},\n\t\twarp: {\n\t\t\tmin: 0,\n\t\t\tmax: 3,\n\t\t},\n\t\tsource: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcolorA: {},\n\t\tcolorB: {},\n\t},\n\tPaint: {\n\t\twidth: {\n\t\t\tmin: 1,\n\t\t\tmax: 16384,\n\t\t},\n\t\theight: {\n\t\t\tmin: 1,\n\t\t\tmax: 16384,\n\t\t},\n\t\tmaintainAspect: {},\n\t\taspectRatio: {},\n\t\tbackgroundColor: {},\n\t\tstrokes: {},\n\t},\n\tPainterly: {\n\t\tstyle: {\n\t\t\tenum: [\"oil\", \"watercolor\"],\n\t\t},\n\t\tradius: {\n\t\t\tmin: 2,\n\t\t\tmax: 12,\n\t\t},\n\t\tedgeDarkening: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tpaper: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tsaturation: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t},\n\tPatchHeal: {\n\t\tpatches: {},\n\t\tcenterX: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\toffsetX: {\n\t\t\tmin: -4096,\n\t\t\tmax: 4096,\n\t\t},\n\t\toffsetY: {\n\t\t\tmin: -4096,\n\t\t\tmax: 4096,\n\t\t},\n\t\tradius: {\n\t\t\tmin: 1,\n\t\t\tmax: 500,\n\t\t},\n\t\tsourceRadius: {\n\t\t\tmin: 1,\n\t\t\tmax: 500,\n\t\t},\n\t\tfeather: {\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t},\n\t\topacity: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tmode: {\n\t\t\tenum: [\"Clone\", \"SeamlessHeal\", \"TextureTransfer\"],\n\t\t},\n\t},\n\tPixelate: {\n\t\tsize: {\n\t\t\tmin: 1,\n\t\t\tmax: 256,\n\t\t},\n\t\tshape: {\n\t\t\tenum: [\"square\", \"circle\", \"diamond\"],\n\t\t},\n\t\tgap: {\n\t\t\tmin: 0,\n\t\t\tmax: 0.9,\n\t\t},\n\t},\n\tPosterize: {\n\t\tlevels: {\n\t\t\tmin: 2,\n\t\t\tmax: 64,\n\t\t},\n\t\tpalette: {\n\t\t\tenum: [\n\t\t\t\t\"none\",\n\t\t\t\t\"gameboy\",\n\t\t\t\t\"teletext\",\n\t\t\t\t\"cga\",\n\t\t\t\t\"pico8\",\n\t\t\t\t\"c64\",\n\t\t\t\t\"grayscale\",\n\t\t\t\t\"sepia\",\n\t\t\t\t\"custom\",\n\t\t\t],\n\t\t},\n\t\tcolors: {},\n\t\tdither: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tpixelSize: {\n\t\t\tmin: 1,\n\t\t\tmax: 64,\n\t\t},\n\t},\n\tProceduralVFX: {\n\t\teffectType: {\n\t\t\tenum: [\n\t\t\t\t\"Smoke\",\n\t\t\t\t\"Fire\",\n\t\t\t\t\"Rain\",\n\t\t\t\t\"Sparks\",\n\t\t\t\t\"Snow\",\n\t\t\t\t\"Dust\",\n\t\t\t\t\"Lightning\",\n\t\t\t\t\"Magic\",\n\t\t\t\t\"LensFlare\",\n\t\t\t\t\"Embers\",\n\t\t\t\t\"EnergyBeam\",\n\t\t\t\t\"Aurora\",\n\t\t\t],\n\t\t},\n\t\toutputType: {\n\t\t\tenum: [\"Image\", \"Video\"],\n\t\t},\n\t\twidth: {\n\t\t\tmin: 16,\n\t\t\tmax: 4096,\n\t\t},\n\t\theight: {\n\t\t\tmin: 16,\n\t\t\tmax: 4096,\n\t\t},\n\t\tdensity: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tscale: {\n\t\t\tmin: 0.001,\n\t\t\tmax: 10,\n\t\t},\n\t\tspeed: {\n\t\t\tmin: 0,\n\t\t\tmax: 10,\n\t\t},\n\t\tintensity: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tseed: {\n\t\t\tmin: 0,\n\t\t\tmax: 1000000,\n\t\t},\n\t\tcolorStart: {},\n\t\tcolorEnd: {},\n\t\tdurationMs: {\n\t\t\tmin: 100,\n\t\t\tmax: 100000,\n\t\t},\n\t\tfps: {\n\t\t\tmin: 1,\n\t\t\tmax: 120,\n\t\t},\n\t},\n\tRefineEdge: {\n\t\tdecontaminateAmount: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tradius: {\n\t\t\tmin: 0.5,\n\t\t\tmax: 50,\n\t\t},\n\t\tsmooth: {\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t},\n\t\tfeather: {\n\t\t\tmin: 0,\n\t\t\tmax: 50,\n\t\t},\n\t\tshiftEdge: {\n\t\t\tmin: -100,\n\t\t\tmax: 100,\n\t\t},\n\t\tmatteChannel: {\n\t\t\tenum: [\"Alpha\", \"Luminance\", \"Red\", \"Green\", \"Blue\"],\n\t\t},\n\t\toutputMode: {\n\t\t\tenum: [\"Composite\", \"MatteOnly\", \"DecontaminatedRGB\"],\n\t\t},\n\t},\n\tRefractionCaustics3D: {\n\t\tior: {\n\t\t\tmin: 1,\n\t\t\tmax: 2.5,\n\t\t},\n\t\tdispersion: {\n\t\t\tmin: 0,\n\t\t\tmax: 0.2,\n\t\t},\n\t\trefractionScale: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t\tcausticBrightness: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t\tcausticScale: {\n\t\t\tmin: 0.1,\n\t\t\tmax: 5,\n\t\t},\n\t\tfluidRipples: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\trippleSpeed: {\n\t\t\tmin: 0,\n\t\t\tmax: 5,\n\t\t},\n\t\troughness: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tspecularIntensity: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t\tlightPosX: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tlightPosY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\ttintColor: {},\n\t\ttintStrength: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tdepthInvert: {},\n\t\tdepthScale: {\n\t\t\tmin: 0.1,\n\t\t\tmax: 5,\n\t\t},\n\t},\n\tResizerScaler: {\n\t\taspectRatioPreset: {\n\t\t\tenum: [\"9:16\", \"16:9\", \"1:1\", \"4:5\", \"21:9\", \"custom\"],\n\t\t},\n\t\tresolutionPreset: {\n\t\t\tenum: [\"4k\", \"1080p\", \"720p\", \"480p\", \"custom\"],\n\t\t},\n\t\ttargetWidth: {\n\t\t\tmin: 1,\n\t\t\tmax: 8192,\n\t\t},\n\t\ttargetHeight: {\n\t\t\tmin: 1,\n\t\t\tmax: 8192,\n\t\t},\n\t\tfitMode: {\n\t\t\tenum: [\"cover\", \"contain\", \"stretch\", \"manual\"],\n\t\t},\n\t\tzoom: {\n\t\t\tmin: 1,\n\t\t\tmax: 1000,\n\t\t},\n\t\toffsetX: {\n\t\t\tmin: -8192,\n\t\t\tmax: 8192,\n\t\t},\n\t\toffsetY: {\n\t\t\tmin: -8192,\n\t\t\tmax: 8192,\n\t\t},\n\t\tbackgroundMode: {\n\t\t\tenum: [\"solid\", \"blurred\", \"gradient\", \"transparent\"],\n\t\t},\n\t\tbackgroundColor: {},\n\t\tbackgroundColor2: {},\n\t\tblurRadius: {\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t},\n\t\tbackgroundBrightness: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tanchorX: {\n\t\t\tenum: [\"left\", \"center\", \"right\"],\n\t\t},\n\t\tanchorY: {\n\t\t\tenum: [\"top\", \"center\", \"bottom\"],\n\t\t},\n\t},\n\tRGBSplit: {\n\t\tamount: {\n\t\t\tmin: 0,\n\t\t\tmax: 200,\n\t\t},\n\t\tangle: {\n\t\t\tmin: -360,\n\t\t\tmax: 360,\n\t\t},\n\t\tradial: {},\n\t},\n\tRotate: {\n\t\tangle: {},\n\t\tfit: {\n\t\t\tenum: [\"cover\", \"contain\", \"fill\"],\n\t\t},\n\t\tscale: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 20,\n\t\t},\n\t},\n\tStereoPanning: {\n\t\tpan: {\n\t\t\tmin: -1,\n\t\t\tmax: 1,\n\t\t},\n\t},\n\tToon: {\n\t\tlevels: {\n\t\t\tmin: 2,\n\t\t\tmax: 12,\n\t\t},\n\t\tedgeThreshold: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tedgeWidth: {\n\t\t\tmin: 0.5,\n\t\t\tmax: 4,\n\t\t},\n\t\tedgeColor: {},\n\t\tsaturation: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t},\n\tTrails: {\n\t\tdecay: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tmode: {\n\t\t\tenum: [\"blend\", \"over\", \"add\", \"max\"],\n\t\t},\n\t\tzoom: {\n\t\t\tmin: 0.5,\n\t\t\tmax: 2,\n\t\t},\n\t\trotation: {\n\t\t\tmin: -45,\n\t\t\tmax: 45,\n\t\t},\n\t\toffsetX: {\n\t\t\tmin: -500,\n\t\t\tmax: 500,\n\t\t},\n\t\toffsetY: {\n\t\t\tmin: -500,\n\t\t\tmax: 500,\n\t\t},\n\t\thueShift: {\n\t\t\tmin: -180,\n\t\t\tmax: 180,\n\t\t},\n\t\twarmup: {\n\t\t\tmin: 0,\n\t\t\tmax: 240,\n\t\t},\n\t},\n\tVignette: {\n\t\tstrength: {\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t},\n\t\tradius: {\n\t\t\tmin: 0.1,\n\t\t\tmax: 2,\n\t\t},\n\t\tsoftness: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\troundness: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterX: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t},\n} as const satisfies Record<string, EffectMeta>;\n","// @generated by scripts/generate-effects.mts — do not edit.\n// Source of truth: nodes/*/package.json (`framefields`) and nodes/*/src/shared/config.ts.\n// Regenerate with `pnpm run generate:effects`.\n\nimport { Effect } from \"@framefields/core\";\nimport type { EffectProp } from \"../types.js\";\nimport { withDefaults } from \"../with-defaults.js\";\nimport { effectMeta } from \"./meta.js\";\n\nexport interface CornerPinPointsItem {\n\t/** Range 0 to 100. */\n\tx: number;\n\t/** Range 0 to 100. */\n\ty: number;\n}\n\nexport interface KenBurnsKeyframesItem {\n\tid?: string;\n\t/** Range 0 to 20000. */\n\tdurationMs: number;\n\t/**\n\t * Range 0 to 20000.\n\t * @default 1000\n\t */\n\tholdMs: number;\n\t/** Range 1 to 20. */\n\tscale: number;\n\t/** Range 0 to 100. */\n\tx: number;\n\t/** Range 0 to 100. */\n\ty: number;\n\t/**\n\t * @default \"ease-in-out\"\n\t */\n\teasing: \"linear\" | \"ease-in\" | \"ease-out\" | \"ease-in-out\" | \"spring\";\n}\n\nexport interface LayerStyleBevelEmboss {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"InnerBevel\"\n\t */\n\tstyle: \"InnerBevel\" | \"OuterBevel\" | \"Emboss\" | \"PillowEmboss\";\n\t/**\n\t * @default \"Smooth\"\n\t */\n\ttechnique: \"Smooth\" | \"ChiselHard\" | \"ChiselSoft\";\n\t/**\n\t * Range 1 to 1000.\n\t * @default 100\n\t */\n\tdepth: number;\n\t/**\n\t * @default \"Up\"\n\t */\n\tdirection: \"Up\" | \"Down\";\n\t/**\n\t * Range 0 to 250.\n\t * @default 5\n\t */\n\tsize: number;\n\t/**\n\t * Range 0 to 50.\n\t * @default 0\n\t */\n\tsoften: number;\n\t/**\n\t * Range 0 to 360.\n\t * @default 120\n\t */\n\tangle: number;\n\t/**\n\t * Range 0 to 90.\n\t * @default 30\n\t */\n\taltitude: number;\n\t/**\n\t * @default \"#ffffff\"\n\t */\n\thighlightColor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\thighlightOpacity: number;\n\t/**\n\t * @default \"#000000\"\n\t */\n\tshadowColor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\tshadowOpacity: number;\n}\n\nexport interface LayerStyleColorOverlay {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"#ff0000\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 1\n\t */\n\topacity: number;\n\t/**\n\t * @default \"normal\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LayerStyleDropShadow {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"#000000\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\topacity: number;\n\t/**\n\t * Range 0 to 360.\n\t * @default 120\n\t */\n\tangle: number;\n\t/**\n\t * Range 0 to 500.\n\t * @default 10\n\t */\n\tdistance: number;\n\t/**\n\t * Range 0 to 100.\n\t * @default 0\n\t */\n\tspread: number;\n\t/**\n\t * Range 0 to 250.\n\t * @default 10\n\t */\n\tsize: number;\n\t/**\n\t * @default \"multiply\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LayerStyleInnerGlow {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"#ffffff\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\topacity: number;\n\t/**\n\t * Range 0 to 250.\n\t * @default 15\n\t */\n\tsize: number;\n\t/**\n\t * Range 0 to 100.\n\t * @default 0\n\t */\n\tspread: number;\n\t/**\n\t * @default \"screen\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LayerStyleInnerShadow {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"#000000\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\topacity: number;\n\t/**\n\t * Range 0 to 360.\n\t * @default 120\n\t */\n\tangle: number;\n\t/**\n\t * Range 0 to 500.\n\t * @default 5\n\t */\n\tdistance: number;\n\t/**\n\t * Range 0 to 100.\n\t * @default 0\n\t */\n\tchoke: number;\n\t/**\n\t * Range 0 to 250.\n\t * @default 5\n\t */\n\tsize: number;\n\t/**\n\t * @default \"multiply\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LayerStyleOuterGlow {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"#ffffff\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\topacity: number;\n\t/**\n\t * Range 0 to 250.\n\t * @default 15\n\t */\n\tsize: number;\n\t/**\n\t * Range 0 to 100.\n\t * @default 0\n\t */\n\tspread: number;\n\t/**\n\t * @default \"screen\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LayerStyleStroke {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * Range 0 to 100.\n\t * @default 2\n\t */\n\tsize: number;\n\t/**\n\t * @default \"outside\"\n\t */\n\tposition: \"inside\" | \"center\" | \"outside\";\n\t/**\n\t * @default \"#ffffff\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 1\n\t */\n\topacity: number;\n\t/**\n\t * @default \"normal\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LiquifyOperationsItem {\n\t/**\n\t * @default \"Bloat\"\n\t */\n\ttype: \"Push\" | \"Pull\" | \"Bloat\" | \"Pucker\" | \"TwirlCW\" | \"TwirlCCW\";\n\t/** Range 0 to 1. */\n\tx: number;\n\t/** Range 0 to 1. */\n\ty: number;\n\t/**\n\t * Range 0.01 to 1.\n\t * @default 0.15\n\t */\n\tradius: number;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.5\n\t */\n\tstrength: number;\n\t/**\n\t * Range -1 to 1.\n\t * @default 0\n\t */\n\tdx: number;\n\t/**\n\t * Range -1 to 1.\n\t * @default 0\n\t */\n\tdy: number;\n}\n\nexport interface MeshWarpPointsItem {\n\t/** Range 0 to 100. */\n\tx: number;\n\t/** Range 0 to 100. */\n\ty: number;\n}\n\nexport interface PaintStrokesItemOption1 {\n\t/**\n\t * @default \"brush\"\n\t */\n\tid: string;\n\ttool: \"brush\";\n\tpath: string;\n\tcolor: string;\n\tsize: number;\n\t/**\n\t * Range 0 to 1.\n\t * @default 1\n\t */\n\topacity: number;\n}\n\nexport interface PaintStrokesItemOption2 {\n\t/**\n\t * @default \"eraser\"\n\t */\n\tid: string;\n\ttool: \"eraser\";\n\tpath: string;\n\tsize: number;\n}\n\nexport interface PaintStrokesItemOption3 {\n\t/**\n\t * @default \"fill\"\n\t */\n\tid: string;\n\ttool: \"fill\";\n\timageData: string;\n\t/** Maximum 16384. */\n\twidth: number;\n\t/** Maximum 16384. */\n\theight: number;\n}\n\nexport interface PatchHealPatchesItem {\n\t/**\n\t * @default \"patch\"\n\t */\n\tid: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.5\n\t */\n\tcenterX: number;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.5\n\t */\n\tcenterY: number;\n\t/**\n\t * Range -4096 to 4096.\n\t * @default 50\n\t */\n\toffsetX: number;\n\t/**\n\t * Range -4096 to 4096.\n\t * @default 0\n\t */\n\toffsetY: number;\n\t/**\n\t * Range 1 to 500.\n\t * @default 25\n\t */\n\tradius: number;\n\t/**\n\t * Range 1 to 500.\n\t * @default 25\n\t */\n\tsourceRadius: number;\n\t/**\n\t * Range 0 to 100.\n\t * @default 50\n\t */\n\tfeather: number;\n\t/**\n\t * Range 0 to 1.\n\t * @default 1\n\t */\n\topacity: number;\n\t/**\n\t * @default \"SeamlessHeal\"\n\t */\n\tmode: \"Clone\" | \"SeamlessHeal\" | \"TextureTransfer\";\n}\n\nexport interface TonalShift {\n\t/**\n\t * Range -100 to 100.\n\t * @default 0\n\t */\n\tcyanRed: number;\n\t/**\n\t * Range -100 to 100.\n\t * @default 0\n\t */\n\tmagentaGreen: number;\n\t/**\n\t * Range -100 to 100.\n\t * @default 0\n\t */\n\tyellowBlue: number;\n}\n\nexport interface AsciiProps {\n\t/**\n\t * Character cell size, px.\n\t * Range 4 to 64. Accepts a signal.\n\t * @default 10\n\t */\n\tcellSize?: EffectProp<number>;\n\t/**\n\t * Glyph color: `fg`, the layer's own colors, or green phosphor.\n\t * @default \"mono\"\n\t */\n\tcolorMode?: \"mono\" | \"source\" | \"green\";\n\t/**\n\t * Glyph color (mono).\n\t * @default \"#e8e8e8\"\n\t */\n\tfg?: string;\n\t/**\n\t * Background color.\n\t * @default \"#0b0b0b\"\n\t */\n\tbg?: string;\n\t/**\n\t * Brightness contrast before picking glyphs.\n\t * Range 0.5 to 3. Accepts a signal.\n\t * @default 1.2\n\t */\n\tcontrast?: EffectProp<number>;\n\t/**\n\t * Dark areas get dense glyphs.\n\t * @default false\n\t */\n\tinvert?: boolean;\n}\n\nconst asciiDefaults: AsciiProps = {\n\tcellSize: 10,\n\tcolorMode: \"mono\",\n\tfg: \"#e8e8e8\",\n\tbg: \"#0b0b0b\",\n\tcontrast: 1.2,\n\tinvert: false,\n};\n\nexport class Ascii extends Effect<AsciiProps, \"Ascii\", \"visual\"> {\n\tpublic readonly op = \"Ascii\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare cellSize: number;\n\tpublic declare colorMode: \"mono\" | \"source\" | \"green\";\n\tpublic declare fg: string;\n\tpublic declare bg: string;\n\tpublic declare contrast: number;\n\tpublic declare invert: boolean;\n\n\tconstructor(config: AsciiProps = {}) {\n\t\tsuper(withDefaults(\"Ascii\", asciiDefaults, config, effectMeta.Ascii));\n\t}\n}\n\nexport interface AudioCompressorProps {\n\t/**\n\t * Level (dBFS) above which gain reduction begins (-60 to 0 dB). Can be modulated by a static number or dynamic signal.\n\t * Range -60 to 0. Accepts a signal.\n\t * @default -24\n\t */\n\tthreshold?: EffectProp<number>;\n\t/**\n\t * Input-to-output ratio above threshold (1 to 100). Can be modulated by a static number or dynamic signal.\n\t * Range 1 to 100. Accepts a signal.\n\t * @default 4\n\t */\n\tratio?: EffectProp<number>;\n\t/**\n\t * Seconds to reach full gain reduction (0.0001 to 1.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.0001 to 1. Accepts a signal.\n\t * @default 0.003\n\t */\n\tattack?: EffectProp<number>;\n\t/**\n\t * Seconds to recover gain after signal drops (0.01 to 5.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.01 to 5. Accepts a signal.\n\t * @default 0.25\n\t */\n\trelease?: EffectProp<number>;\n\t/**\n\t * dB range for soft-knee transition around threshold (0 to 24 dB). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 24. Accepts a signal.\n\t * @default 6\n\t */\n\tknee?: EffectProp<number>;\n\t/**\n\t * dBFS of gain applied after compression (0 to 24 dB). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 24. Accepts a signal.\n\t * @default 0\n\t */\n\tmakeupGain?: EffectProp<number>;\n}\n\nconst audioCompressorDefaults: AudioCompressorProps = {\n\tthreshold: -24,\n\tratio: 4,\n\tattack: 0.003,\n\trelease: 0.25,\n\tknee: 6,\n\tmakeupGain: 0,\n};\n\nexport class AudioCompressor extends Effect<\n\tAudioCompressorProps,\n\t\"AudioCompressor\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"AudioCompressor\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare threshold: number;\n\tpublic declare ratio: number;\n\tpublic declare attack: number;\n\tpublic declare release: number;\n\tpublic declare knee: number;\n\tpublic declare makeupGain: number;\n\n\tconstructor(config: AudioCompressorProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioCompressor\",\n\t\t\t\taudioCompressorDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioCompressor,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface AudioDelayProps {\n\t/**\n\t * Delay time in seconds (0.001 to 5.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.001 to 5. Accepts a signal.\n\t * @default 0.25\n\t */\n\tdelayTime?: EffectProp<number>;\n\t/**\n\t * Amount of delayed signal fed back into delay line (0.0 to 0.95). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 0.95. Accepts a signal.\n\t * @default 0.4\n\t */\n\tfeedback?: EffectProp<number>;\n\t/**\n\t * Mix level of the wet delayed signal (0.0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.3\n\t */\n\twet?: EffectProp<number>;\n\t/**\n\t * Mix level of the original dry signal (0.0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\tdry?: EffectProp<number>;\n\t/**\n\t * Alternates echo reflections between left and right channels\n\t * @default false\n\t */\n\tpingPong?: boolean;\n}\n\nconst audioDelayDefaults: AudioDelayProps = {\n\tdelayTime: 0.25,\n\tfeedback: 0.4,\n\twet: 0.3,\n\tdry: 1,\n\tpingPong: false,\n};\n\nexport class AudioDelay extends Effect<AudioDelayProps, \"AudioDelay\", \"audio\"> {\n\tpublic readonly op = \"AudioDelay\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare delayTime: number;\n\tpublic declare feedback: number;\n\tpublic declare wet: number;\n\tpublic declare dry: number;\n\tpublic declare pingPong: boolean;\n\n\tconstructor(config: AudioDelayProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioDelay\",\n\t\t\t\taudioDelayDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioDelay,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface AudioFadeProps {\n\t/**\n\t * Duration in seconds of fade in from silence (0 to 60s). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 60. Accepts a signal.\n\t * @default 0\n\t */\n\tfadeInDuration?: EffectProp<number>;\n\t/**\n\t * Duration in seconds of fade out to silence (0 to 60s). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 60. Accepts a signal.\n\t * @default 0\n\t */\n\tfadeOutDuration?: EffectProp<number>;\n\t/**\n\t * Envelope shape for fade in\n\t * @default \"linear\"\n\t */\n\tfadeInCurve?: \"linear\" | \"exponential\" | \"scurve\";\n\t/**\n\t * Envelope shape for fade out\n\t * @default \"linear\"\n\t */\n\tfadeOutCurve?: \"linear\" | \"exponential\" | \"scurve\";\n}\n\nconst audioFadeDefaults: AudioFadeProps = {\n\tfadeInDuration: 0,\n\tfadeOutDuration: 0,\n\tfadeInCurve: \"linear\",\n\tfadeOutCurve: \"linear\",\n};\n\nexport class AudioFade extends Effect<AudioFadeProps, \"AudioFade\", \"audio\"> {\n\tpublic readonly op = \"AudioFade\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare fadeInDuration: number;\n\tpublic declare fadeOutDuration: number;\n\tpublic declare fadeInCurve: \"linear\" | \"exponential\" | \"scurve\";\n\tpublic declare fadeOutCurve: \"linear\" | \"exponential\" | \"scurve\";\n\n\tconstructor(config: AudioFadeProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioFade\",\n\t\t\t\taudioFadeDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioFade,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface AudioNoiseGateProps {\n\t/**\n\t * dBFS level below which the gate closes (-120 to 0 dB). Can be modulated by a static number or dynamic signal.\n\t * Range -120 to 0. Accepts a signal.\n\t * @default -40\n\t */\n\tthreshold?: EffectProp<number>;\n\t/**\n\t * Seconds to open (fade in) when signal exceeds threshold (0.0001 to 1.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.0001 to 1. Accepts a signal.\n\t * @default 0.005\n\t */\n\tattack?: EffectProp<number>;\n\t/**\n\t * Seconds to stay open after signal drops below threshold (0.001 to 5.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.001 to 5. Accepts a signal.\n\t * @default 0.05\n\t */\n\thold?: EffectProp<number>;\n\t/**\n\t * Seconds to close (fade out) after hold expires (0.01 to 5.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.01 to 5. Accepts a signal.\n\t * @default 0.1\n\t */\n\trelease?: EffectProp<number>;\n\t/**\n\t * dBFS floor when gate is closed (-120 to 0 dB). Can be modulated by a static number or dynamic signal.\n\t * Range -120 to 0. Accepts a signal.\n\t * @default -80\n\t */\n\trange?: EffectProp<number>;\n}\n\nconst audioNoiseGateDefaults: AudioNoiseGateProps = {\n\tthreshold: -40,\n\tattack: 0.005,\n\thold: 0.05,\n\trelease: 0.1,\n\trange: -80,\n};\n\nexport class AudioNoiseGate extends Effect<\n\tAudioNoiseGateProps,\n\t\"AudioNoiseGate\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"AudioNoiseGate\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare threshold: number;\n\tpublic declare attack: number;\n\tpublic declare hold: number;\n\tpublic declare release: number;\n\tpublic declare range: number;\n\n\tconstructor(config: AudioNoiseGateProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioNoiseGate\",\n\t\t\t\taudioNoiseGateDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioNoiseGate,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface AudioParametricEqProps {\n\t/**\n\t * Type of biquad filter\n\t * @default \"peak\"\n\t */\n\ttype?: \"lowShelf\" | \"highShelf\" | \"peak\" | \"lowPass\" | \"highPass\" | \"notch\";\n\t/**\n\t * Cutoff or center frequency in Hz (20 to 20000 Hz). Can be modulated by a static number or dynamic signal.\n\t * Range 20 to 20000. Accepts a signal.\n\t * @default 1000\n\t */\n\tfrequency?: EffectProp<number>;\n\t/**\n\t * Gain boost or cut in dB (-24 to 24 dB). Can be modulated by a static number or dynamic signal.\n\t * Range -24 to 24. Accepts a signal.\n\t * @default 0\n\t */\n\tgain?: EffectProp<number>;\n\t/**\n\t * Filter bandwidth / Q factor (0.01 to 10.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0.01 to 10. Accepts a signal.\n\t * @default 1\n\t */\n\tq?: EffectProp<number>;\n}\n\nconst audioParametricEqDefaults: AudioParametricEqProps = {\n\ttype: \"peak\",\n\tfrequency: 1000,\n\tgain: 0,\n\tq: 1,\n};\n\nexport class AudioParametricEq extends Effect<\n\tAudioParametricEqProps,\n\t\"AudioParametricEq\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"AudioParametricEq\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare type:\n\t\t| \"lowShelf\"\n\t\t| \"highShelf\"\n\t\t| \"peak\"\n\t\t| \"lowPass\"\n\t\t| \"highPass\"\n\t\t| \"notch\";\n\tpublic declare frequency: number;\n\tpublic declare gain: number;\n\tpublic declare q: number;\n\n\tconstructor(config: AudioParametricEqProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioParametricEq\",\n\t\t\t\taudioParametricEqDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioParametricEq,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface AudioReverbProps {\n\t/**\n\t * Room decay, size of simulated space (0 to 0.98). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 0.98. Accepts a signal.\n\t * @default 0.5\n\t */\n\troomSize?: EffectProp<number>;\n\t/**\n\t * High-frequency absorption (0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tdamping?: EffectProp<number>;\n\t/**\n\t * Mix level of the wet reverberated signal (0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.3\n\t */\n\twet?: EffectProp<number>;\n\t/**\n\t * Mix level of the original dry signal (0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\tdry?: EffectProp<number>;\n\t/**\n\t * Stereo spread of the reverb tail (0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\twidth?: EffectProp<number>;\n}\n\nconst audioReverbDefaults: AudioReverbProps = {\n\troomSize: 0.5,\n\tdamping: 0.5,\n\twet: 0.3,\n\tdry: 1,\n\twidth: 1,\n};\n\nexport class AudioReverb extends Effect<\n\tAudioReverbProps,\n\t\"AudioReverb\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"AudioReverb\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare roomSize: number;\n\tpublic declare damping: number;\n\tpublic declare wet: number;\n\tpublic declare dry: number;\n\tpublic declare width: number;\n\n\tconstructor(config: AudioReverbProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioReverb\",\n\t\t\t\taudioReverbDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioReverb,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface BlurBaseProps {\n\t/**\n\t * Blur Type\n\t * @default \"Gaussian\"\n\t */\n\tblurType?:\n\t\t| \"Gaussian\"\n\t\t| \"Box\"\n\t\t| \"Median\"\n\t\t| \"Motion\"\n\t\t| \"Bilateral\"\n\t\t| \"Edge-preserving\"\n\t\t| \"Radial\"\n\t\t| \"Zoom\";\n\t/**\n\t * The intensity of the blur. 0 = no blur. Can be modulated by a static number or a dynamic signal.\n\t * Range 0 to 100. Accepts a signal.\n\t * @default 5\n\t */\n\tstrength?: EffectProp<number>;\n\t/**\n\t * Direction of a Motion blur, in degrees.\n\t * Range 0 to 360. Accepts a signal.\n\t * @default 0\n\t */\n\tangle?: EffectProp<number>;\n\t/**\n\t * Sigma value for color space in Bilateral / Edge-preserving blurs. Can be modulated by a static number or a dynamic signal.\n\t * Range 0.01 to 1. Accepts a signal.\n\t * @default 0.1\n\t */\n\tsigmaColor?: EffectProp<number>;\n\t/**\n\t * The X coordinate of the blur center (0.0 to 1.0). Can be modulated by a static number or a dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterX?: EffectProp<number>;\n\t/**\n\t * The Y coordinate of the blur center (0.0 to 1.0). Can be modulated by a static number or a dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterY?: EffectProp<number>;\n\t/**\n\t * Blurs only a specific circular area around center point.\n\t * Accepts a signal.\n\t * @default false\n\t */\n\tpartialBlur?: EffectProp<boolean>;\n\t/**\n\t * Radius of the partial blur region (0.01 to 1.0). Can be modulated by a static number or a dynamic signal.\n\t * Range 0.01 to 1. Accepts a signal.\n\t * @default 0.3\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Vertical radius of the partial blur region (0 to 1.0). 0 reuses the horizontal radius.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tradiusY?: EffectProp<number>;\n\t/**\n\t * Shape of the partial blur region.\n\t * @default \"circle\"\n\t */\n\tshape?: \"ellipse\" | \"circle\" | \"rect\";\n}\n\nconst blurDefaults: BlurBaseProps = {\n\tblurType: \"Gaussian\",\n\tstrength: 5,\n\tangle: 0,\n\tsigmaColor: 0.1,\n\tcenterX: 0.5,\n\tcenterY: 0.5,\n\tpartialBlur: false,\n\tradius: 0.3,\n\tradiusY: 0,\n\tshape: \"circle\",\n};\n\n/** @internal Extended by `effects/custom/blur.ts`, which exports `Blur`. */\nexport class BlurBase extends Effect<BlurBaseProps, \"Blur\", \"visual\"> {\n\tpublic readonly op = \"Blur\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare blurType:\n\t\t| \"Gaussian\"\n\t\t| \"Box\"\n\t\t| \"Median\"\n\t\t| \"Motion\"\n\t\t| \"Bilateral\"\n\t\t| \"Edge-preserving\"\n\t\t| \"Radial\"\n\t\t| \"Zoom\";\n\tpublic declare strength: number;\n\tpublic declare angle: number;\n\tpublic declare sigmaColor: number;\n\tpublic declare centerX: number;\n\tpublic declare centerY: number;\n\tpublic declare partialBlur: boolean;\n\tpublic declare radius: number;\n\tpublic declare radiusY: number;\n\tpublic declare shape: \"ellipse\" | \"circle\" | \"rect\";\n\n\tconstructor(config: BlurBaseProps = {}) {\n\t\tsuper(withDefaults(\"Blur\", blurDefaults, config, effectMeta.Blur));\n\t}\n}\n\nexport interface CameraParallax3DProps {\n\t/**\n\t * Motion Preset\n\t * @default \"DollyZoom\"\n\t */\n\tmotionPreset?:\n\t\t| \"Custom\"\n\t\t| \"DollyZoom\"\n\t\t| \"Orbit\"\n\t\t| \"FlyThrough\"\n\t\t| \"HandheldShake\"\n\t\t| \"RackFocus\";\n\t/**\n\t * Horizontal camera pan angle / position offset (-1.0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range -1 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tpanX?: EffectProp<number>;\n\t/**\n\t * Vertical camera tilt angle / position offset (-1.0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range -1 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tpanY?: EffectProp<number>;\n\t/**\n\t * Camera forward/backward zoom position (-1.0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range -1 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tdollyZ?: EffectProp<number>;\n\t/**\n\t * Camera Field of View in degrees (15° to 120°). Can be modulated by a static number or dynamic signal.\n\t * Range 15 to 120. Accepts a signal.\n\t * @default 50\n\t */\n\tfov?: EffectProp<number>;\n\t/**\n\t * Strength of 3D spatial displacement depth relief. Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 0.6\n\t */\n\tparallaxAmount?: EffectProp<number>;\n\t/**\n\t * Lens aperture size / Circle of Confusion bokeh blur radius. Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.3\n\t */\n\tdofAperture?: EffectProp<number>;\n\t/**\n\t * Focal plane depth in scene (0.0=foreground, 1.0=background). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.4\n\t */\n\tfocusPlane?: EffectProp<number>;\n\t/**\n\t * Inpainting border bleed to eliminate border occlusion tearing.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tedgeDilation?: EffectProp<number>;\n\t/**\n\t * Invert depth polarity (white = near vs black = near).\n\t * @default false\n\t */\n\tdepthInvert?: boolean;\n}\n\nconst cameraParallax3DDefaults: CameraParallax3DProps = {\n\tmotionPreset: \"DollyZoom\",\n\tpanX: 0,\n\tpanY: 0,\n\tdollyZ: 0,\n\tfov: 50,\n\tparallaxAmount: 0.6,\n\tdofAperture: 0.3,\n\tfocusPlane: 0.4,\n\tedgeDilation: 0.5,\n\tdepthInvert: false,\n};\n\nexport class CameraParallax3D extends Effect<\n\tCameraParallax3DProps,\n\t\"CameraParallax3D\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"CameraParallax3D\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare motionPreset:\n\t\t| \"Custom\"\n\t\t| \"DollyZoom\"\n\t\t| \"Orbit\"\n\t\t| \"FlyThrough\"\n\t\t| \"HandheldShake\"\n\t\t| \"RackFocus\";\n\tpublic declare panX: number;\n\tpublic declare panY: number;\n\tpublic declare dollyZ: number;\n\tpublic declare fov: number;\n\tpublic declare parallaxAmount: number;\n\tpublic declare dofAperture: number;\n\tpublic declare focusPlane: number;\n\tpublic declare edgeDilation: number;\n\tpublic declare depthInvert: boolean;\n\n\tconstructor(config: CameraParallax3DProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"CameraParallax3D\",\n\t\t\t\tcameraParallax3DDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.CameraParallax3D,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ChannelMergerProps {\n\t/**\n\t * Color space used for channel recombination (RGBA, HSLA, CMYK, or LAB).\n\t * @default \"RGBA\"\n\t */\n\tcolorSpace?: \"RGBA\" | \"HSLA\" | \"CMYK\" | \"LAB\";\n\t/**\n\t * Fallback value used when Channel 4 is unconnected (Alpha=1.0, Black=0.0 in CMYK).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\tdefaultChannel4?: EffectProp<number>;\n}\n\nconst channelMergerDefaults: ChannelMergerProps = {\n\tcolorSpace: \"RGBA\",\n\tdefaultChannel4: 1,\n};\n\nexport class ChannelMerger extends Effect<\n\tChannelMergerProps,\n\t\"ChannelMerger\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ChannelMerger\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare colorSpace: \"RGBA\" | \"HSLA\" | \"CMYK\" | \"LAB\";\n\tpublic declare defaultChannel4: number;\n\n\tconstructor(config: ChannelMergerProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ChannelMerger\",\n\t\t\t\tchannelMergerDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ChannelMerger,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ChannelSplitterProps {\n\t/**\n\t * Color space used for channel decomposition (RGBA, HSLA, CMYK, or LAB).\n\t * @default \"RGBA\"\n\t */\n\tcolorSpace?: \"RGBA\" | \"HSLA\" | \"CMYK\" | \"LAB\";\n}\n\nconst channelSplitterDefaults: ChannelSplitterProps = {\n\tcolorSpace: \"RGBA\",\n};\n\nexport class ChannelSplitter extends Effect<\n\tChannelSplitterProps,\n\t\"ChannelSplitter\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ChannelSplitter\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare colorSpace: \"RGBA\" | \"HSLA\" | \"CMYK\" | \"LAB\";\n\n\tconstructor(config: ChannelSplitterProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ChannelSplitter\",\n\t\t\t\tchannelSplitterDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ChannelSplitter,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ColorBalanceProps {\n\t/**\n\t * @default {\"cyanRed\":0,\"magentaGreen\":0,\"yellowBlue\":0}\n\t */\n\tshadows?: Partial<TonalShift>;\n\t/**\n\t * @default {\"cyanRed\":0,\"magentaGreen\":0,\"yellowBlue\":0}\n\t */\n\tmidtones?: Partial<TonalShift>;\n\t/**\n\t * @default {\"cyanRed\":0,\"magentaGreen\":0,\"yellowBlue\":0}\n\t */\n\thighlights?: Partial<TonalShift>;\n\t/**\n\t * @default true\n\t */\n\tpreserveLuminosity?: boolean;\n}\n\nconst colorBalanceDefaults: ColorBalanceProps = {\n\tshadows: { cyanRed: 0, magentaGreen: 0, yellowBlue: 0 },\n\tmidtones: { cyanRed: 0, magentaGreen: 0, yellowBlue: 0 },\n\thighlights: { cyanRed: 0, magentaGreen: 0, yellowBlue: 0 },\n\tpreserveLuminosity: true,\n};\n\nexport class ColorBalance extends Effect<\n\tColorBalanceProps,\n\t\"ColorBalance\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ColorBalance\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare shadows: Partial<TonalShift>;\n\tpublic declare midtones: Partial<TonalShift>;\n\tpublic declare highlights: Partial<TonalShift>;\n\tpublic declare preserveLuminosity: boolean;\n\n\tconstructor(config: ColorBalanceProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ColorBalance\",\n\t\t\t\tcolorBalanceDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ColorBalance,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ColorKeyProps {\n\t/**\n\t * Key Color\n\t * @default \"#00ff00\"\n\t */\n\tkeyColor?: string;\n\t/**\n\t * How close the color must be to the Key Color to be removed.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.4\n\t */\n\tsimilarity?: EffectProp<number>;\n\t/**\n\t * The softness of the transparency edge.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.1\n\t */\n\tsmoothness?: EffectProp<number>;\n\t/**\n\t * Amount of key color spill to remove from foreground edges.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.2\n\t */\n\tspillSuppression?: EffectProp<number>;\n\t/**\n\t * Color space used to calculate similarity distance.\n\t * @default \"YUV\"\n\t */\n\tcolorSpace?: \"YUV\" | \"RGB\";\n\t/**\n\t * How key color spill is suppressed on foreground edges.\n\t * @default \"Desaturate\"\n\t */\n\tspillSuppressionType?: \"Desaturate\" | \"Neutralize\" | \"None\";\n}\n\nconst colorKeyDefaults: ColorKeyProps = {\n\tkeyColor: \"#00ff00\",\n\tsimilarity: 0.4,\n\tsmoothness: 0.1,\n\tspillSuppression: 0.2,\n\tcolorSpace: \"YUV\",\n\tspillSuppressionType: \"Desaturate\",\n};\n\nexport class ColorKey extends Effect<ColorKeyProps, \"ColorKey\", \"visual\"> {\n\tpublic readonly op = \"ColorKey\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare keyColor: string;\n\tpublic declare similarity: number;\n\tpublic declare smoothness: number;\n\tpublic declare spillSuppression: number;\n\tpublic declare colorSpace: \"YUV\" | \"RGB\";\n\tpublic declare spillSuppressionType: \"Desaturate\" | \"Neutralize\" | \"None\";\n\n\tconstructor(config: ColorKeyProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"ColorKey\", colorKeyDefaults, config, effectMeta.ColorKey),\n\t\t);\n\t}\n}\n\nexport interface ContourProps {\n\t/**\n\t * Contour lines from dark to light.\n\t * Range 2 to 64. Accepts a signal.\n\t * @default 14\n\t */\n\tlevels?: EffectProp<number>;\n\t/**\n\t * Line width, px.\n\t * Range 0.5 to 8. Accepts a signal.\n\t * @default 1.2\n\t */\n\tlineWidth?: EffectProp<number>;\n\t/**\n\t * Line color.\n\t * @default \"#2b1d0e\"\n\t */\n\tlineColor?: string;\n\t/**\n\t * Under the lines: the layer, `fillColor`, or transparent.\n\t * @default \"source\"\n\t */\n\tfill?: \"source\" | \"flat\" | \"none\";\n\t/**\n\t * Paper color (flat fill).\n\t * @default \"#f3ead8\"\n\t */\n\tfillColor?: string;\n\t/**\n\t * Blur before tracing, px (smoother lines).\n\t * Range 0 to 8. Accepts a signal.\n\t * @default 2\n\t */\n\tsmoothing?: EffectProp<number>;\n}\n\nconst contourDefaults: ContourProps = {\n\tlevels: 14,\n\tlineWidth: 1.2,\n\tlineColor: \"#2b1d0e\",\n\tfill: \"source\",\n\tfillColor: \"#f3ead8\",\n\tsmoothing: 2,\n};\n\nexport class Contour extends Effect<ContourProps, \"Contour\", \"visual\"> {\n\tpublic readonly op = \"Contour\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare levels: number;\n\tpublic declare lineWidth: number;\n\tpublic declare lineColor: string;\n\tpublic declare fill: \"source\" | \"flat\" | \"none\";\n\tpublic declare fillColor: string;\n\tpublic declare smoothing: number;\n\n\tconstructor(config: ContourProps = {}) {\n\t\tsuper(withDefaults(\"Contour\", contourDefaults, config, effectMeta.Contour));\n\t}\n}\n\nexport interface CornerPinProps {\n\tpoints?: CornerPinPointsItem[];\n}\n\nconst cornerPinDefaults: CornerPinProps = {};\n\nexport class CornerPin extends Effect<CornerPinProps, \"CornerPin\", \"visual\"> {\n\tpublic readonly op = \"CornerPin\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare points: CornerPinPointsItem[] | undefined;\n\n\tconstructor(config: CornerPinProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"CornerPin\",\n\t\t\t\tcornerPinDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.CornerPin,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface CRTProps {\n\t/**\n\t * Scanline darkness.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.45\n\t */\n\tscanlines?: EffectProp<number>;\n\t/**\n\t * Scanlines over the height.\n\t * Range 100 to 2160. Accepts a signal.\n\t * @default 540\n\t */\n\tlineCount?: EffectProp<number>;\n\t/**\n\t * Barrel distortion of the tube.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.12\n\t */\n\tcurvature?: EffectProp<number>;\n\t/**\n\t * RGB aperture-grille strength.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.25\n\t */\n\tmask?: EffectProp<number>;\n\t/**\n\t * Darkening toward the edges.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.35\n\t */\n\tvignette?: EffectProp<number>;\n\t/**\n\t * Animated static.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.08\n\t */\n\tnoise?: EffectProp<number>;\n\t/**\n\t * Brightness flicker.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.03\n\t */\n\tflicker?: EffectProp<number>;\n\t/**\n\t * VHS tracking error: line jitter and a rolling band.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\ttracking?: EffectProp<number>;\n\t/**\n\t * VHS color bleed, px.\n\t * Range 0 to 20. Accepts a signal.\n\t * @default 0\n\t */\n\tchroma?: EffectProp<number>;\n}\n\nconst cRTDefaults: CRTProps = {\n\tscanlines: 0.45,\n\tlineCount: 540,\n\tcurvature: 0.12,\n\tmask: 0.25,\n\tvignette: 0.35,\n\tnoise: 0.08,\n\tflicker: 0.03,\n\ttracking: 0,\n\tchroma: 0,\n};\n\nexport class CRT extends Effect<CRTProps, \"CRT\", \"visual\"> {\n\tpublic readonly op = \"CRT\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare scanlines: number;\n\tpublic declare lineCount: number;\n\tpublic declare curvature: number;\n\tpublic declare mask: number;\n\tpublic declare vignette: number;\n\tpublic declare noise: number;\n\tpublic declare flicker: number;\n\tpublic declare tracking: number;\n\tpublic declare chroma: number;\n\n\tconstructor(config: CRTProps = {}) {\n\t\tsuper(withDefaults(\"CRT\", cRTDefaults, config, effectMeta.CRT));\n\t}\n}\n\nexport interface DatamoshProps {\n\t/**\n\t * Layer frames that show the clean picture again (I-frames). The first frame always does.\n\t * @default []\n\t */\n\tkeyframes?: number[];\n\t/**\n\t * How far pixels are dragged along the motion.\n\t * Range 0 to 10. Accepts a signal.\n\t * @default 1\n\t */\n\tstrength?: EffectProp<number>;\n\t/**\n\t * Clean picture mixed back in per frame, 0–1.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tbleed?: EffectProp<number>;\n\t/**\n\t * Most frames replayed to rebuild the smear after a jump.\n\t * Range 1 to 240.\n\t * @default 48\n\t */\n\twarmup?: number;\n}\n\nconst datamoshDefaults: DatamoshProps = {\n\tkeyframes: [],\n\tstrength: 1,\n\tbleed: 0,\n\twarmup: 48,\n};\n\nexport class Datamosh extends Effect<DatamoshProps, \"Datamosh\", \"visual\"> {\n\tpublic readonly op = \"Datamosh\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare keyframes: number[];\n\tpublic declare strength: number;\n\tpublic declare bleed: number;\n\tpublic declare warmup: number;\n\n\tconstructor(config: DatamoshProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"Datamosh\", datamoshDefaults, config, effectMeta.Datamosh),\n\t\t);\n\t}\n}\n\nexport interface DisplacementMapProps {\n\t/**\n\t * Horizontal displacement strength in pixels. Can be modulated by a static number or a dynamic signal.\n\t * Range 0 to 500. Accepts a signal.\n\t * @default 50\n\t */\n\tstrengthX?: EffectProp<number>;\n\t/**\n\t * Vertical displacement strength in pixels. Can be modulated by a static number or a dynamic signal.\n\t * Range 0 to 500. Accepts a signal.\n\t * @default 50\n\t */\n\tstrengthY?: EffectProp<number>;\n\t/**\n\t * X Channel\n\t * @default \"Red\"\n\t */\n\txChannel?: \"Red\" | \"Green\" | \"Blue\" | \"Alpha\" | \"Luminance\";\n\t/**\n\t * Y Channel\n\t * @default \"Green\"\n\t */\n\tyChannel?: \"Red\" | \"Green\" | \"Blue\" | \"Alpha\" | \"Luminance\";\n\t/**\n\t * Wrap Mode\n\t * @default \"Clamp\"\n\t */\n\twrapMode?: \"Clamp\" | \"Repeat\" | \"Mirror\";\n}\n\nconst displacementMapDefaults: DisplacementMapProps = {\n\tstrengthX: 50,\n\tstrengthY: 50,\n\txChannel: \"Red\",\n\tyChannel: \"Green\",\n\twrapMode: \"Clamp\",\n};\n\nexport class DisplacementMap extends Effect<\n\tDisplacementMapProps,\n\t\"DisplacementMap\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"DisplacementMap\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare strengthX: number;\n\tpublic declare strengthY: number;\n\tpublic declare xChannel: \"Red\" | \"Green\" | \"Blue\" | \"Alpha\" | \"Luminance\";\n\tpublic declare yChannel: \"Red\" | \"Green\" | \"Blue\" | \"Alpha\" | \"Luminance\";\n\tpublic declare wrapMode: \"Clamp\" | \"Repeat\" | \"Mirror\";\n\n\tconstructor(config: DisplacementMapProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"DisplacementMap\",\n\t\t\t\tdisplacementMapDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.DisplacementMap,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface DitherProps {\n\t/**\n\t * Pattern: Bayer matrix, blue-ish noise or round halftone dots.\n\t * @default \"bayer\"\n\t */\n\tmode?: \"bayer\" | \"noise\" | \"halftone\";\n\t/**\n\t * Levels per channel (2 = 1-bit).\n\t * Range 2 to 16. Accepts a signal.\n\t * @default 2\n\t */\n\tlevels?: EffectProp<number>;\n\t/**\n\t * Dither pixel size, px.\n\t * Range 1 to 16. Accepts a signal.\n\t * @default 2\n\t */\n\tscale?: EffectProp<number>;\n\t/**\n\t * Map brightness to the dark → light colors instead of dithering each channel.\n\t * @default true\n\t */\n\tmonochrome?: boolean;\n\t/**\n\t * Dark color (monochrome).\n\t * @default \"#111111\"\n\t */\n\tdark?: string;\n\t/**\n\t * Light color (monochrome).\n\t * @default \"#f2efe6\"\n\t */\n\tlight?: string;\n}\n\nconst ditherDefaults: DitherProps = {\n\tmode: \"bayer\",\n\tlevels: 2,\n\tscale: 2,\n\tmonochrome: true,\n\tdark: \"#111111\",\n\tlight: \"#f2efe6\",\n};\n\nexport class Dither extends Effect<DitherProps, \"Dither\", \"visual\"> {\n\tpublic readonly op = \"Dither\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare mode: \"bayer\" | \"noise\" | \"halftone\";\n\tpublic declare levels: number;\n\tpublic declare scale: number;\n\tpublic declare monochrome: boolean;\n\tpublic declare dark: string;\n\tpublic declare light: string;\n\n\tconstructor(config: DitherProps = {}) {\n\t\tsuper(withDefaults(\"Dither\", ditherDefaults, config, effectMeta.Dither));\n\t}\n}\n\nexport interface ExtractLUTProps {\n\t/**\n\t * Extraction Strategy\n\t * @default \"deterministic\"\n\t */\n\tstrategy?: \"deterministic\" | \"statistical\";\n\t/**\n\t * Sample Points\n\t * Range 10 to 500. Accepts a signal.\n\t * @default 150\n\t */\n\tsamplePoints?: EffectProp<number>;\n}\n\nconst extractLUTDefaults: ExtractLUTProps = {\n\tstrategy: \"deterministic\",\n\tsamplePoints: 150,\n};\n\nexport class ExtractLUT extends Effect<\n\tExtractLUTProps,\n\t\"ExtractLUT\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ExtractLUT\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare strategy: \"deterministic\" | \"statistical\";\n\tpublic declare samplePoints: number;\n\n\tconstructor(config: ExtractLUTProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ExtractLUT\",\n\t\t\t\textractLUTDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ExtractLUT,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface FlipProps {\n\t/**\n\t * Mirror horizontally along the vertical center axis.\n\t * @default true\n\t */\n\thorizontal?: boolean;\n\t/**\n\t * Mirror vertically along the horizontal center axis.\n\t * @default false\n\t */\n\tvertical?: boolean;\n\t/**\n\t * Swap horizontal and vertical axes (diagonal transposition).\n\t * @default false\n\t */\n\tdiagonal?: boolean;\n\t/**\n\t * Quick preset mode for flipping or transposition.\n\t * @default \"horizontal\"\n\t */\n\tmode?:\n\t\t| \"horizontal\"\n\t\t| \"vertical\"\n\t\t| \"both\"\n\t\t| \"diagonal\"\n\t\t| \"antiDiagonal\"\n\t\t| \"custom\";\n\t/**\n\t * Split-mirror reflection and symmetry effects.\n\t * @default \"none\"\n\t */\n\tsymmetry?:\n\t\t| \"none\"\n\t\t| \"leftToRight\"\n\t\t| \"rightToLeft\"\n\t\t| \"topToBottom\"\n\t\t| \"bottomToTop\"\n\t\t| \"quadrant\";\n}\n\nconst flipDefaults: FlipProps = {\n\thorizontal: true,\n\tvertical: false,\n\tdiagonal: false,\n\tmode: \"horizontal\",\n\tsymmetry: \"none\",\n};\n\nexport class Flip extends Effect<FlipProps, \"Flip\", \"visual\"> {\n\tpublic readonly op = \"Flip\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare horizontal: boolean;\n\tpublic declare vertical: boolean;\n\tpublic declare diagonal: boolean;\n\tpublic declare mode:\n\t\t| \"horizontal\"\n\t\t| \"vertical\"\n\t\t| \"both\"\n\t\t| \"diagonal\"\n\t\t| \"antiDiagonal\"\n\t\t| \"custom\";\n\tpublic declare symmetry:\n\t\t| \"none\"\n\t\t| \"leftToRight\"\n\t\t| \"rightToLeft\"\n\t\t| \"topToBottom\"\n\t\t| \"bottomToTop\"\n\t\t| \"quadrant\";\n\n\tconstructor(config: FlipProps = {}) {\n\t\tsuper(withDefaults(\"Flip\", flipDefaults, config, effectMeta.Flip));\n\t}\n}\n\nexport interface GooeyProps {\n\t/**\n\t * Melt distance, px.\n\t * Range 1 to 60. Accepts a signal.\n\t * @default 12\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Alpha cut, 0–1 (higher = thinner blobs).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tthreshold?: EffectProp<number>;\n\t/**\n\t * Edge softness.\n\t * Range 0.001 to 0.5. Accepts a signal.\n\t * @default 0.04\n\t */\n\tsoftness?: EffectProp<number>;\n}\n\nconst gooeyDefaults: GooeyProps = {\n\tradius: 12,\n\tthreshold: 0.5,\n\tsoftness: 0.04,\n};\n\nexport class Gooey extends Effect<GooeyProps, \"Gooey\", \"visual\"> {\n\tpublic readonly op = \"Gooey\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare radius: number;\n\tpublic declare threshold: number;\n\tpublic declare softness: number;\n\n\tconstructor(config: GooeyProps = {}) {\n\t\tsuper(withDefaults(\"Gooey\", gooeyDefaults, config, effectMeta.Gooey));\n\t}\n}\n\nexport interface IridescenceProps {\n\t/**\n\t * How much rainbow, 0–1.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.6\n\t */\n\tstrength?: EffectProp<number>;\n\t/**\n\t * Rainbow bands over the range.\n\t * Range 0.1 to 10. Accepts a signal.\n\t * @default 2\n\t */\n\tscale?: EffectProp<number>;\n\t/**\n\t * Hue shift, degrees (animate it).\n\t * Range -3600 to 3600. Accepts a signal.\n\t * @default 0\n\t */\n\tshift?: EffectProp<number>;\n\t/**\n\t * Bands from brightness, or from the slope of the image (foil).\n\t * @default \"relief\"\n\t */\n\tmode?: \"luminance\" | \"relief\";\n}\n\nconst iridescenceDefaults: IridescenceProps = {\n\tstrength: 0.6,\n\tscale: 2,\n\tshift: 0,\n\tmode: \"relief\",\n};\n\nexport class Iridescence extends Effect<\n\tIridescenceProps,\n\t\"Iridescence\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"Iridescence\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare strength: number;\n\tpublic declare scale: number;\n\tpublic declare shift: number;\n\tpublic declare mode: \"luminance\" | \"relief\";\n\n\tconstructor(config: IridescenceProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"Iridescence\",\n\t\t\t\tiridescenceDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.Iridescence,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface KaleidoscopeProps {\n\t/**\n\t * Mirror segments.\n\t * Range 2 to 32. Accepts a signal.\n\t * @default 6\n\t */\n\tsegments?: EffectProp<number>;\n\t/**\n\t * Pattern rotation, degrees.\n\t * Range -3600 to 3600. Accepts a signal.\n\t * @default 0\n\t */\n\trotation?: EffectProp<number>;\n\t/**\n\t * Center, 0–1 across.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterX?: EffectProp<number>;\n\t/**\n\t * Center, 0–1 down.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterY?: EffectProp<number>;\n\t/**\n\t * Scale of the folded image.\n\t * Range 0.2 to 4. Accepts a signal.\n\t * @default 1\n\t */\n\tzoom?: EffectProp<number>;\n}\n\nconst kaleidoscopeDefaults: KaleidoscopeProps = {\n\tsegments: 6,\n\trotation: 0,\n\tcenterX: 0.5,\n\tcenterY: 0.5,\n\tzoom: 1,\n};\n\nexport class Kaleidoscope extends Effect<\n\tKaleidoscopeProps,\n\t\"Kaleidoscope\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"Kaleidoscope\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare segments: number;\n\tpublic declare rotation: number;\n\tpublic declare centerX: number;\n\tpublic declare centerY: number;\n\tpublic declare zoom: number;\n\n\tconstructor(config: KaleidoscopeProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"Kaleidoscope\",\n\t\t\t\tkaleidoscopeDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.Kaleidoscope,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface KenBurnsProps {\n\t/**\n\t * @default []\n\t */\n\tkeyframes?: KenBurnsKeyframesItem[];\n\t/**\n\t * Range 0 to 10.\n\t * @default 1.5\n\t */\n\tmotionBlurSize?: number;\n\t/**\n\t * @default \"spline\"\n\t */\n\tmovementStyle?: \"spline\" | \"direct\";\n\t/**\n\t * @default \"input\"\n\t */\n\taspectRatio?:\n\t\t| \"input\"\n\t\t| \"16:9\"\n\t\t| \"9:16\"\n\t\t| \"21:9\"\n\t\t| \"9:21\"\n\t\t| \"1:1\"\n\t\t| \"4:3\"\n\t\t| \"3:2\"\n\t\t| \"2:3\"\n\t\t| \"4:5\"\n\t\t| \"5:4\";\n}\n\nconst kenBurnsDefaults: KenBurnsProps = {\n\tkeyframes: [],\n\tmotionBlurSize: 1.5,\n\tmovementStyle: \"spline\",\n\taspectRatio: \"input\",\n};\n\nexport class KenBurns extends Effect<KenBurnsProps, \"KenBurns\", \"visual\"> {\n\tpublic readonly op = \"KenBurns\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare keyframes: KenBurnsKeyframesItem[];\n\tpublic declare motionBlurSize: number;\n\tpublic declare movementStyle: \"spline\" | \"direct\";\n\tpublic declare aspectRatio:\n\t\t| \"input\"\n\t\t| \"16:9\"\n\t\t| \"9:16\"\n\t\t| \"21:9\"\n\t\t| \"9:21\"\n\t\t| \"1:1\"\n\t\t| \"4:3\"\n\t\t| \"3:2\"\n\t\t| \"2:3\"\n\t\t| \"4:5\"\n\t\t| \"5:4\";\n\n\tconstructor(config: KenBurnsProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"KenBurns\", kenBurnsDefaults, config, effectMeta.KenBurns),\n\t\t);\n\t}\n}\n\nexport interface LayerStyleProps {\n\t/**\n\t * @default {\"enabled\":false,\"color\":\"#000000\",\"opacity\":0.75,\"angle\":120,\"distance\":10,\"spread\":0,\"size\":10,\"blendMode\":\"multiply\"}\n\t */\n\tdropShadow?: Partial<LayerStyleDropShadow>;\n\t/**\n\t * @default {\"enabled\":false,\"color\":\"#000000\",\"opacity\":0.75,\"angle\":120,\"distance\":5,\"choke\":0,\"size\":5,\"blendMode\":\"multiply\"}\n\t */\n\tinnerShadow?: Partial<LayerStyleInnerShadow>;\n\t/**\n\t * @default {\"enabled\":false,\"color\":\"#ffffff\",\"opacity\":0.75,\"size\":15,\"spread\":0,\"blendMode\":\"screen\"}\n\t */\n\touterGlow?: Partial<LayerStyleOuterGlow>;\n\t/**\n\t * @default {\"enabled\":false,\"color\":\"#ffffff\",\"opacity\":0.75,\"size\":15,\"spread\":0,\"blendMode\":\"screen\"}\n\t */\n\tinnerGlow?: Partial<LayerStyleInnerGlow>;\n\t/**\n\t * @default {\"enabled\":false,\"size\":2,\"position\":\"outside\",\"color\":\"#ffffff\",\"opacity\":1,\"blendMode\":\"normal\"}\n\t */\n\tstroke?: Partial<LayerStyleStroke>;\n\t/**\n\t * @default {\"enabled\":false,\"style\":\"InnerBevel\",\"technique\":\"Smooth\",\"depth\":100,\"direction\":\"Up\",\"size\":5,\"soften\":0,\"angle\":120,\"altitude\":30,\"highlightColor\":\"#ffffff\",\"highlightOpacity\":0.75,\"shadowColor\":\"#000000\",\"shadowOpacity\":0.75}\n\t */\n\tbevelEmboss?: Partial<LayerStyleBevelEmboss>;\n\t/**\n\t * @default {\"enabled\":false,\"color\":\"#ff0000\",\"opacity\":1,\"blendMode\":\"normal\"}\n\t */\n\tcolorOverlay?: Partial<LayerStyleColorOverlay>;\n\tdropShadowAngleHandleId?: string | null;\n\tdropShadowDistanceHandleId?: string | null;\n\tdropShadowSpreadHandleId?: string | null;\n\tdropShadowSizeHandleId?: string | null;\n\tdropShadowOpacityHandleId?: string | null;\n\tinnerShadowAngleHandleId?: string | null;\n\tinnerShadowDistanceHandleId?: string | null;\n\tinnerShadowChokeHandleId?: string | null;\n\tinnerShadowSizeHandleId?: string | null;\n\tinnerShadowOpacityHandleId?: string | null;\n\touterGlowSizeHandleId?: string | null;\n\touterGlowSpreadHandleId?: string | null;\n\touterGlowOpacityHandleId?: string | null;\n\tinnerGlowSizeHandleId?: string | null;\n\tinnerGlowSpreadHandleId?: string | null;\n\tinnerGlowOpacityHandleId?: string | null;\n\tstrokeSizeHandleId?: string | null;\n\tstrokeOpacityHandleId?: string | null;\n\tbevelEmbossDepthHandleId?: string | null;\n\tbevelEmbossSizeHandleId?: string | null;\n\tbevelEmbossSoftenHandleId?: string | null;\n\tbevelEmbossAngleHandleId?: string | null;\n\tbevelEmbossAltitudeHandleId?: string | null;\n\tbevelEmbossHighlightOpacityHandleId?: string | null;\n\tbevelEmbossShadowOpacityHandleId?: string | null;\n\tcolorOverlayOpacityHandleId?: string | null;\n}\n\nconst layerStyleDefaults: LayerStyleProps = {\n\tdropShadow: {\n\t\tenabled: false,\n\t\tcolor: \"#000000\",\n\t\topacity: 0.75,\n\t\tangle: 120,\n\t\tdistance: 10,\n\t\tspread: 0,\n\t\tsize: 10,\n\t\tblendMode: \"multiply\",\n\t},\n\tinnerShadow: {\n\t\tenabled: false,\n\t\tcolor: \"#000000\",\n\t\topacity: 0.75,\n\t\tangle: 120,\n\t\tdistance: 5,\n\t\tchoke: 0,\n\t\tsize: 5,\n\t\tblendMode: \"multiply\",\n\t},\n\touterGlow: {\n\t\tenabled: false,\n\t\tcolor: \"#ffffff\",\n\t\topacity: 0.75,\n\t\tsize: 15,\n\t\tspread: 0,\n\t\tblendMode: \"screen\",\n\t},\n\tinnerGlow: {\n\t\tenabled: false,\n\t\tcolor: \"#ffffff\",\n\t\topacity: 0.75,\n\t\tsize: 15,\n\t\tspread: 0,\n\t\tblendMode: \"screen\",\n\t},\n\tstroke: {\n\t\tenabled: false,\n\t\tsize: 2,\n\t\tposition: \"outside\",\n\t\tcolor: \"#ffffff\",\n\t\topacity: 1,\n\t\tblendMode: \"normal\",\n\t},\n\tbevelEmboss: {\n\t\tenabled: false,\n\t\tstyle: \"InnerBevel\",\n\t\ttechnique: \"Smooth\",\n\t\tdepth: 100,\n\t\tdirection: \"Up\",\n\t\tsize: 5,\n\t\tsoften: 0,\n\t\tangle: 120,\n\t\taltitude: 30,\n\t\thighlightColor: \"#ffffff\",\n\t\thighlightOpacity: 0.75,\n\t\tshadowColor: \"#000000\",\n\t\tshadowOpacity: 0.75,\n\t},\n\tcolorOverlay: {\n\t\tenabled: false,\n\t\tcolor: \"#ff0000\",\n\t\topacity: 1,\n\t\tblendMode: \"normal\",\n\t},\n};\n\nexport class LayerStyle extends Effect<\n\tLayerStyleProps,\n\t\"LayerStyle\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"LayerStyle\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare dropShadow: Partial<LayerStyleDropShadow>;\n\tpublic declare innerShadow: Partial<LayerStyleInnerShadow>;\n\tpublic declare outerGlow: Partial<LayerStyleOuterGlow>;\n\tpublic declare innerGlow: Partial<LayerStyleInnerGlow>;\n\tpublic declare stroke: Partial<LayerStyleStroke>;\n\tpublic declare bevelEmboss: Partial<LayerStyleBevelEmboss>;\n\tpublic declare colorOverlay: Partial<LayerStyleColorOverlay>;\n\tpublic declare dropShadowAngleHandleId: string | null | undefined;\n\tpublic declare dropShadowDistanceHandleId: string | null | undefined;\n\tpublic declare dropShadowSpreadHandleId: string | null | undefined;\n\tpublic declare dropShadowSizeHandleId: string | null | undefined;\n\tpublic declare dropShadowOpacityHandleId: string | null | undefined;\n\tpublic declare innerShadowAngleHandleId: string | null | undefined;\n\tpublic declare innerShadowDistanceHandleId: string | null | undefined;\n\tpublic declare innerShadowChokeHandleId: string | null | undefined;\n\tpublic declare innerShadowSizeHandleId: string | null | undefined;\n\tpublic declare innerShadowOpacityHandleId: string | null | undefined;\n\tpublic declare outerGlowSizeHandleId: string | null | undefined;\n\tpublic declare outerGlowSpreadHandleId: string | null | undefined;\n\tpublic declare outerGlowOpacityHandleId: string | null | undefined;\n\tpublic declare innerGlowSizeHandleId: string | null | undefined;\n\tpublic declare innerGlowSpreadHandleId: string | null | undefined;\n\tpublic declare innerGlowOpacityHandleId: string | null | undefined;\n\tpublic declare strokeSizeHandleId: string | null | undefined;\n\tpublic declare strokeOpacityHandleId: string | null | undefined;\n\tpublic declare bevelEmbossDepthHandleId: string | null | undefined;\n\tpublic declare bevelEmbossSizeHandleId: string | null | undefined;\n\tpublic declare bevelEmbossSoftenHandleId: string | null | undefined;\n\tpublic declare bevelEmbossAngleHandleId: string | null | undefined;\n\tpublic declare bevelEmbossAltitudeHandleId: string | null | undefined;\n\tpublic declare bevelEmbossHighlightOpacityHandleId: string | null | undefined;\n\tpublic declare bevelEmbossShadowOpacityHandleId: string | null | undefined;\n\tpublic declare colorOverlayOpacityHandleId: string | null | undefined;\n\n\tconstructor(config: LayerStyleProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"LayerStyle\",\n\t\t\t\tlayerStyleDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.LayerStyle,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface LiquifyProps {\n\t/**\n\t * List of localized liquify deformation operations.\n\t * @default []\n\t */\n\toperations?: LiquifyOperationsItem[];\n}\n\nconst liquifyDefaults: LiquifyProps = {\n\toperations: [],\n};\n\nexport class Liquify extends Effect<LiquifyProps, \"Liquify\", \"visual\"> {\n\tpublic readonly op = \"Liquify\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare operations: LiquifyOperationsItem[];\n\n\tconstructor(config: LiquifyProps = {}) {\n\t\tsuper(withDefaults(\"Liquify\", liquifyDefaults, config, effectMeta.Liquify));\n\t}\n}\n\nexport interface MaskMathProps {\n\t/**\n\t * Morphological or Boolean set operation applied to input alpha masks.\n\t * @default \"Union\"\n\t */\n\toperation?:\n\t\t| \"Union\"\n\t\t| \"Intersect\"\n\t\t| \"Subtract\"\n\t\t| \"Difference\"\n\t\t| \"Invert\"\n\t\t| \"Dilate\"\n\t\t| \"Erode\"\n\t\t| \"Choke\"\n\t\t| \"Feather\";\n\t/**\n\t * Kernel radius in pixels for Dilate, Erode, Choke, or Feather operations.\n\t * Range 0 to 200. Accepts a signal.\n\t * @default 0\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Cutoff threshold level (0.0–1.0) for binarization step or non-linear choke.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tthreshold?: EffectProp<number>;\n\t/**\n\t * Minimum alpha matte cutoff limit (0.0–1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tclampMin?: EffectProp<number>;\n\t/**\n\t * Maximum alpha matte cutoff limit (0.0–1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\tclampMax?: EffectProp<number>;\n\t/**\n\t * Source channel to extract mask from Mask A (Alpha, Luminance, Red, Green, Blue).\n\t * @default \"Alpha\"\n\t */\n\tchannelA?: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\t/**\n\t * Source channel to extract mask from Mask B (Alpha, Luminance, Red, Green, Blue).\n\t * @default \"Alpha\"\n\t */\n\tchannelB?: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\t/**\n\t * When enabled, outputs crisp 1-bit binary matte based on threshold.\n\t * @default false\n\t */\n\tbinarize?: boolean;\n\t/**\n\t * Inverts final matte output.\n\t * @default false\n\t */\n\tinvertResult?: boolean;\n\t/**\n\t * WhiteWithAlpha (rgba(1,1,1,a)), GrayscaleRGB (rgba(a,a,a,1)), AlphaOnly (rgba(0,0,0,a)), PassthroughRGB (Mask A RGB with new alpha).\n\t * @default \"WhiteWithAlpha\"\n\t */\n\toutputFormat?:\n\t\t| \"WhiteWithAlpha\"\n\t\t| \"GrayscaleRGB\"\n\t\t| \"AlphaOnly\"\n\t\t| \"PassthroughRGB\";\n}\n\nconst maskMathDefaults: MaskMathProps = {\n\toperation: \"Union\",\n\tradius: 0,\n\tthreshold: 0.5,\n\tclampMin: 0,\n\tclampMax: 1,\n\tchannelA: \"Alpha\",\n\tchannelB: \"Alpha\",\n\tbinarize: false,\n\tinvertResult: false,\n\toutputFormat: \"WhiteWithAlpha\",\n};\n\nexport class MaskMath extends Effect<MaskMathProps, \"MaskMath\", \"visual\"> {\n\tpublic readonly op = \"MaskMath\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare operation:\n\t\t| \"Union\"\n\t\t| \"Intersect\"\n\t\t| \"Subtract\"\n\t\t| \"Difference\"\n\t\t| \"Invert\"\n\t\t| \"Dilate\"\n\t\t| \"Erode\"\n\t\t| \"Choke\"\n\t\t| \"Feather\";\n\tpublic declare radius: number;\n\tpublic declare threshold: number;\n\tpublic declare clampMin: number;\n\tpublic declare clampMax: number;\n\tpublic declare channelA: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\tpublic declare channelB: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\tpublic declare binarize: boolean;\n\tpublic declare invertResult: boolean;\n\tpublic declare outputFormat:\n\t\t| \"WhiteWithAlpha\"\n\t\t| \"GrayscaleRGB\"\n\t\t| \"AlphaOnly\"\n\t\t| \"PassthroughRGB\";\n\n\tconstructor(config: MaskMathProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"MaskMath\", maskMathDefaults, config, effectMeta.MaskMath),\n\t\t);\n\t}\n}\n\nexport interface MeshWarpProps {\n\t/**\n\t * Range 2 to 12.\n\t * @default 3\n\t */\n\tcols?: number;\n\t/**\n\t * Range 2 to 12.\n\t * @default 3\n\t */\n\trows?: number;\n\tpoints?: MeshWarpPointsItem[];\n}\n\nconst meshWarpDefaults: MeshWarpProps = {\n\tcols: 3,\n\trows: 3,\n};\n\nexport class MeshWarp extends Effect<MeshWarpProps, \"MeshWarp\", \"visual\"> {\n\tpublic readonly op = \"MeshWarp\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare cols: number;\n\tpublic declare rows: number;\n\tpublic declare points: MeshWarpPointsItem[] | undefined;\n\n\tconstructor(config: MeshWarpProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"MeshWarp\", meshWarpDefaults, config, effectMeta.MeshWarp),\n\t\t);\n\t}\n}\n\nexport interface NoiseGeneratorProps {\n\t/**\n\t * Noise Type\n\t * @default \"Perlin\"\n\t */\n\tnoiseType?: \"Perlin\" | \"Simplex\" | \"Voronoi\";\n\t/**\n\t * Output Type\n\t * @default \"Image\"\n\t */\n\toutputType?: \"Image\" | \"Video\";\n\t/**\n\t * Width\n\t * Range 16 to 4096.\n\t * @default 512\n\t */\n\twidth?: number;\n\t/**\n\t * Height\n\t * Range 16 to 4096.\n\t * @default 512\n\t */\n\theight?: number;\n\t/**\n\t * Scale of the noise pattern. Can be modulated by a static number or a dynamic signal.\n\t * Range 0.1 to 100. Accepts a signal.\n\t * @default 10\n\t */\n\tscale?: EffectProp<number>;\n\t/**\n\t * Fractal detail depth of the noise.\n\t * Range 1 to 8. Accepts a signal.\n\t * @default 4\n\t */\n\toctaves?: EffectProp<number>;\n\t/**\n\t * Roughness multiplier for each fractal octave.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tpersistence?: EffectProp<number>;\n\t/**\n\t * Frequency spacing multiplier for each fractal octave.\n\t * Range 1 to 4. Accepts a signal.\n\t * @default 2\n\t */\n\tlacunarity?: EffectProp<number>;\n\t/**\n\t * Speed of time-based noise animation in Video mode.\n\t * Range 0 to 10. Accepts a signal.\n\t * @default 1\n\t */\n\tspeed?: EffectProp<number>;\n\t/**\n\t * Color Start\n\t * @default \"#000000\"\n\t */\n\tcolorStart?: string;\n\t/**\n\t * Color End\n\t * @default \"#ffffff\"\n\t */\n\tcolorEnd?: string;\n\t/**\n\t * Duration (ms)\n\t * Range 1 to 60000.\n\t * @default 5000\n\t */\n\tdurationMs?: number;\n\t/**\n\t * FPS\n\t * Range 1 to 120.\n\t * @default 30\n\t */\n\tfps?: number;\n}\n\nconst noiseGeneratorDefaults: NoiseGeneratorProps = {\n\tnoiseType: \"Perlin\",\n\toutputType: \"Image\",\n\twidth: 512,\n\theight: 512,\n\tscale: 10,\n\toctaves: 4,\n\tpersistence: 0.5,\n\tlacunarity: 2,\n\tspeed: 1,\n\tcolorStart: \"#000000\",\n\tcolorEnd: \"#ffffff\",\n\tdurationMs: 5000,\n\tfps: 30,\n};\n\nexport class NoiseGenerator extends Effect<\n\tNoiseGeneratorProps,\n\t\"NoiseGenerator\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"NoiseGenerator\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare noiseType: \"Perlin\" | \"Simplex\" | \"Voronoi\";\n\tpublic declare outputType: \"Image\" | \"Video\";\n\tpublic declare width: number;\n\tpublic declare height: number;\n\tpublic declare scale: number;\n\tpublic declare octaves: number;\n\tpublic declare persistence: number;\n\tpublic declare lacunarity: number;\n\tpublic declare speed: number;\n\tpublic declare colorStart: string;\n\tpublic declare colorEnd: string;\n\tpublic declare durationMs: number;\n\tpublic declare fps: number;\n\n\tconstructor(config: NoiseGeneratorProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"NoiseGenerator\",\n\t\t\t\tnoiseGeneratorDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.NoiseGenerator,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface OpArtProps {\n\t/**\n\t * Line pattern.\n\t * @default \"stripes\"\n\t */\n\tpattern?: \"stripes\" | \"rings\" | \"checker\" | \"waves\";\n\t/**\n\t * Lines across the height.\n\t * Range 2 to 300. Accepts a signal.\n\t * @default 48\n\t */\n\tfrequency?: EffectProp<number>;\n\t/**\n\t * Pattern angle, degrees.\n\t * Range -360 to 360. Accepts a signal.\n\t * @default 0\n\t */\n\tangle?: EffectProp<number>;\n\t/**\n\t * How far brightness bends the lines.\n\t * Range 0 to 3. Accepts a signal.\n\t * @default 0.6\n\t */\n\twarp?: EffectProp<number>;\n\t/**\n\t * How much darks thicken the lines (0 = even lines).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\tsource?: EffectProp<number>;\n\t/**\n\t * Line color.\n\t * @default \"#0a0a0a\"\n\t */\n\tcolorA?: string;\n\t/**\n\t * Gap color.\n\t * @default \"#f5f5f5\"\n\t */\n\tcolorB?: string;\n}\n\nconst opArtDefaults: OpArtProps = {\n\tpattern: \"stripes\",\n\tfrequency: 48,\n\tangle: 0,\n\twarp: 0.6,\n\tsource: 1,\n\tcolorA: \"#0a0a0a\",\n\tcolorB: \"#f5f5f5\",\n};\n\nexport class OpArt extends Effect<OpArtProps, \"OpArt\", \"visual\"> {\n\tpublic readonly op = \"OpArt\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare pattern: \"stripes\" | \"rings\" | \"checker\" | \"waves\";\n\tpublic declare frequency: number;\n\tpublic declare angle: number;\n\tpublic declare warp: number;\n\tpublic declare source: number;\n\tpublic declare colorA: string;\n\tpublic declare colorB: string;\n\n\tconstructor(config: OpArtProps = {}) {\n\t\tsuper(withDefaults(\"OpArt\", opArtDefaults, config, effectMeta.OpArt));\n\t}\n}\n\nexport interface PaintProps {\n\t/**\n\t * Range 1 to 16384.\n\t * @default 1080\n\t */\n\twidth?: number;\n\t/**\n\t * Range 1 to 16384.\n\t * @default 1080\n\t */\n\theight?: number;\n\t/**\n\t * @default true\n\t */\n\tmaintainAspect?: boolean;\n\taspectRatio?: number;\n\t/**\n\t * @default \"#ffffff\"\n\t */\n\tbackgroundColor?: string;\n\tstrokes?: (\n\t\t| PaintStrokesItemOption1\n\t\t| PaintStrokesItemOption2\n\t\t| PaintStrokesItemOption3\n\t)[];\n}\n\nconst paintDefaults: PaintProps = {\n\twidth: 1080,\n\theight: 1080,\n\tmaintainAspect: true,\n\tbackgroundColor: \"#ffffff\",\n};\n\nexport class Paint extends Effect<PaintProps, \"Paint\", \"visual\"> {\n\tpublic readonly op = \"Paint\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare width: number;\n\tpublic declare height: number;\n\tpublic declare maintainAspect: boolean;\n\tpublic declare aspectRatio: number | undefined;\n\tpublic declare backgroundColor: string;\n\tpublic declare strokes:\n\t\t| (\n\t\t\t\t| PaintStrokesItemOption1\n\t\t\t\t| PaintStrokesItemOption2\n\t\t\t\t| PaintStrokesItemOption3\n\t\t )[]\n\t\t| undefined;\n\n\tconstructor(config: PaintProps = {}) {\n\t\tsuper(withDefaults(\"Paint\", paintDefaults, config, effectMeta.Paint));\n\t}\n}\n\nexport interface PainterlyProps {\n\t/**\n\t * Oil (dense strokes) or watercolor (wet edges, paper).\n\t * @default \"oil\"\n\t */\n\tstyle?: \"oil\" | \"watercolor\";\n\t/**\n\t * Brush size, px.\n\t * Range 2 to 12. Accepts a signal.\n\t * @default 5\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Watercolor: pigment pooling at patch edges.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tedgeDarkening?: EffectProp<number>;\n\t/**\n\t * Paper / canvas grain.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.3\n\t */\n\tpaper?: EffectProp<number>;\n\t/**\n\t * Color saturation.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 1.05\n\t */\n\tsaturation?: EffectProp<number>;\n}\n\nconst painterlyDefaults: PainterlyProps = {\n\tstyle: \"oil\",\n\tradius: 5,\n\tedgeDarkening: 0.5,\n\tpaper: 0.3,\n\tsaturation: 1.05,\n};\n\nexport class Painterly extends Effect<PainterlyProps, \"Painterly\", \"visual\"> {\n\tpublic readonly op = \"Painterly\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare style: \"oil\" | \"watercolor\";\n\tpublic declare radius: number;\n\tpublic declare edgeDarkening: number;\n\tpublic declare paper: number;\n\tpublic declare saturation: number;\n\n\tconstructor(config: PainterlyProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"Painterly\",\n\t\t\t\tpainterlyDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.Painterly,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface PatchHealProps {\n\t/** List of patch healing operations applied sequentially. */\n\tpatches?: PatchHealPatchesItem[];\n\t/**\n\t * Horizontal normalized position of destination patch (0.0 to 1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterX?: EffectProp<number>;\n\t/**\n\t * Vertical normalized position of destination patch (0.0 to 1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterY?: EffectProp<number>;\n\t/**\n\t * Horizontal pixel distance from destination to sample source patch.\n\t * Range -4096 to 4096. Accepts a signal.\n\t * @default 50\n\t */\n\toffsetX?: EffectProp<number>;\n\t/**\n\t * Vertical pixel distance from destination to sample source patch.\n\t * Range -4096 to 4096. Accepts a signal.\n\t * @default 0\n\t */\n\toffsetY?: EffectProp<number>;\n\t/**\n\t * Radius of the destination circular patch in pixels (used when no explicit Mask input is connected).\n\t * Range 1 to 500. Accepts a signal.\n\t * @default 25\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Radius of the source sample circular patch in pixels.\n\t * Range 1 to 500. Accepts a signal.\n\t * @default 25\n\t */\n\tsourceRadius?: EffectProp<number>;\n\t/**\n\t * Softness edge falloff percentage (0–100%).\n\t * Range 0 to 100. Accepts a signal.\n\t * @default 50\n\t */\n\tfeather?: EffectProp<number>;\n\t/**\n\t * Blending opacity of the healed patch (0.0–1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\topacity?: EffectProp<number>;\n\t/**\n\t * Healing algorithm: Clone (direct stamp), SeamlessHeal (Poisson color/lighting blend), TextureTransfer (luminance structure matching).\n\t * @default \"SeamlessHeal\"\n\t */\n\tmode?: \"Clone\" | \"SeamlessHeal\" | \"TextureTransfer\";\n}\n\nconst patchHealDefaults: PatchHealProps = {\n\tcenterX: 0.5,\n\tcenterY: 0.5,\n\toffsetX: 50,\n\toffsetY: 0,\n\tradius: 25,\n\tsourceRadius: 25,\n\tfeather: 50,\n\topacity: 1,\n\tmode: \"SeamlessHeal\",\n};\n\nexport class PatchHeal extends Effect<PatchHealProps, \"PatchHeal\", \"visual\"> {\n\tpublic readonly op = \"PatchHeal\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare patches: PatchHealPatchesItem[] | undefined;\n\tpublic declare centerX: number;\n\tpublic declare centerY: number;\n\tpublic declare offsetX: number;\n\tpublic declare offsetY: number;\n\tpublic declare radius: number;\n\tpublic declare sourceRadius: number;\n\tpublic declare feather: number;\n\tpublic declare opacity: number;\n\tpublic declare mode: \"Clone\" | \"SeamlessHeal\" | \"TextureTransfer\";\n\n\tconstructor(config: PatchHealProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"PatchHeal\",\n\t\t\t\tpatchHealDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.PatchHeal,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface PixelateProps {\n\t/**\n\t * Cell size, px.\n\t * Range 1 to 256. Accepts a signal.\n\t * @default 12\n\t */\n\tsize?: EffectProp<number>;\n\t/**\n\t * Cell shape: square pixels, round LEDs or diamonds.\n\t * @default \"square\"\n\t */\n\tshape?: \"square\" | \"circle\" | \"diamond\";\n\t/**\n\t * Space between cells, as a fraction of a cell (0 = touching).\n\t * Range 0 to 0.9. Accepts a signal.\n\t * @default 0\n\t */\n\tgap?: EffectProp<number>;\n}\n\nconst pixelateDefaults: PixelateProps = {\n\tsize: 12,\n\tshape: \"square\",\n\tgap: 0,\n};\n\nexport class Pixelate extends Effect<PixelateProps, \"Pixelate\", \"visual\"> {\n\tpublic readonly op = \"Pixelate\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare size: number;\n\tpublic declare shape: \"square\" | \"circle\" | \"diamond\";\n\tpublic declare gap: number;\n\n\tconstructor(config: PixelateProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"Pixelate\", pixelateDefaults, config, effectMeta.Pixelate),\n\t\t);\n\t}\n}\n\nexport interface PosterizeProps {\n\t/**\n\t * Steps per channel when no palette is set.\n\t * Range 2 to 64. Accepts a signal.\n\t * @default 6\n\t */\n\tlevels?: EffectProp<number>;\n\t/**\n\t * Snap to a retro palette, or `custom` to use `colors`.\n\t * @default \"none\"\n\t */\n\tpalette?:\n\t\t| \"none\"\n\t\t| \"gameboy\"\n\t\t| \"teletext\"\n\t\t| \"cga\"\n\t\t| \"pico8\"\n\t\t| \"c64\"\n\t\t| \"grayscale\"\n\t\t| \"sepia\"\n\t\t| \"custom\";\n\t/**\n\t * Your palette (up to 16 hex colors), used when `palette` is `custom`.\n\t * @default []\n\t */\n\tcolors?: string[];\n\t/**\n\t * Ordered (Bayer) dithering between steps, 0–1.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tdither?: EffectProp<number>;\n\t/**\n\t * Pixel size, px: above 1 for pixel art.\n\t * Range 1 to 64. Accepts a signal.\n\t * @default 1\n\t */\n\tpixelSize?: EffectProp<number>;\n}\n\nconst posterizeDefaults: PosterizeProps = {\n\tlevels: 6,\n\tpalette: \"none\",\n\tcolors: [],\n\tdither: 0,\n\tpixelSize: 1,\n};\n\nexport class Posterize extends Effect<PosterizeProps, \"Posterize\", \"visual\"> {\n\tpublic readonly op = \"Posterize\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare levels: number;\n\tpublic declare palette:\n\t\t| \"none\"\n\t\t| \"gameboy\"\n\t\t| \"teletext\"\n\t\t| \"cga\"\n\t\t| \"pico8\"\n\t\t| \"c64\"\n\t\t| \"grayscale\"\n\t\t| \"sepia\"\n\t\t| \"custom\";\n\tpublic declare colors: string[];\n\tpublic declare dither: number;\n\tpublic declare pixelSize: number;\n\n\tconstructor(config: PosterizeProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"Posterize\",\n\t\t\t\tposterizeDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.Posterize,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ProceduralVFXProps {\n\t/**\n\t * Which procedural particle / light effect to synthesize.\n\t * @default \"Smoke\"\n\t */\n\teffectType?:\n\t\t| \"Smoke\"\n\t\t| \"Fire\"\n\t\t| \"Rain\"\n\t\t| \"Sparks\"\n\t\t| \"Snow\"\n\t\t| \"Dust\"\n\t\t| \"Lightning\"\n\t\t| \"Magic\"\n\t\t| \"LensFlare\"\n\t\t| \"Embers\"\n\t\t| \"EnergyBeam\"\n\t\t| \"Aurora\";\n\t/**\n\t * Image renders a static frame; Video animates over time.\n\t * @default \"Video\"\n\t */\n\toutputType?: \"Image\" | \"Video\";\n\t/**\n\t * Width\n\t * Range 16 to 4096.\n\t * @default 1080\n\t */\n\twidth?: number;\n\t/**\n\t * Height\n\t * Range 16 to 4096.\n\t * @default 1080\n\t */\n\theight?: number;\n\t/**\n\t * Amount of particles / coverage of the effect. Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.6\n\t */\n\tdensity?: EffectProp<number>;\n\t/**\n\t * Spatial frequency / particle size of the effect. Can be modulated by a signal.\n\t * Range 0.001 to 10. Accepts a signal.\n\t * @default 0.01\n\t */\n\tscale?: EffectProp<number>;\n\t/**\n\t * Animation speed in Video mode. Can be modulated by a signal.\n\t * Range 0 to 10. Accepts a signal.\n\t * @default 1\n\t */\n\tspeed?: EffectProp<number>;\n\t/**\n\t * Brightness / alpha gain of the effect. Can be modulated by a signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.8\n\t */\n\tintensity?: EffectProp<number>;\n\t/**\n\t * Deterministic shuffle of the random pattern. Can be modulated by a signal.\n\t * Range 0 to 1000000. Accepts a signal.\n\t * @default 1234\n\t */\n\tseed?: EffectProp<number>;\n\t/**\n\t * Color Start\n\t * @default \"#ffffff\"\n\t */\n\tcolorStart?: string;\n\t/**\n\t * Color End\n\t * @default \"#ff5500\"\n\t */\n\tcolorEnd?: string;\n\t/**\n\t * Duration (ms)\n\t * Range 100 to 100000.\n\t * @default 5000\n\t */\n\tdurationMs?: number;\n\t/**\n\t * FPS\n\t * Range 1 to 120.\n\t * @default 30\n\t */\n\tfps?: number;\n}\n\nconst proceduralVFXDefaults: ProceduralVFXProps = {\n\teffectType: \"Smoke\",\n\toutputType: \"Video\",\n\twidth: 1080,\n\theight: 1080,\n\tdensity: 0.6,\n\tscale: 0.01,\n\tspeed: 1,\n\tintensity: 0.8,\n\tseed: 1234,\n\tcolorStart: \"#ffffff\",\n\tcolorEnd: \"#ff5500\",\n\tdurationMs: 5000,\n\tfps: 30,\n};\n\nexport class ProceduralVFX extends Effect<\n\tProceduralVFXProps,\n\t\"ProceduralVFX\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ProceduralVFX\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare effectType:\n\t\t| \"Smoke\"\n\t\t| \"Fire\"\n\t\t| \"Rain\"\n\t\t| \"Sparks\"\n\t\t| \"Snow\"\n\t\t| \"Dust\"\n\t\t| \"Lightning\"\n\t\t| \"Magic\"\n\t\t| \"LensFlare\"\n\t\t| \"Embers\"\n\t\t| \"EnergyBeam\"\n\t\t| \"Aurora\";\n\tpublic declare outputType: \"Image\" | \"Video\";\n\tpublic declare width: number;\n\tpublic declare height: number;\n\tpublic declare density: number;\n\tpublic declare scale: number;\n\tpublic declare speed: number;\n\tpublic declare intensity: number;\n\tpublic declare seed: number;\n\tpublic declare colorStart: string;\n\tpublic declare colorEnd: string;\n\tpublic declare durationMs: number;\n\tpublic declare fps: number;\n\n\tconstructor(config: ProceduralVFXProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ProceduralVFX\",\n\t\t\t\tproceduralVFXDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ProceduralVFX,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface RefineEdgeProps {\n\t/**\n\t * Amount of edge color spill decontamination/defringing (0.0–1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.7\n\t */\n\tdecontaminateAmount?: EffectProp<number>;\n\t/**\n\t * Radius in pixels around alpha transitions to refine and decontaminate.\n\t * Range 0.5 to 50. Accepts a signal.\n\t * @default 2\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Matte edge smoothing curve intensity (0–100).\n\t * Range 0 to 100. Accepts a signal.\n\t * @default 5\n\t */\n\tsmooth?: EffectProp<number>;\n\t/**\n\t * Sub-pixel gaussian softness along the matte boundary.\n\t * Range 0 to 50. Accepts a signal.\n\t * @default 0.5\n\t */\n\tfeather?: EffectProp<number>;\n\t/**\n\t * Contract (<0) or expand (>0) the edge boundary (-100% to +100%).\n\t * Range -100 to 100. Accepts a signal.\n\t * @default 0\n\t */\n\tshiftEdge?: EffectProp<number>;\n\t/**\n\t * Channel to extract matte from (Alpha, Luminance, Red, Green, Blue).\n\t * @default \"Alpha\"\n\t */\n\tmatteChannel?: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\t/**\n\t * Composite (decontaminated RGB + refined alpha), MatteOnly (grayscale mask), DecontaminatedRGB (clean RGB with full alpha).\n\t * @default \"Composite\"\n\t */\n\toutputMode?: \"Composite\" | \"MatteOnly\" | \"DecontaminatedRGB\";\n}\n\nconst refineEdgeDefaults: RefineEdgeProps = {\n\tdecontaminateAmount: 0.7,\n\tradius: 2,\n\tsmooth: 5,\n\tfeather: 0.5,\n\tshiftEdge: 0,\n\tmatteChannel: \"Alpha\",\n\toutputMode: \"Composite\",\n};\n\nexport class RefineEdge extends Effect<\n\tRefineEdgeProps,\n\t\"RefineEdge\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"RefineEdge\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare decontaminateAmount: number;\n\tpublic declare radius: number;\n\tpublic declare smooth: number;\n\tpublic declare feather: number;\n\tpublic declare shiftEdge: number;\n\tpublic declare matteChannel: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\tpublic declare outputMode: \"Composite\" | \"MatteOnly\" | \"DecontaminatedRGB\";\n\n\tconstructor(config: RefineEdgeProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"RefineEdge\",\n\t\t\t\trefineEdgeDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.RefineEdge,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface RefractionCaustics3DProps {\n\t/**\n\t * Index of Refraction (1.0=Air, 1.33=Water, 1.52=Crown Glass, 2.42=Diamond). Controls ray bending according to Snell's Law.\n\t * Range 1 to 2.5. Accepts a signal.\n\t * @default 1.52\n\t */\n\tior?: EffectProp<number>;\n\t/**\n\t * Chromatic dispersion (RGB wavelength splitting) creating prismatic rainbow fringing.\n\t * Range 0 to 0.2. Accepts a signal.\n\t * @default 0.04\n\t */\n\tdispersion?: EffectProp<number>;\n\t/**\n\t * Depth displacement scale and effective glass thickness factor.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 0.5\n\t */\n\trefractionScale?: EffectProp<number>;\n\t/**\n\t * Brightness multiplier for photometric caustic light rays focusing through curved glass.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 0.6\n\t */\n\tcausticBrightness?: EffectProp<number>;\n\t/**\n\t * Spatial frequency scale of photometric caustic patterns.\n\t * Range 0.1 to 5. Accepts a signal.\n\t * @default 1\n\t */\n\tcausticScale?: EffectProp<number>;\n\t/**\n\t * Dynamic liquid wave perturbation strength across the refractive surface.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tfluidRipples?: EffectProp<number>;\n\t/**\n\t * Speed of dynamic fluid wave animation.\n\t * Range 0 to 5. Accepts a signal.\n\t * @default 1\n\t */\n\trippleSpeed?: EffectProp<number>;\n\t/**\n\t * Microfacet frosted glass roughness and optical diffusion blur.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\troughness?: EffectProp<number>;\n\t/**\n\t * Fresnel specular reflection gleam intensity.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 0.8\n\t */\n\tspecularIntensity?: EffectProp<number>;\n\t/**\n\t * Horizontal normalized coordinate (0.0 to 1.0) of incident light source.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tlightPosX?: EffectProp<number>;\n\t/**\n\t * Vertical normalized coordinate (0.0 to 1.0) of incident light source.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.2\n\t */\n\tlightPosY?: EffectProp<number>;\n\t/**\n\t * Internal glass color tint and absorption.\n\t * @default \"#ffffff\"\n\t */\n\ttintColor?: string;\n\t/**\n\t * Strength of internal glass color tint absorption.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\ttintStrength?: EffectProp<number>;\n\t/**\n\t * Invert depth polarity (white = near vs black = near).\n\t * @default false\n\t */\n\tdepthInvert?: boolean;\n\t/**\n\t * Height-field surface normal extrusion exaggeration.\n\t * Range 0.1 to 5. Accepts a signal.\n\t * @default 1\n\t */\n\tdepthScale?: EffectProp<number>;\n}\n\nconst refractionCaustics3DDefaults: RefractionCaustics3DProps = {\n\tior: 1.52,\n\tdispersion: 0.04,\n\trefractionScale: 0.5,\n\tcausticBrightness: 0.6,\n\tcausticScale: 1,\n\tfluidRipples: 0,\n\trippleSpeed: 1,\n\troughness: 0,\n\tspecularIntensity: 0.8,\n\tlightPosX: 0.5,\n\tlightPosY: 0.2,\n\ttintColor: \"#ffffff\",\n\ttintStrength: 0,\n\tdepthInvert: false,\n\tdepthScale: 1,\n};\n\nexport class RefractionCaustics3D extends Effect<\n\tRefractionCaustics3DProps,\n\t\"RefractionCaustics3D\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"RefractionCaustics3D\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare ior: number;\n\tpublic declare dispersion: number;\n\tpublic declare refractionScale: number;\n\tpublic declare causticBrightness: number;\n\tpublic declare causticScale: number;\n\tpublic declare fluidRipples: number;\n\tpublic declare rippleSpeed: number;\n\tpublic declare roughness: number;\n\tpublic declare specularIntensity: number;\n\tpublic declare lightPosX: number;\n\tpublic declare lightPosY: number;\n\tpublic declare tintColor: string;\n\tpublic declare tintStrength: number;\n\tpublic declare depthInvert: boolean;\n\tpublic declare depthScale: number;\n\n\tconstructor(config: RefractionCaustics3DProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"RefractionCaustics3D\",\n\t\t\t\trefractionCaustics3DDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.RefractionCaustics3D,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ResizerScalerProps {\n\t/**\n\t * @default \"16:9\"\n\t */\n\taspectRatioPreset?: \"9:16\" | \"16:9\" | \"1:1\" | \"4:5\" | \"21:9\" | \"custom\";\n\t/**\n\t * @default \"1080p\"\n\t */\n\tresolutionPreset?: \"4k\" | \"1080p\" | \"720p\" | \"480p\" | \"custom\";\n\t/**\n\t * Range 1 to 8192.\n\t * @default 1920\n\t */\n\ttargetWidth?: number;\n\t/**\n\t * Range 1 to 8192.\n\t * @default 1080\n\t */\n\ttargetHeight?: number;\n\t/**\n\t * @default \"contain\"\n\t */\n\tfitMode?: \"cover\" | \"contain\" | \"stretch\" | \"manual\";\n\t/**\n\t * Range 1 to 1000.\n\t * @default 100\n\t */\n\tzoom?: number;\n\t/**\n\t * Range -8192 to 8192.\n\t * @default 0\n\t */\n\toffsetX?: number;\n\t/**\n\t * Range -8192 to 8192.\n\t * @default 0\n\t */\n\toffsetY?: number;\n\t/**\n\t * @default \"solid\"\n\t */\n\tbackgroundMode?: \"solid\" | \"blurred\" | \"gradient\" | \"transparent\";\n\t/**\n\t * @default \"#000000FF\"\n\t */\n\tbackgroundColor?: string;\n\t/**\n\t * @default \"#000000FF\"\n\t */\n\tbackgroundColor2?: string;\n\t/**\n\t * Range 0 to 100.\n\t * @default 40\n\t */\n\tblurRadius?: number;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.6\n\t */\n\tbackgroundBrightness?: number;\n\t/**\n\t * @default \"center\"\n\t */\n\tanchorX?: \"left\" | \"center\" | \"right\";\n\t/**\n\t * @default \"center\"\n\t */\n\tanchorY?: \"top\" | \"center\" | \"bottom\";\n}\n\nconst resizerScalerDefaults: ResizerScalerProps = {\n\taspectRatioPreset: \"16:9\",\n\tresolutionPreset: \"1080p\",\n\ttargetWidth: 1920,\n\ttargetHeight: 1080,\n\tfitMode: \"contain\",\n\tzoom: 100,\n\toffsetX: 0,\n\toffsetY: 0,\n\tbackgroundMode: \"solid\",\n\tbackgroundColor: \"#000000FF\",\n\tbackgroundColor2: \"#000000FF\",\n\tblurRadius: 40,\n\tbackgroundBrightness: 0.6,\n\tanchorX: \"center\",\n\tanchorY: \"center\",\n};\n\nexport class ResizerScaler extends Effect<\n\tResizerScalerProps,\n\t\"ResizerScaler\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ResizerScaler\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare aspectRatioPreset:\n\t\t| \"9:16\"\n\t\t| \"16:9\"\n\t\t| \"1:1\"\n\t\t| \"4:5\"\n\t\t| \"21:9\"\n\t\t| \"custom\";\n\tpublic declare resolutionPreset: \"4k\" | \"1080p\" | \"720p\" | \"480p\" | \"custom\";\n\tpublic declare targetWidth: number;\n\tpublic declare targetHeight: number;\n\tpublic declare fitMode: \"cover\" | \"contain\" | \"stretch\" | \"manual\";\n\tpublic declare zoom: number;\n\tpublic declare offsetX: number;\n\tpublic declare offsetY: number;\n\tpublic declare backgroundMode:\n\t\t| \"solid\"\n\t\t| \"blurred\"\n\t\t| \"gradient\"\n\t\t| \"transparent\";\n\tpublic declare backgroundColor: string;\n\tpublic declare backgroundColor2: string;\n\tpublic declare blurRadius: number;\n\tpublic declare backgroundBrightness: number;\n\tpublic declare anchorX: \"left\" | \"center\" | \"right\";\n\tpublic declare anchorY: \"top\" | \"center\" | \"bottom\";\n\n\tconstructor(config: ResizerScalerProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ResizerScaler\",\n\t\t\t\tresizerScalerDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ResizerScaler,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface RGBSplitProps {\n\t/**\n\t * Split distance, px.\n\t * Range 0 to 200. Accepts a signal.\n\t * @default 8\n\t */\n\tamount?: EffectProp<number>;\n\t/**\n\t * Split direction, degrees (linear mode).\n\t * Range -360 to 360. Accepts a signal.\n\t * @default 0\n\t */\n\tangle?: EffectProp<number>;\n\t/**\n\t * Split outward from the center instead of along `angle`.\n\t * @default false\n\t */\n\tradial?: boolean;\n}\n\nconst rGBSplitDefaults: RGBSplitProps = {\n\tamount: 8,\n\tangle: 0,\n\tradial: false,\n};\n\nexport class RGBSplit extends Effect<RGBSplitProps, \"RGBSplit\", \"visual\"> {\n\tpublic readonly op = \"RGBSplit\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare amount: number;\n\tpublic declare angle: number;\n\tpublic declare radial: boolean;\n\n\tconstructor(config: RGBSplitProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"RGBSplit\", rGBSplitDefaults, config, effectMeta.RGBSplit),\n\t\t);\n\t}\n}\n\nexport interface RotateProps {\n\t/**\n\t * Rotation in degrees about the frame center, clockwise. Any value; 90 / 180 / 270 fix footage shot sideways or upside down.\n\t * Accepts a signal.\n\t * @default 90\n\t */\n\tangle?: EffectProp<number>;\n\t/**\n\t * How the rotated source sits in the output: cover fills it (cropping the overhang), contain shows all of it (transparent margins), fill keeps the unrotated source stretched to the output and only turns it.\n\t * @default \"cover\"\n\t */\n\tfit?: \"cover\" | \"contain\" | \"fill\";\n\t/**\n\t * Extra zoom applied after the fit (1 = exactly fitted).\n\t * Range 0.01 to 20. Accepts a signal.\n\t * @default 1\n\t */\n\tscale?: EffectProp<number>;\n}\n\nconst rotateDefaults: RotateProps = {\n\tangle: 90,\n\tfit: \"cover\",\n\tscale: 1,\n};\n\nexport class Rotate extends Effect<RotateProps, \"Rotate\", \"visual\"> {\n\tpublic readonly op = \"Rotate\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare angle: number;\n\tpublic declare fit: \"cover\" | \"contain\" | \"fill\";\n\tpublic declare scale: number;\n\n\tconstructor(config: RotateProps = {}) {\n\t\tsuper(withDefaults(\"Rotate\", rotateDefaults, config, effectMeta.Rotate));\n\t}\n}\n\nexport interface StereoPanningProps {\n\t/**\n\t * Stereo panning value: -1 (full left) to 1 (full right), 0 is center. Can be modulated by a static number or dynamic signal.\n\t * Range -1 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tpan?: EffectProp<number>;\n}\n\nconst stereoPanningDefaults: StereoPanningProps = {\n\tpan: 0,\n};\n\nexport class StereoPanning extends Effect<\n\tStereoPanningProps,\n\t\"StereoPanning\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"StereoPanning\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare pan: number;\n\n\tconstructor(config: StereoPanningProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"StereoPanning\",\n\t\t\t\tstereoPanningDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.StereoPanning,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ToonProps {\n\t/**\n\t * Brightness bands.\n\t * Range 2 to 12. Accepts a signal.\n\t * @default 4\n\t */\n\tlevels?: EffectProp<number>;\n\t/**\n\t * How strong an edge must be to get ink, 0–1.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.2\n\t */\n\tedgeThreshold?: EffectProp<number>;\n\t/**\n\t * Ink line width, px.\n\t * Range 0.5 to 4. Accepts a signal.\n\t * @default 1\n\t */\n\tedgeWidth?: EffectProp<number>;\n\t/**\n\t * Ink color.\n\t * @default \"#111111\"\n\t */\n\tedgeColor?: string;\n\t/**\n\t * Color saturation after banding.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 1.15\n\t */\n\tsaturation?: EffectProp<number>;\n}\n\nconst toonDefaults: ToonProps = {\n\tlevels: 4,\n\tedgeThreshold: 0.2,\n\tedgeWidth: 1,\n\tedgeColor: \"#111111\",\n\tsaturation: 1.15,\n};\n\nexport class Toon extends Effect<ToonProps, \"Toon\", \"visual\"> {\n\tpublic readonly op = \"Toon\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare levels: number;\n\tpublic declare edgeThreshold: number;\n\tpublic declare edgeWidth: number;\n\tpublic declare edgeColor: string;\n\tpublic declare saturation: number;\n\n\tconstructor(config: ToonProps = {}) {\n\t\tsuper(withDefaults(\"Toon\", toonDefaults, config, effectMeta.Toon));\n\t}\n}\n\nexport interface TrailsProps {\n\t/**\n\t * History kept per frame, 0–1: 0.8 short echoes, 0.97 long light trails.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.9\n\t */\n\tdecay?: EffectProp<number>;\n\t/**\n\t * blend: running average (echoes on full-frame footage); over: the layer over its fading past (cutouts, text); add: glows build up (light painting); max: keeps the brightest.\n\t * @default \"blend\"\n\t */\n\tmode?: \"blend\" | \"over\" | \"add\" | \"max\";\n\t/**\n\t * History scale per frame; 1.02 pulls the past into a tunnel.\n\t * Range 0.5 to 2. Accepts a signal.\n\t * @default 1\n\t */\n\tzoom?: EffectProp<number>;\n\t/**\n\t * History rotation per frame, degrees.\n\t * Range -45 to 45. Accepts a signal.\n\t * @default 0\n\t */\n\trotation?: EffectProp<number>;\n\t/**\n\t * History drift per frame, px.\n\t * Range -500 to 500. Accepts a signal.\n\t * @default 0\n\t */\n\toffsetX?: EffectProp<number>;\n\t/**\n\t * History drift per frame, px.\n\t * Range -500 to 500. Accepts a signal.\n\t * @default 0\n\t */\n\toffsetY?: EffectProp<number>;\n\t/**\n\t * History hue rotation per frame, degrees (psychedelic cycling).\n\t * Range -180 to 180. Accepts a signal.\n\t * @default 0\n\t */\n\thueShift?: EffectProp<number>;\n\t/**\n\t * Most frames replayed to rebuild the history after a jump (scrubbing, a single frame render).\n\t * Range 0 to 240.\n\t * @default 60\n\t */\n\twarmup?: number;\n}\n\nconst trailsDefaults: TrailsProps = {\n\tdecay: 0.9,\n\tmode: \"blend\",\n\tzoom: 1,\n\trotation: 0,\n\toffsetX: 0,\n\toffsetY: 0,\n\thueShift: 0,\n\twarmup: 60,\n};\n\nexport class Trails extends Effect<TrailsProps, \"Trails\", \"visual\"> {\n\tpublic readonly op = \"Trails\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare decay: number;\n\tpublic declare mode: \"blend\" | \"over\" | \"add\" | \"max\";\n\tpublic declare zoom: number;\n\tpublic declare rotation: number;\n\tpublic declare offsetX: number;\n\tpublic declare offsetY: number;\n\tpublic declare hueShift: number;\n\tpublic declare warmup: number;\n\n\tconstructor(config: TrailsProps = {}) {\n\t\tsuper(withDefaults(\"Trails\", trailsDefaults, config, effectMeta.Trails));\n\t}\n}\n\nexport interface VignetteProps {\n\t/**\n\t * The intensity of the vignette darkening effect. 0 = no vignette.\n\t * Range 0 to 100. Accepts a signal.\n\t * @default 50\n\t */\n\tstrength?: EffectProp<number>;\n\t/**\n\t * The extent/size of the vignette.\n\t * Range 0.1 to 2. Accepts a signal.\n\t * @default 1\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * The softness of the vignette transition edge.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tsoftness?: EffectProp<number>;\n\t/**\n\t * 0.0 matches the image aspect ratio, 1.0 is a perfect circle.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\troundness?: EffectProp<number>;\n\t/**\n\t * The X coordinate of the vignette center.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterX?: EffectProp<number>;\n\t/**\n\t * The Y coordinate of the vignette center.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterY?: EffectProp<number>;\n}\n\nconst vignetteDefaults: VignetteProps = {\n\tstrength: 50,\n\tradius: 1,\n\tsoftness: 0.5,\n\troundness: 0.5,\n\tcenterX: 0.5,\n\tcenterY: 0.5,\n};\n\nexport class Vignette extends Effect<VignetteProps, \"Vignette\", \"visual\"> {\n\tpublic readonly op = \"Vignette\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare strength: number;\n\tpublic declare radius: number;\n\tpublic declare softness: number;\n\tpublic declare roundness: number;\n\tpublic declare centerX: number;\n\tpublic declare centerY: number;\n\n\tconstructor(config: VignetteProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"Vignette\", vignetteDefaults, config, effectMeta.Vignette),\n\t\t);\n\t}\n}\n","import type { ObjectTrackSignals } from \"@framefields/vision\";\nimport { BlurBase, type BlurBaseProps } from \"../generated/classes.js\";\n\nexport interface BlurProps extends BlurBaseProps {\n\t/**\n\t * Follow a tracked object. Turns on `partialBlur` and derives the region\n\t * (`centerX`, `centerY`, `radius`, `radiusY`, `shape`) and `strength` from\n\t * the track. Any of those passed explicitly wins over the track.\n\t */\n\ttrack?: ObjectTrackSignals;\n}\n\n/** Props the track supplies when the caller does not. */\nfunction trackDefaults(track: ObjectTrackSignals): BlurBaseProps {\n\treturn {\n\t\tpartialBlur: true,\n\t\tcenterX: track.center.x,\n\t\tcenterY: track.center.y,\n\t\tradius: track.bounds.width.multiply(0.55),\n\t\tradiusY: track.bounds.height.multiply(0.55),\n\t\tshape: \"ellipse\",\n\t\t// Fades the blur out while the object is not being tracked.\n\t\tstrength: track.active.multiply(25),\n\t};\n}\n\n/**\n * Blur effect. Props, defaults and ranges are generated from `node-blur`'s\n * schema ({@link BlurBase}); this subclass only adds `track`.\n */\nexport class Blur extends BlurBase {\n\tconstructor(config: BlurProps = {}) {\n\t\tconst { track, ...rest } = config;\n\t\tsuper(track ? { ...trackDefaults(track), ...definedOnly(rest) } : rest);\n\t}\n}\n\nfunction definedOnly<T extends object>(value: T): T {\n\treturn Object.fromEntries(\n\t\tObject.entries(value).filter(([, v]) => v !== undefined),\n\t) as T;\n}\n","// @generated by scripts/generate-effects.mts — do not edit.\n// Source of truth: nodes/*/package.json (`framefields`) and nodes/*/src/shared/config.ts.\n// Regenerate with `pnpm run generate:effects`.\n\nimport { Blur, type BlurProps } from \"../custom/blur.js\";\nimport {\n\tAscii,\n\ttype AsciiProps,\n\tAudioCompressor,\n\ttype AudioCompressorProps,\n\tAudioDelay,\n\ttype AudioDelayProps,\n\tAudioFade,\n\ttype AudioFadeProps,\n\tAudioNoiseGate,\n\ttype AudioNoiseGateProps,\n\tAudioParametricEq,\n\ttype AudioParametricEqProps,\n\tAudioReverb,\n\ttype AudioReverbProps,\n\tCameraParallax3D,\n\ttype CameraParallax3DProps,\n\tChannelMerger,\n\ttype ChannelMergerProps,\n\tChannelSplitter,\n\ttype ChannelSplitterProps,\n\tColorBalance,\n\ttype ColorBalanceProps,\n\tColorKey,\n\ttype ColorKeyProps,\n\tContour,\n\ttype ContourProps,\n\tCornerPin,\n\ttype CornerPinProps,\n\tCRT,\n\ttype CRTProps,\n\tDatamosh,\n\ttype DatamoshProps,\n\tDisplacementMap,\n\ttype DisplacementMapProps,\n\tDither,\n\ttype DitherProps,\n\tExtractLUT,\n\ttype ExtractLUTProps,\n\tFlip,\n\ttype FlipProps,\n\tGooey,\n\ttype GooeyProps,\n\tIridescence,\n\ttype IridescenceProps,\n\tKaleidoscope,\n\ttype KaleidoscopeProps,\n\tKenBurns,\n\ttype KenBurnsProps,\n\tLayerStyle,\n\ttype LayerStyleProps,\n\tLiquify,\n\ttype LiquifyProps,\n\tMaskMath,\n\ttype MaskMathProps,\n\tMeshWarp,\n\ttype MeshWarpProps,\n\tNoiseGenerator,\n\ttype NoiseGeneratorProps,\n\tOpArt,\n\ttype OpArtProps,\n\tPaint,\n\tPainterly,\n\ttype PainterlyProps,\n\ttype PaintProps,\n\tPatchHeal,\n\ttype PatchHealProps,\n\tPixelate,\n\ttype PixelateProps,\n\tPosterize,\n\ttype PosterizeProps,\n\tProceduralVFX,\n\ttype ProceduralVFXProps,\n\tRefineEdge,\n\ttype RefineEdgeProps,\n\tRefractionCaustics3D,\n\ttype RefractionCaustics3DProps,\n\tResizerScaler,\n\ttype ResizerScalerProps,\n\tRGBSplit,\n\ttype RGBSplitProps,\n\tRotate,\n\ttype RotateProps,\n\tStereoPanning,\n\ttype StereoPanningProps,\n\tToon,\n\ttype ToonProps,\n\tTrails,\n\ttype TrailsProps,\n\tVignette,\n\ttype VignetteProps,\n} from \"./classes.js\";\n\n/** `Effect.<factory>(config)` helpers, one per generated effect class. */\nexport const effectFactories = {\n\tascii: (config?: AsciiProps) => new Ascii(config),\n\taudioCompressor: (config?: AudioCompressorProps) =>\n\t\tnew AudioCompressor(config),\n\taudioDelay: (config?: AudioDelayProps) => new AudioDelay(config),\n\taudioFade: (config?: AudioFadeProps) => new AudioFade(config),\n\taudioNoiseGate: (config?: AudioNoiseGateProps) => new AudioNoiseGate(config),\n\taudioParametricEq: (config?: AudioParametricEqProps) =>\n\t\tnew AudioParametricEq(config),\n\taudioReverb: (config?: AudioReverbProps) => new AudioReverb(config),\n\tblur: (config?: BlurProps) => new Blur(config),\n\tcameraParallax3D: (config?: CameraParallax3DProps) =>\n\t\tnew CameraParallax3D(config),\n\tchannelMerger: (config?: ChannelMergerProps) => new ChannelMerger(config),\n\tchannelSplitter: (config?: ChannelSplitterProps) =>\n\t\tnew ChannelSplitter(config),\n\tcolorBalance: (config?: ColorBalanceProps) => new ColorBalance(config),\n\tcolorKey: (config?: ColorKeyProps) => new ColorKey(config),\n\tcontour: (config?: ContourProps) => new Contour(config),\n\tcornerPin: (config?: CornerPinProps) => new CornerPin(config),\n\tcRT: (config?: CRTProps) => new CRT(config),\n\tdatamosh: (config?: DatamoshProps) => new Datamosh(config),\n\tdisplacementMap: (config?: DisplacementMapProps) =>\n\t\tnew DisplacementMap(config),\n\tdither: (config?: DitherProps) => new Dither(config),\n\textractLUT: (config?: ExtractLUTProps) => new ExtractLUT(config),\n\tflip: (config?: FlipProps) => new Flip(config),\n\tgooey: (config?: GooeyProps) => new Gooey(config),\n\tiridescence: (config?: IridescenceProps) => new Iridescence(config),\n\tkaleidoscope: (config?: KaleidoscopeProps) => new Kaleidoscope(config),\n\tkenBurns: (config?: KenBurnsProps) => new KenBurns(config),\n\tlayerStyle: (config?: LayerStyleProps) => new LayerStyle(config),\n\tliquify: (config?: LiquifyProps) => new Liquify(config),\n\tmaskMath: (config?: MaskMathProps) => new MaskMath(config),\n\tmeshWarp: (config?: MeshWarpProps) => new MeshWarp(config),\n\tnoiseGenerator: (config?: NoiseGeneratorProps) => new NoiseGenerator(config),\n\topArt: (config?: OpArtProps) => new OpArt(config),\n\tpaint: (config?: PaintProps) => new Paint(config),\n\tpainterly: (config?: PainterlyProps) => new Painterly(config),\n\tpatchHeal: (config?: PatchHealProps) => new PatchHeal(config),\n\tpixelate: (config?: PixelateProps) => new Pixelate(config),\n\tposterize: (config?: PosterizeProps) => new Posterize(config),\n\tproceduralVFX: (config?: ProceduralVFXProps) => new ProceduralVFX(config),\n\trefineEdge: (config?: RefineEdgeProps) => new RefineEdge(config),\n\trefractionCaustics3D: (config?: RefractionCaustics3DProps) =>\n\t\tnew RefractionCaustics3D(config),\n\tresizerScaler: (config?: ResizerScalerProps) => new ResizerScaler(config),\n\trGBSplit: (config?: RGBSplitProps) => new RGBSplit(config),\n\trotate: (config?: RotateProps) => new Rotate(config),\n\tstereoPanning: (config?: StereoPanningProps) => new StereoPanning(config),\n\ttoon: (config?: ToonProps) => new Toon(config),\n\ttrails: (config?: TrailsProps) => new Trails(config),\n\tvignette: (config?: VignetteProps) => new Vignette(config),\n} as const;\n","import { Effect } from \"@framefields/core\";\nimport {\n\tAudioSignal,\n\ttype AudioSignalOptions,\n\ttype ExtractedAudioSignalsBundle,\n} from \"../signals/audio.js\";\nimport type { EffectProp } from \"./types.js\";\n\n// Vignette, Blur and ColorBalance are generated from their node packages\n// (./generated, written by scripts/generate-effects.mts). The classes below\n// are still hand-written and move there in later phases of spec/sync-node.md.\nexport * from \"./generated/index.js\";\n\nimport type {\n\tAnyGeneratedAudioEffect,\n\tAnyGeneratedVisualEffect,\n\tGeneratedEffectConfigMap,\n} from \"./generated/index.js\";\n\nexport type { EffectProp } from \"./types.js\";\n\nexport interface LevelChannel {\n\tinBlack?: number;\n\tinWhite?: number;\n\toutBlack?: number;\n\toutWhite?: number;\n}\n\nexport interface LevelsProps {\n\tmaster?: LevelChannel;\n\tred?: LevelChannel;\n\tgreen?: LevelChannel;\n\tblue?: LevelChannel;\n}\n\nexport class Levels extends Effect<LevelsProps, \"Levels\", \"visual\"> {\n\tpublic readonly op = \"Levels\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare master: LevelChannel;\n\tpublic declare red: LevelChannel;\n\tpublic declare green: LevelChannel;\n\tpublic declare blue: LevelChannel;\n\n\tconstructor(config: LevelsProps = {}) {\n\t\tconst defaultChannel: LevelChannel = {\n\t\t\tinBlack: 0,\n\t\t\tinWhite: 1,\n\t\t\toutBlack: 0,\n\t\t\toutWhite: 1,\n\t\t};\n\t\tsuper({\n\t\t\tmaster: config.master ?? { ...defaultChannel },\n\t\t\tred: config.red ?? { ...defaultChannel },\n\t\t\tgreen: config.green ?? { ...defaultChannel },\n\t\t\tblue: config.blue ?? { ...defaultChannel },\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport interface FilmGrainProps {\n\tstrength?: EffectProp<number>;\n\tsize?: EffectProp<number>;\n\tmonochrome?: boolean;\n\tanimated?: boolean;\n\tspeed?: EffectProp<number>;\n\tshadows?: EffectProp<number>;\n\tmidtones?: EffectProp<number>;\n\thighlights?: EffectProp<number>;\n}\n\nexport class FilmGrain extends Effect<FilmGrainProps, \"FilmGrain\", \"visual\"> {\n\tpublic readonly op = \"FilmGrain\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare strength: number;\n\tpublic declare size: number;\n\tpublic declare monochrome: boolean;\n\tpublic declare animated: boolean;\n\tpublic declare speed: number;\n\tpublic declare shadows: number;\n\tpublic declare midtones: number;\n\tpublic declare highlights: number;\n\n\tconstructor(config: FilmGrainProps = {}) {\n\t\tsuper({\n\t\t\tstrength: config.strength ?? 15,\n\t\t\tsize: config.size ?? 1.5,\n\t\t\tmonochrome: config.monochrome ?? true,\n\t\t\tanimated: config.animated ?? true,\n\t\t\tspeed: config.speed ?? 50,\n\t\t\tshadows: config.shadows ?? 0.2,\n\t\t\tmidtones: config.midtones ?? 1.0,\n\t\t\thighlights: config.highlights ?? 0.2,\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport class CustomEffect extends Effect<\n\tRecord<string, unknown>,\n\tstring,\n\t\"visual\"\n> {\n\tpublic readonly op: string;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tconstructor(opName: string, config: Record<string, unknown> = {}) {\n\t\tsuper(config);\n\t\tthis.op = opName;\n\t}\n}\n\nexport interface AudioSignalExtractorProps {\n\textractionMode?:\n\t\t| \"rms_envelope\"\n\t\t| \"transient_beat\"\n\t\t| \"sub_bass\"\n\t\t| \"bass\"\n\t\t| \"mid\"\n\t\t| \"high\"\n\t\t| \"spectral_flux\";\n\tattackMs?: number;\n\treleaseMs?: number;\n\tsensitivity?: number;\n\tnoiseFloorDb?: number;\n\tdynamicRangeDb?: number;\n\tautoRange?: boolean;\n\tsmoothing?: number;\n\tcurve?: \"linear\" | \"exponential\" | \"logarithmic\" | \"square\" | \"smoothstep\";\n\tbeatThreshold?: number;\n\tbeatDecayMs?: number;\n\tpreviewMode?: \"waveform\" | \"envelope\" | \"beat_markers\" | \"spectrum\";\n\tnodeId?: string;\n}\n\nexport class AudioSignalExtractor extends Effect<\n\tAudioSignalExtractorProps,\n\t\"AudioSignalExtractor\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"AudioSignalExtractor\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare extractionMode: AudioSignalExtractorProps[\"extractionMode\"];\n\tpublic declare attackMs: number;\n\tpublic declare releaseMs: number;\n\tpublic declare sensitivity: number;\n\tpublic declare noiseFloorDb: number;\n\tpublic declare dynamicRangeDb: number;\n\tpublic declare autoRange: boolean;\n\tpublic declare smoothing: number;\n\tpublic declare curve: AudioSignalExtractorProps[\"curve\"];\n\tpublic declare beatThreshold: number;\n\tpublic declare beatDecayMs: number;\n\tpublic declare previewMode: AudioSignalExtractorProps[\"previewMode\"];\n\tpublic declare nodeId: string;\n\n\tconstructor(config: AudioSignalExtractorProps = {}) {\n\t\tsuper({\n\t\t\textractionMode: config.extractionMode ?? \"rms_envelope\",\n\t\t\tattackMs: config.attackMs ?? 10,\n\t\t\treleaseMs: config.releaseMs ?? 120,\n\t\t\tsensitivity: config.sensitivity ?? 1.0,\n\t\t\tnoiseFloorDb: config.noiseFloorDb ?? -48,\n\t\t\tdynamicRangeDb: config.dynamicRangeDb ?? 48,\n\t\t\tautoRange: config.autoRange ?? true,\n\t\t\tsmoothing: config.smoothing ?? 0.15,\n\t\t\tcurve: config.curve ?? \"linear\",\n\t\t\tbeatThreshold: config.beatThreshold ?? 0.08,\n\t\t\tbeatDecayMs: config.beatDecayMs ?? 80,\n\t\t\tpreviewMode: config.previewMode ?? \"envelope\",\n\t\t\tnodeId: config.nodeId ?? \"audio_extractor\",\n\t\t\t...config,\n\t\t});\n\t}\n\n\tpublic async extract(\n\t\tsource: string,\n\t\toptions: Partial<AudioSignalOptions> = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\treturn AudioSignal.extract(source, {\n\t\t\textractionMode: this.extractionMode,\n\t\t\tattackMs: this.attackMs,\n\t\t\treleaseMs: this.releaseMs,\n\t\t\tsensitivity: this.sensitivity,\n\t\t\tnoiseFloorDb: this.noiseFloorDb,\n\t\t\tdynamicRangeDb: this.dynamicRangeDb,\n\t\t\tsmoothing: this.smoothing,\n\t\t\tcurve: this.curve,\n\t\t\tbeatThreshold: this.beatThreshold,\n\t\t\tbeatDecayMs: this.beatDecayMs,\n\t\t\tpreviewMode: this.previewMode,\n\t\t\t...options,\n\t\t});\n\t}\n}\n\n// ─── Batch 1: Core Tonal, Color & Filter Effects ────────────────────────────\n\nexport interface CurvesChannelPoint {\n\tx: number;\n\ty: number;\n}\n\nexport interface CurvesProps {\n\tcurveType?: \"rgb\" | \"hue-vs-hue\" | \"hue-vs-sat\" | \"lum-vs-sat\" | \"sat-vs-sat\";\n\tmaster?: CurvesChannelPoint[];\n\tred?: CurvesChannelPoint[];\n\tgreen?: CurvesChannelPoint[];\n\tblue?: CurvesChannelPoint[];\n\thueVsHue?: CurvesChannelPoint[];\n\thueVsSat?: CurvesChannelPoint[];\n\tlumVsSat?: CurvesChannelPoint[];\n\tsatVsSat?: CurvesChannelPoint[];\n}\n\nexport class Curves extends Effect<CurvesProps, \"Curves\", \"visual\"> {\n\tpublic readonly op = \"Curves\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare curveType: CurvesProps[\"curveType\"];\n\tpublic declare master: CurvesChannelPoint[];\n\tpublic declare red: CurvesChannelPoint[];\n\tpublic declare green: CurvesChannelPoint[];\n\tpublic declare blue: CurvesChannelPoint[];\n\tpublic declare hueVsHue: CurvesChannelPoint[];\n\tpublic declare hueVsSat: CurvesChannelPoint[];\n\tpublic declare lumVsSat: CurvesChannelPoint[];\n\tpublic declare satVsSat: CurvesChannelPoint[];\n\n\tconstructor(config: CurvesProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tcurveType: config.curveType ?? \"rgb\",\n\t\t\tmaster: config.master ?? [\n\t\t\t\t{ x: 0, y: 0 },\n\t\t\t\t{ x: 1, y: 1 },\n\t\t\t],\n\t\t\tred: config.red ?? [\n\t\t\t\t{ x: 0, y: 0 },\n\t\t\t\t{ x: 1, y: 1 },\n\t\t\t],\n\t\t\tgreen: config.green ?? [\n\t\t\t\t{ x: 0, y: 0 },\n\t\t\t\t{ x: 1, y: 1 },\n\t\t\t],\n\t\t\tblue: config.blue ?? [\n\t\t\t\t{ x: 0, y: 0 },\n\t\t\t\t{ x: 1, y: 1 },\n\t\t\t],\n\t\t\thueVsHue: config.hueVsHue ?? [\n\t\t\t\t{ x: 0, y: 0.5 },\n\t\t\t\t{ x: 1, y: 0.5 },\n\t\t\t],\n\t\t\thueVsSat: config.hueVsSat ?? [\n\t\t\t\t{ x: 0, y: 1.0 },\n\t\t\t\t{ x: 1, y: 1.0 },\n\t\t\t],\n\t\t\tlumVsSat: config.lumVsSat ?? [\n\t\t\t\t{ x: 0, y: 1.0 },\n\t\t\t\t{ x: 1, y: 1.0 },\n\t\t\t],\n\t\t\tsatVsSat: config.satVsSat ?? [\n\t\t\t\t{ x: 0, y: 1.0 },\n\t\t\t\t{ x: 1, y: 1.0 },\n\t\t\t],\n\t\t});\n\t}\n}\n\nexport interface SelectiveColorAdjustment {\n\tcyan: number;\n\tmagenta: number;\n\tyellow: number;\n\tblack: number;\n}\n\nexport interface SelectiveColorProps {\n\tmethod?: \"Relative\" | \"Absolute\";\n\treds?: Partial<SelectiveColorAdjustment>;\n\tyellows?: Partial<SelectiveColorAdjustment>;\n\tgreens?: Partial<SelectiveColorAdjustment>;\n\tcyans?: Partial<SelectiveColorAdjustment>;\n\tblues?: Partial<SelectiveColorAdjustment>;\n\tmagentas?: Partial<SelectiveColorAdjustment>;\n\twhites?: Partial<SelectiveColorAdjustment>;\n\tneutrals?: Partial<SelectiveColorAdjustment>;\n\tblacks?: Partial<SelectiveColorAdjustment>;\n}\n\nexport class SelectiveColor extends Effect<\n\tSelectiveColorProps,\n\t\"SelectiveColor\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"SelectiveColor\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare method: \"Relative\" | \"Absolute\";\n\tpublic declare reds: SelectiveColorAdjustment;\n\tpublic declare yellows: SelectiveColorAdjustment;\n\tpublic declare greens: SelectiveColorAdjustment;\n\tpublic declare cyans: SelectiveColorAdjustment;\n\tpublic declare blues: SelectiveColorAdjustment;\n\tpublic declare magentas: SelectiveColorAdjustment;\n\tpublic declare whites: SelectiveColorAdjustment;\n\tpublic declare neutrals: SelectiveColorAdjustment;\n\tpublic declare blacks: SelectiveColorAdjustment;\n\n\tconstructor(config: SelectiveColorProps = {}) {\n\t\tconst defaultAdj: SelectiveColorAdjustment = {\n\t\t\tcyan: 0,\n\t\t\tmagenta: 0,\n\t\t\tyellow: 0,\n\t\t\tblack: 0,\n\t\t};\n\t\tsuper({\n\t\t\t...config,\n\t\t\tmethod: config.method ?? \"Relative\",\n\t\t\treds: { ...defaultAdj, ...config.reds },\n\t\t\tyellows: { ...defaultAdj, ...config.yellows },\n\t\t\tgreens: { ...defaultAdj, ...config.greens },\n\t\t\tcyans: { ...defaultAdj, ...config.cyans },\n\t\t\tblues: { ...defaultAdj, ...config.blues },\n\t\t\tmagentas: { ...defaultAdj, ...config.magentas },\n\t\t\twhites: { ...defaultAdj, ...config.whites },\n\t\t\tneutrals: { ...defaultAdj, ...config.neutrals },\n\t\t\tblacks: { ...defaultAdj, ...config.blacks },\n\t\t});\n\t}\n}\n\nexport interface GradientMapStop {\n\tposition: number;\n\tcolor: string;\n}\n\nexport interface GradientMapProps {\n\tstops?: GradientMapStop[];\n\tsmooth?: boolean;\n\tdither?: boolean;\n\topacity?: EffectProp<number>;\n}\n\nexport class GradientMap extends Effect<\n\tGradientMapProps,\n\t\"GradientMap\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"GradientMap\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare stops: GradientMapStop[];\n\tpublic declare smooth: boolean;\n\tpublic declare dither: boolean;\n\tpublic declare opacity: number;\n\n\tconstructor(config: GradientMapProps = {}) {\n\t\tconst defaultStops: GradientMapStop[] = [\n\t\t\t{ position: 0.0, color: \"#000000\" },\n\t\t\t{ position: 1.0, color: \"#ffffff\" },\n\t\t];\n\t\tsuper({\n\t\t\t...config,\n\t\t\tstops: config.stops ?? defaultStops,\n\t\t\tsmooth: config.smooth ?? true,\n\t\t\tdither: config.dither ?? true,\n\t\t\topacity: config.opacity ?? 1.0,\n\t\t});\n\t}\n}\n\nexport interface ShadowsHighlightsProps {\n\tshadowAmount?: EffectProp<number>;\n\tshadowTonalWidth?: EffectProp<number>;\n\tshadowRadius?: EffectProp<number>;\n\thighlightAmount?: EffectProp<number>;\n\thighlightTonalWidth?: EffectProp<number>;\n\thighlightRadius?: EffectProp<number>;\n\tcolorCorrection?: EffectProp<number>;\n\tmidtoneContrast?: EffectProp<number>;\n}\n\nexport class ShadowsHighlights extends Effect<\n\tShadowsHighlightsProps,\n\t\"ShadowsHighlights\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ShadowsHighlights\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare shadowAmount: number;\n\tpublic declare shadowTonalWidth: number;\n\tpublic declare shadowRadius: number;\n\tpublic declare highlightAmount: number;\n\tpublic declare highlightTonalWidth: number;\n\tpublic declare highlightRadius: number;\n\tpublic declare colorCorrection: number;\n\tpublic declare midtoneContrast: number;\n\n\tconstructor(config: ShadowsHighlightsProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tshadowAmount: config.shadowAmount ?? 0,\n\t\t\tshadowTonalWidth: config.shadowTonalWidth ?? 50,\n\t\t\tshadowRadius: config.shadowRadius ?? 30,\n\t\t\thighlightAmount: config.highlightAmount ?? 0,\n\t\t\thighlightTonalWidth: config.highlightTonalWidth ?? 50,\n\t\t\thighlightRadius: config.highlightRadius ?? 30,\n\t\t\tcolorCorrection: config.colorCorrection ?? 0,\n\t\t\tmidtoneContrast: config.midtoneContrast ?? 0,\n\t\t});\n\t}\n}\n\nexport interface ApplyLUTProps {\n\tlutUrl?: string;\n\tintensity?: EffectProp<number>;\n}\n\nexport class ApplyLUT extends Effect<ApplyLUTProps, \"ApplyLUT\", \"visual\"> {\n\tpublic readonly op = \"ApplyLUT\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare lutUrl: string;\n\tpublic declare intensity: number;\n\n\tconstructor(config: ApplyLUTProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tlutUrl: config.lutUrl ?? \"\",\n\t\t\tintensity: config.intensity ?? 1.0,\n\t\t});\n\t}\n}\n\nexport interface UnsharpMaskProps {\n\tamount?: EffectProp<number>;\n\tradius?: EffectProp<number>;\n\tthreshold?: EffectProp<number>;\n}\n\nexport class UnsharpMask extends Effect<\n\tUnsharpMaskProps,\n\t\"UnsharpMask\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"UnsharpMask\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare amount: number;\n\tpublic declare radius: number;\n\tpublic declare threshold: number;\n\n\tconstructor(config: UnsharpMaskProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tamount: config.amount ?? 100,\n\t\t\tradius: config.radius ?? 1.5,\n\t\t\tthreshold: config.threshold ?? 3,\n\t\t});\n\t}\n}\n\nexport interface HighPassProps {\n\tradius?: EffectProp<number>;\n\tcontrastBoost?: EffectProp<number>;\n\tmonochrome?: boolean;\n}\n\nexport class HighPass extends Effect<HighPassProps, \"HighPass\", \"visual\"> {\n\tpublic readonly op = \"HighPass\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare radius: number;\n\tpublic declare contrastBoost: number;\n\tpublic declare monochrome: boolean;\n\n\tconstructor(config: HighPassProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tradius: config.radius ?? 3.0,\n\t\t\tcontrastBoost: config.contrastBoost ?? 1.0,\n\t\t\tmonochrome: config.monochrome ?? true,\n\t\t});\n\t}\n}\n\nexport type HalftoneDotShape = \"Circle\" | \"Diamond\" | \"Line\" | \"Square\";\nexport type HalftoneMode = \"Monochrome\" | \"CMYK\";\n\nexport interface HalftoneScreenProps {\n\tmode?: HalftoneMode;\n\tdotShape?: HalftoneDotShape;\n\tfrequency?: EffectProp<number>;\n\tangle?: EffectProp<number>;\n\tcontrast?: EffectProp<number>;\n\tdotColor?: string;\n\tpaperColor?: string;\n\tsmooth?: boolean;\n\tinvert?: boolean;\n\tcyanAngle?: EffectProp<number>;\n\tmagentaAngle?: EffectProp<number>;\n\tyellowAngle?: EffectProp<number>;\n\tblackAngle?: EffectProp<number>;\n\topacity?: EffectProp<number>;\n}\n\nexport class HalftoneScreen extends Effect<\n\tHalftoneScreenProps,\n\t\"HalftoneScreen\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"HalftoneScreen\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare mode: HalftoneMode;\n\tpublic declare dotShape: HalftoneDotShape;\n\tpublic declare frequency: number;\n\tpublic declare angle: number;\n\tpublic declare contrast: number;\n\tpublic declare dotColor: string;\n\tpublic declare paperColor: string;\n\tpublic declare smooth: boolean;\n\tpublic declare invert: boolean;\n\tpublic declare cyanAngle: number;\n\tpublic declare magentaAngle: number;\n\tpublic declare yellowAngle: number;\n\tpublic declare blackAngle: number;\n\tpublic declare opacity: number;\n\n\tconstructor(config: HalftoneScreenProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tmode: config.mode ?? \"Monochrome\",\n\t\t\tdotShape: config.dotShape ?? \"Circle\",\n\t\t\tfrequency: config.frequency ?? 30,\n\t\t\tangle: config.angle ?? 45,\n\t\t\tcontrast: config.contrast ?? 1.0,\n\t\t\tdotColor: config.dotColor ?? \"#000000\",\n\t\t\tpaperColor: config.paperColor ?? \"#ffffff\",\n\t\t\tsmooth: config.smooth ?? true,\n\t\t\tinvert: config.invert ?? false,\n\t\t\tcyanAngle: config.cyanAngle ?? 15,\n\t\t\tmagentaAngle: config.magentaAngle ?? 75,\n\t\t\tyellowAngle: config.yellowAngle ?? 0,\n\t\t\tblackAngle: config.blackAngle ?? 45,\n\t\t\topacity: config.opacity ?? 1.0,\n\t\t});\n\t}\n}\n\nexport type TileOffsetEdgeMode = \"wrap\" | \"clamp\" | \"transparent\" | \"mirror\";\n\nexport interface TileOffsetProps {\n\toffsetX?: EffectProp<number>;\n\toffsetY?: EffectProp<number>;\n\twrap?: boolean;\n\tedgeMode?: TileOffsetEdgeMode;\n}\n\nexport class TileOffset extends Effect<\n\tTileOffsetProps,\n\t\"TileOffset\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"TileOffset\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare offsetX: number;\n\tpublic declare offsetY: number;\n\tpublic declare wrap: boolean;\n\tpublic declare edgeMode: TileOffsetEdgeMode;\n\n\tconstructor(config: TileOffsetProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\toffsetX: config.offsetX ?? 0,\n\t\t\toffsetY: config.offsetY ?? 0,\n\t\t\twrap: config.wrap ?? true,\n\t\t\tedgeMode: config.edgeMode ?? \"wrap\",\n\t\t});\n\t}\n}\n\nexport interface MotionBlurProps {\n\tshutterAngle?: EffectProp<number>;\n\tsamples?: EffectProp<number>;\n\tmaxVelocity?: EffectProp<number>;\n\tshutterCurve?: \"box\" | \"gaussian\" | \"triangle\";\n\tdepthAware?: boolean;\n}\n\nexport class MotionBlur extends Effect<\n\tMotionBlurProps,\n\t\"MotionBlur\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"MotionBlur\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare shutterAngle: number;\n\tpublic declare samples: number;\n\tpublic declare maxVelocity: number;\n\tpublic declare shutterCurve: \"box\" | \"gaussian\" | \"triangle\";\n\tpublic declare depthAware: boolean;\n\n\tconstructor(config: MotionBlurProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tshutterAngle: config.shutterAngle ?? 180,\n\t\t\tsamples: config.samples ?? 16,\n\t\t\tmaxVelocity: config.maxVelocity ?? 64,\n\t\t\tshutterCurve: config.shutterCurve ?? \"gaussian\",\n\t\t\tdepthAware: config.depthAware ?? true,\n\t\t});\n\t}\n}\n\nexport interface SSAOProps {\n\tradius?: EffectProp<number>;\n\tbias?: EffectProp<number>;\n\tintensity?: EffectProp<number>;\n\tkernelSamples?: EffectProp<number>;\n\tblurRadius?: EffectProp<number>;\n}\n\nexport class SSAO extends Effect<SSAOProps, \"SSAO\", \"visual\"> {\n\tpublic readonly op = \"SSAO\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare radius: number;\n\tpublic declare bias: number;\n\tpublic declare intensity: number;\n\tpublic declare kernelSamples: number;\n\tpublic declare blurRadius: number;\n\n\tconstructor(config: SSAOProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tradius: config.radius ?? 45,\n\t\t\tbias: config.bias ?? 0.025,\n\t\t\tintensity: config.intensity ?? 1.5,\n\t\t\tkernelSamples: config.kernelSamples ?? 16,\n\t\t\tblurRadius: config.blurRadius ?? 4,\n\t\t});\n\t}\n}\n\nexport interface PBRGlassProps {\n\tior?: EffectProp<number>;\n\troughness?: EffectProp<number>;\n\ttransmission?: EffectProp<number>;\n\tdispersion?: EffectProp<number>;\n\tfresnelPower?: EffectProp<number>;\n\ttintColor?: EffectProp<string>;\n}\n\nexport class PBRGlass extends Effect<PBRGlassProps, \"PBRGlass\", \"visual\"> {\n\tpublic readonly op = \"PBRGlass\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare ior: number;\n\tpublic declare roughness: number;\n\tpublic declare transmission: number;\n\tpublic declare dispersion: number;\n\tpublic declare fresnelPower: number;\n\tpublic declare tintColor: string;\n\n\tconstructor(config: PBRGlassProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tior: config.ior ?? 1.49,\n\t\t\troughness: config.roughness ?? 0.15,\n\t\t\ttransmission: config.transmission ?? 0.92,\n\t\t\tdispersion: config.dispersion ?? 0.015,\n\t\t\tfresnelPower: config.fresnelPower ?? 5.0,\n\t\t\ttintColor: config.tintColor ?? \"#ffffff\",\n\t\t});\n\t}\n}\n\nexport interface DepthOfFieldProps {\n\tfocusDistance?: EffectProp<number>;\n\tfocalLength?: EffectProp<number>;\n\taperture?: EffectProp<number>;\n\tmaxBlur?: EffectProp<number>;\n\tquality?: \"low\" | \"medium\" | \"high\" | \"ultra\";\n}\n\nexport class DepthOfField extends Effect<\n\tDepthOfFieldProps,\n\t\"DepthOfField\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"DepthOfField\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare focusDistance: number;\n\tpublic declare focalLength: number;\n\tpublic declare aperture: number;\n\tpublic declare maxBlur: number;\n\tpublic declare quality: string;\n\n\tconstructor(config: DepthOfFieldProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tfocusDistance: config.focusDistance ?? 500,\n\t\t\tfocalLength: config.focalLength ?? 50,\n\t\t\taperture: config.aperture ?? 2.8,\n\t\t\tmaxBlur: config.maxBlur ?? 16,\n\t\t\tquality: config.quality ?? \"high\",\n\t\t});\n\t}\n}\n\nexport interface CropProps {\n\tcropType?: \"rect\" | \"path\";\n\tleftPercentage?: EffectProp<number>;\n\ttopPercentage?: EffectProp<number>;\n\twidthPercentage?: EffectProp<number>;\n\theightPercentage?: EffectProp<number>;\n\troundness?: EffectProp<number>;\n\tpathPoints?: { x: number; y: number }[];\n\tmode?: \"cropped\" | \"rest\";\n}\n\nexport class Crop extends Effect<CropProps, \"Crop\", \"visual\"> {\n\tpublic readonly op = \"Crop\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare cropType: \"rect\" | \"path\";\n\tpublic declare leftPercentage: number;\n\tpublic declare topPercentage: number;\n\tpublic declare widthPercentage: number;\n\tpublic declare heightPercentage: number;\n\tpublic declare roundness: number;\n\tpublic declare pathPoints?: { x: number; y: number }[];\n\tpublic declare mode?: \"cropped\" | \"rest\";\n\n\tconstructor(config: CropProps = {}) {\n\t\tsuper({\n\t\t\tcropType: config.cropType ?? \"rect\",\n\t\t\tleftPercentage: config.leftPercentage ?? 0,\n\t\t\ttopPercentage: config.topPercentage ?? 0,\n\t\t\twidthPercentage: config.widthPercentage ?? 100,\n\t\t\theightPercentage: config.heightPercentage ?? 100,\n\t\t\troundness: config.roundness ?? 0,\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport interface VisionProps {\n\t/** Track COCO-80 objects (RTMDet-Ins boxes). Default true. */\n\tenableDetection?: boolean;\n\t/** Per-instance masks (RTMDet-Ins). Shares the detection pass. */\n\tenableSegmentation?: boolean;\n\t/** COCO-17 keypoints per person (RTMO). */\n\tenablePose?: boolean;\n\t/** Fast person-vs-background alpha (Selfie Segmenter). */\n\tenableMatte?: boolean;\n\t/** COCO class-name filter (all classes when omitted). */\n\tclasses?: readonly string[];\n\t/** Minimum detection score, 0..1. Default 0.3. */\n\tconfidence?: number;\n\t/** Model size: `t` fastest · `s` default · `m` most accurate. */\n\tvariant?: \"t\" | \"s\" | \"m\";\n\tmode?:\n\t\t| \"passthrough\"\n\t\t| \"mask\"\n\t\t| \"matte\"\n\t\t| \"crop\"\n\t\t| \"skeleton\"\n\t\t| \"boxes\"\n\t\t| \"tracking\";\n\t/**\n\t * Subject alpha for mask/matte/crop: instance masks (default; any COCO class) or the\n\t * selfie matte (fastest, but only reliable when a person fills much of the frame).\n\t */\n\tmatteSource?: \"instance\" | \"selfie\";\n\t/** Frames a track may go unseen before it is dropped. Default 15. */\n\tmaxMissedFrames?: number;\n\tmodelsDir?: string;\n\tbaseUrl?: string;\n\tmaskThreshold?: number;\n\tfeatherRadius?: number;\n\t/** Grow the subject into connected pixels that stand out from the backdrop. */\n\tkeyBackground?: boolean;\n\t/** Colour-distance threshold for the background key (lower → more growth). Default 70. */\n\tbackgroundKeyThreshold?: number;\n\tvisionBundle?: unknown;\n}\n\n/**\n * On-device vision: tracks objects, segments instances, estimates pose and mattes people on\n * the rendered frame, feeding reactive signals. Models download lazily on first use.\n */\nexport class Vision extends Effect<VisionProps, \"Vision\", \"visual\"> {\n\tpublic readonly op = \"Vision\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare enableDetection?: boolean;\n\tpublic declare enableSegmentation?: boolean;\n\tpublic declare enablePose?: boolean;\n\tpublic declare enableMatte?: boolean;\n\tpublic declare classes?: readonly string[];\n\tpublic declare confidence?: number;\n\tpublic declare variant?: VisionProps[\"variant\"];\n\tpublic declare mode?: VisionProps[\"mode\"];\n\tpublic declare matteSource?: VisionProps[\"matteSource\"];\n\tpublic declare maxMissedFrames?: number;\n\tpublic declare modelsDir?: string;\n\tpublic declare baseUrl?: string;\n\tpublic declare maskThreshold?: number;\n\tpublic declare featherRadius?: number;\n\tpublic declare keyBackground?: boolean;\n\tpublic declare backgroundKeyThreshold?: number;\n\tpublic declare visionBundle?: unknown;\n\n\tconstructor(config: VisionProps = {}) {\n\t\tsuper({\n\t\t\tenableDetection: config.enableDetection !== false,\n\t\t\tenableSegmentation: config.enableSegmentation === true,\n\t\t\tenablePose: config.enablePose === true,\n\t\t\tenableMatte: config.enableMatte === true,\n\t\t\tconfidence: config.confidence ?? 0.3,\n\t\t\tvariant: config.variant ?? \"s\",\n\t\t\tmode: config.mode ?? \"passthrough\",\n\t\t\tmatteSource: config.matteSource ?? \"instance\",\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport interface Relight3DProps {\n\tlightType?: \"Point\" | \"Spot\" | \"Directional\" | \"Rim\";\n\tintensity?: EffectProp<number>;\n\tlightPosX?: EffectProp<number>;\n\tlightPosY?: EffectProp<number>;\n\tlightPosZ?: EffectProp<number>;\n\tlightRadius?: EffectProp<number>;\n\tspotConeAngle?: EffectProp<number>;\n\tspecularRoughness?: EffectProp<number>;\n\tspecularStrength?: EffectProp<number>;\n\tmetallic?: EffectProp<number>;\n\tambientIntensity?: EffectProp<number>;\n\tvolumetricDensity?: EffectProp<number>;\n\tdepthScale?: EffectProp<number>;\n\tdepthInvert?: boolean;\n\tlightColor?: string;\n\tambientColor?: string;\n\tnormalMap?: unknown;\n}\n\nexport class Relight3D extends Effect<Relight3DProps, \"Relight3D\", \"visual\"> {\n\tpublic readonly op = \"Relight3D\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare lightType: Relight3DProps[\"lightType\"];\n\tpublic declare intensity: number;\n\tpublic declare lightPosX: number;\n\tpublic declare lightPosY: number;\n\tpublic declare lightPosZ: number;\n\tpublic declare lightRadius: number;\n\tpublic declare spotConeAngle: number;\n\tpublic declare specularRoughness: number;\n\tpublic declare specularStrength: number;\n\tpublic declare metallic: number;\n\tpublic declare ambientIntensity: number;\n\tpublic declare volumetricDensity: number;\n\tpublic declare depthScale: number;\n\tpublic declare depthInvert: boolean;\n\tpublic declare lightColor: string;\n\tpublic declare ambientColor: string;\n\tpublic declare normalMap: unknown;\n\n\tconstructor(config: Relight3DProps = {}) {\n\t\tsuper({\n\t\t\tlightType: config.lightType ?? \"Point\",\n\t\t\tintensity: config.intensity ?? 1.0,\n\t\t\tlightPosX: config.lightPosX ?? 0.5,\n\t\t\tlightPosY: config.lightPosY ?? 0.5,\n\t\t\tlightPosZ: config.lightPosZ ?? 0.3,\n\t\t\tlightRadius: config.lightRadius ?? 0.8,\n\t\t\tspotConeAngle: config.spotConeAngle ?? 45,\n\t\t\tspecularRoughness: config.specularRoughness ?? 0.35,\n\t\t\tspecularStrength: config.specularStrength ?? 0.7,\n\t\t\tmetallic: config.metallic ?? 0.0,\n\t\t\tambientIntensity: config.ambientIntensity ?? 0.4,\n\t\t\tvolumetricDensity: config.volumetricDensity ?? 0.2,\n\t\t\tdepthScale: config.depthScale ?? 1.0,\n\t\t\tdepthInvert: config.depthInvert ?? false,\n\t\t\tlightColor: config.lightColor ?? \"#ffffff\",\n\t\t\tambientColor: config.ambientColor ?? \"#ffffff\",\n\t\t\tnormalMap: config.normalMap,\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport interface DeflickerProps {\n\tblendWeight?: EffectProp<number>;\n\tdisocclusionThreshold?: EffectProp<number>;\n\tmaxMotionPixels?: EffectProp<number>;\n\tscale?: number;\n\twindowSize?: number;\n}\n\nexport class TemporalDeflicker extends Effect<\n\tDeflickerProps,\n\t\"TemporalDeflicker\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"TemporalDeflicker\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare blendWeight: number;\n\tpublic declare disocclusionThreshold: number;\n\tpublic declare maxMotionPixels: number;\n\tpublic declare scale: number;\n\tpublic declare windowSize: number;\n\n\tconstructor(config: DeflickerProps = {}) {\n\t\tsuper({\n\t\t\tblendWeight: config.blendWeight ?? 0.35,\n\t\t\tdisocclusionThreshold: config.disocclusionThreshold ?? 0.15,\n\t\t\tmaxMotionPixels: config.maxMotionPixels ?? 64.0,\n\t\t\tscale: config.scale ?? 0.5,\n\t\t\twindowSize: config.windowSize ?? 2,\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport interface ModulateProps {\n\thue?: EffectProp<number>;\n\tbrightness?: EffectProp<number>;\n\tcontrast?: EffectProp<number>;\n\texposure?: EffectProp<number>;\n\tsaturation?: EffectProp<number>;\n\tsepia?: EffectProp<number>;\n}\n\nexport class Modulate extends Effect<ModulateProps, \"Modulate\", \"visual\"> {\n\tpublic readonly op = \"Modulate\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare hue: number;\n\tpublic declare brightness: number;\n\tpublic declare contrast: number;\n\tpublic declare exposure: number;\n\tpublic declare saturation: number;\n\tpublic declare sepia: number;\n\n\tconstructor(config: ModulateProps = {}) {\n\t\tsuper({\n\t\t\thue: config.hue ?? 0,\n\t\t\tbrightness: config.brightness ?? 1.0,\n\t\t\tcontrast: config.contrast ?? 1.0,\n\t\t\texposure: config.exposure ?? 0.0,\n\t\t\tsaturation: config.saturation ?? 1.0,\n\t\t\tsepia: config.sepia ?? 0.0,\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport type HandWrittenVisualEffect =\n\t| Levels\n\t| FilmGrain\n\t| CustomEffect\n\t| Curves\n\t| SelectiveColor\n\t| GradientMap\n\t| ShadowsHighlights\n\t| ApplyLUT\n\t| UnsharpMask\n\t| HighPass\n\t| HalftoneScreen\n\t| TileOffset\n\t| MotionBlur\n\t| SSAO\n\t| PBRGlass\n\t| DepthOfField\n\t| Crop\n\t| Vision\n\t| Relight3D\n\t| TemporalDeflicker\n\t| Modulate;\n\nexport type HandWrittenAudioEffect = AudioSignalExtractor;\n\nexport type AnyVisualEffect =\n\t| AnyGeneratedVisualEffect\n\t| HandWrittenVisualEffect;\nexport type AnyAudioEffect = AnyGeneratedAudioEffect | HandWrittenAudioEffect;\nexport type AnyEffect = AnyVisualEffect | AnyAudioEffect;\nexport type EffectOp = AnyEffect[\"op\"];\n\nexport interface EffectConfigMap extends GeneratedEffectConfigMap {\n\tLevels: LevelsProps;\n\tFilmGrain: FilmGrainProps;\n\tAudioSignalExtractor: AudioSignalExtractorProps;\n\tCurves: CurvesProps;\n\tSelectiveColor: SelectiveColorProps;\n\tGradientMap: GradientMapProps;\n\tShadowsHighlights: ShadowsHighlightsProps;\n\tApplyLUT: ApplyLUTProps;\n\tUnsharpMask: UnsharpMaskProps;\n\tHighPass: HighPassProps;\n\tHalftoneScreen: HalftoneScreenProps;\n\tTileOffset: TileOffsetProps;\n\tMotionBlur: MotionBlurProps;\n\tSSAO: SSAOProps;\n\tPBRGlass: PBRGlassProps;\n\tDepthOfField: DepthOfFieldProps;\n\tCrop: CropProps;\n\tVision: VisionProps;\n\tRelight3D: Relight3DProps;\n\tTemporalDeflicker: DeflickerProps;\n\tModulate: ModulateProps;\n}\n\nexport type EffectPropsFor<O extends EffectOp> = O extends keyof EffectConfigMap\n\t? EffectConfigMap[O]\n\t: Record<string, unknown>;\n"],"mappings":"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D,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD;CACD,mBAAmB;EAClB,MAAM,EACL,MAAM;GAAC;GAAY;GAAa;GAAQ;GAAW;GAAY;GAAQ,EACvE;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,GAAG;GACF,KAAK;GACL,KAAK;GACL;EACD;CACD,aAAa;EACZ,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD;CACD,MAAM;EACL,UAAU,EACT,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,aAAa,EAAE;EACf,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,OAAO,EACN,MAAM;GAAC;GAAW;GAAU;GAAO,EACnC;EACD;CACD,kBAAkB;EACjB,cAAc,EACb,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD,gBAAgB;GACf,KAAK;GACL,KAAK;GACL;EACD,aAAa;GACZ,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,cAAc;GACb,KAAK;GACL,KAAK;GACL;EACD,aAAa,EAAE;EACf;CACD,eAAe;EACd,YAAY,EACX,MAAM;GAAC;GAAQ;GAAQ;GAAQ;GAAM,EACrC;EACD,iBAAiB;GAChB,KAAK;GACL,KAAK;GACL;EACD;CACD,iBAAiB,EAChB,YAAY,EACX,MAAM;EAAC;EAAQ;EAAQ;EAAQ;EAAM,EACrC,EACD;CACD,cAAc;EACb,SAAS,EACR,OAAO;GACN,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,cAAc;IACb,KAAK;IACL,KAAK;IACL;GACD,YAAY;IACX,KAAK;IACL,KAAK;IACL;GACD,EACD;EACD,UAAU,EACT,OAAO;GACN,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,cAAc;IACb,KAAK;IACL,KAAK;IACL;GACD,YAAY;IACX,KAAK;IACL,KAAK;IACL;GACD,EACD;EACD,YAAY,EACX,OAAO;GACN,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,cAAc;IACb,KAAK;IACL,KAAK;IACL;GACD,YAAY;IACX,KAAK;IACL,KAAK;IACL;GACD,EACD;EACD,oBAAoB,EAAE;EACtB;CACD,UAAU;EACT,UAAU,EAAE;EACZ,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,kBAAkB;GACjB,KAAK;GACL,KAAK;GACL;EACD,YAAY,EACX,MAAM,CAAC,OAAO,MAAM,EACpB;EACD,sBAAsB,EACrB,MAAM;GAAC;GAAc;GAAc;GAAO,EAC1C;EACD;CACD,SAAS;EACR,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,WAAW,EAAE;EACb,MAAM,EACL,MAAM;GAAC;GAAU;GAAQ;GAAO,EAChC;EACD,WAAW,EAAE;EACb,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD;CACD,WAAW,EACV,QAAQ,EAAE,EACV;CACD,KAAK;EACJ,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD;CACD,UAAU;EACT,WAAW,EAAE;EACb,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD;CACD,iBAAiB;EAChB,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,UAAU,EACT,MAAM;GAAC;GAAO;GAAS;GAAQ;GAAS;GAAY,EACpD;EACD,UAAU,EACT,MAAM;GAAC;GAAO;GAAS;GAAQ;GAAS;GAAY,EACpD;EACD,UAAU,EACT,MAAM;GAAC;GAAS;GAAU;GAAS,EACnC;EACD;CACD,QAAQ;EACP,MAAM,EACL,MAAM;GAAC;GAAS;GAAS;GAAW,EACpC;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,YAAY,EAAE;EACd,MAAM,EAAE;EACR,OAAO,EAAE;EACT;CACD,YAAY;EACX,UAAU,EACT,MAAM,CAAC,iBAAiB,cAAc,EACtC;EACD,cAAc;GACb,KAAK;GACL,KAAK;GACL;EACD;CACD,MAAM;EACL,YAAY,EAAE;EACd,UAAU,EAAE;EACZ,UAAU,EAAE;EACZ,MAAM,EACL,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,UAAU,EACT,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD;CACD,OAAO;EACN,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD;CACD,aAAa;EACZ,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,MAAM,EACL,MAAM,CAAC,aAAa,SAAS,EAC7B;EACD;CACD,cAAc;EACb,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD;CACD,UAAU;EACT,WAAW,EAAE;EACb,gBAAgB;GACf,KAAK;GACL,KAAK;GACL;EACD,eAAe,EACd,MAAM,CAAC,UAAU,SAAS,EAC1B;EACD,aAAa,EACZ,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD;CACD,YAAY;EACX,YAAY,EACX,OAAO;GACN,SAAS,EAAE;GACX,OAAO,EAAE;GACT,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,OAAO;IACN,KAAK;IACL,KAAK;IACL;GACD,UAAU;IACT,KAAK;IACL,KAAK;IACL;GACD,QAAQ;IACP,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,WAAW,EAAE;GACb,EACD;EACD,aAAa,EACZ,OAAO;GACN,SAAS,EAAE;GACX,OAAO,EAAE;GACT,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,OAAO;IACN,KAAK;IACL,KAAK;IACL;GACD,UAAU;IACT,KAAK;IACL,KAAK;IACL;GACD,OAAO;IACN,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,WAAW,EAAE;GACb,EACD;EACD,WAAW,EACV,OAAO;GACN,SAAS,EAAE;GACX,OAAO,EAAE;GACT,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,QAAQ;IACP,KAAK;IACL,KAAK;IACL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KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD;CACD,OAAO;EACN,SAAS,EACR,MAAM;GAAC;GAAW;GAAS;GAAW;GAAQ,EAC9C;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,QAAQ,EAAE;EACV,QAAQ,EAAE;EACV;CACD,OAAO;EACN,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,gBAAgB,EAAE;EAClB,aAAa,EAAE;EACf,iBAAiB,EAAE;EACnB,SAAS,EAAE;EACX;CACD,WAAW;EACV,OAAO,EACN,MAAM,CAAC,OAAO,aAAa,EAC3B;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,eAAe;GACd,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD;CACD,WAAW;EACV,SAAS,EAAE;EACX,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,cAAc;GACb,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,MAAM,EACL,MAAM;GAAC;GAAS;GAAgB;GAAkB,EAClD;EACD;CACD,UAAU;EACT,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,OAAO,EACN,MAAM;GAAC;GAAU;GAAU;GAAU,EACrC;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD;CACD,WAAW;EACV,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,SAAS,EACR,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,QAAQ,EAAE;EACV,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD;CACD,eAAe;EACd,YAAY,EACX,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,YAAY,EACX,MAAM,CAAC,SAAS,QAAQ,EACxB;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,YAAY,EAAE;EACd,UAAU,EAAE;EACZ,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD;CACD,YAAY;EACX,qBAAqB;GACpB,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,cAAc,EACb,MAAM;GAAC;GAAS;GAAa;GAAO;GAAS;GAAO,EACpD;EACD,YAAY,EACX,MAAM;GAAC;GAAa;GAAa;GAAoB,EACrD;EACD;CACD,sBAAsB;EACrB,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,iBAAiB;GAChB,KAAK;GACL,KAAK;GACL;EACD,mBAAmB;GAClB,KAAK;GACL,KAAK;GACL;EACD,cAAc;GACb,KAAK;GACL,KAAK;GACL;EACD,cAAc;GACb,KAAK;GACL,KAAK;GACL;EACD,aAAa;GACZ,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KA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"}
1
+ {"version":3,"file":"effects-Dy661XS_.mjs","names":[],"sources":["../src/effects/with-defaults.ts","../src/effects/generated/meta.ts","../src/effects/generated/classes.ts","../src/effects/custom/blur.ts","../src/effects/generated/registry.ts","../src/effects/classes.ts"],"sourcesContent":["import { isSignal } from \"@framefields/core\";\n\n/** Literal metadata for one prop, emitted into `generated/meta.ts`. */\nexport interface PropMeta {\n\treadonly min?: number;\n\treadonly max?: number;\n\treadonly enum?: readonly (string | number | boolean)[];\n\t/** Members of a nested object prop. */\n\treadonly props?: EffectMeta;\n}\n\nexport type EffectMeta = Readonly<Record<string, PropMeta>>;\n\nfunction env(name: string): string | undefined {\n\treturn typeof process !== \"undefined\" ? process.env?.[name] : undefined;\n}\n\n/** Throw instead of warn. Recommended for agent harnesses and CI. */\nfunction isStrict(): boolean {\n\tconst flag = env(\"FRAMEFIELDS_STRICT_PROPS\");\n\treturn flag === \"1\" || flag === \"true\";\n}\n\nfunction checksEnabled(): boolean {\n\treturn isStrict() || env(\"NODE_ENV\") !== \"production\";\n}\n\nconst reported = new Set<string>();\n\nfunction report(message: string): void {\n\tif (isStrict()) throw new Error(message);\n\tif (reported.has(message)) return;\n\treported.add(message);\n\tconsole.warn(`[framefields] ${message}`);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\tif (typeof value !== \"object\" || value === null) return false;\n\tif (Array.isArray(value) || isSignal(value)) return false;\n\tconst proto = Object.getPrototypeOf(value);\n\treturn proto === Object.prototype || proto === null;\n}\n\n/** Levenshtein distance, for \"did you mean\" suggestions on small key sets. */\nfunction distance(a: string, b: string): number {\n\tconst row = Array.from({ length: b.length + 1 }, (_, i) => i);\n\tfor (let i = 1; i <= a.length; i++) {\n\t\tlet prev = row[0];\n\t\trow[0] = i;\n\t\tfor (let j = 1; j <= b.length; j++) {\n\t\t\tconst current = row[j];\n\t\t\trow[j] = Math.min(\n\t\t\t\trow[j] + 1,\n\t\t\t\trow[j - 1] + 1,\n\t\t\t\tprev + (a[i - 1] === b[j - 1] ? 0 : 1),\n\t\t\t);\n\t\t\tprev = current;\n\t\t}\n\t}\n\treturn row[b.length];\n}\n\nfunction suggest(key: string, known: readonly string[]): string {\n\tlet best: string | undefined;\n\tlet bestScore = Number.POSITIVE_INFINITY;\n\tconst lower = key.toLowerCase();\n\tfor (const candidate of known) {\n\t\tconst candidateLower = candidate.toLowerCase();\n\t\tconst score =\n\t\t\tcandidateLower.includes(lower) || lower.includes(candidateLower)\n\t\t\t\t? 1\n\t\t\t\t: distance(lower, candidateLower);\n\t\tif (score < bestScore) {\n\t\t\tbestScore = score;\n\t\t\tbest = candidate;\n\t\t}\n\t}\n\tconst close = best && bestScore <= Math.max(2, Math.ceil(key.length / 2));\n\treturn close\n\t\t? ` Did you mean \"${best}\"?`\n\t\t: ` Known props: ${known.join(\", \")}.`;\n}\n\nfunction checkValue(path: string, value: unknown, meta: PropMeta): void {\n\tif (typeof value === \"number\") {\n\t\tconst { min, max } = meta;\n\t\tconst below = min !== undefined && value < min;\n\t\tconst above = max !== undefined && value > max;\n\t\tif (below || above || Number.isNaN(value)) {\n\t\t\tconst range =\n\t\t\t\tmin !== undefined && max !== undefined\n\t\t\t\t\t? `${min} to ${max}`\n\t\t\t\t\t: min !== undefined\n\t\t\t\t\t\t? `≥ ${min}`\n\t\t\t\t\t\t: `≤ ${max}`;\n\t\t\treport(\n\t\t\t\tNumber.isNaN(value)\n\t\t\t\t\t? `${path} is NaN`\n\t\t\t\t\t: `${path} = ${value} is outside ${range}`,\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\tif (\n\t\tmeta.enum &&\n\t\t(typeof value === \"string\" || typeof value === \"boolean\") &&\n\t\t!meta.enum.includes(value)\n\t) {\n\t\treport(\n\t\t\t`${path} = ${JSON.stringify(value)} is not one of ${meta.enum\n\t\t\t\t.map((v) => JSON.stringify(v))\n\t\t\t\t.join(\", \")}`,\n\t\t);\n\t}\n}\n\nfunction checkProps(\n\tpath: string,\n\tconfig: Record<string, unknown>,\n\tmeta: EffectMeta,\n): void {\n\tconst known = Object.keys(meta);\n\tfor (const [key, value] of Object.entries(config)) {\n\t\tif (value === undefined) continue;\n\t\tconst propMeta = meta[key];\n\t\tif (!propMeta) {\n\t\t\treport(`${path}: unknown prop \"${key}\".${suggest(key, known)}`);\n\t\t\tcontinue;\n\t\t}\n\t\t// Signals and frame functions are sampled per frame; only static values\n\t\t// can be checked here.\n\t\tif (isSignal(value) || typeof value === \"function\") continue;\n\t\tif (propMeta.props && isPlainObject(value)) {\n\t\t\tcheckProps(`${path}.${key}`, value, propMeta.props);\n\t\t} else {\n\t\t\tcheckValue(`${path}.${key}`, value, propMeta);\n\t\t}\n\t}\n}\n\nfunction cloneDefault<T>(value: T): T {\n\treturn typeof value === \"object\" && value !== null\n\t\t? structuredClone(value)\n\t\t: value;\n}\n\n/**\n * Builds the initial config of a generated effect class.\n *\n * - `undefined` entries in `config` keep the default instead of overwriting it.\n * - When both the default and the supplied value are plain objects, they are\n * merged one level deep, so `new ColorBalance({ shadows: { cyanRed: 10 } })`\n * keeps the other two channels at their defaults.\n * - Object defaults are cloned per instance.\n * - Outside production, unknown props and out-of-range static values are\n * reported: a `console.warn` once per message, or a thrown `Error` when\n * `FRAMEFIELDS_STRICT_PROPS=1`. Unknown props are still passed through.\n */\nexport function withDefaults<T extends object>(\n\top: string,\n\tdefaults: Readonly<Partial<T>>,\n\tconfig: T,\n\tmeta: EffectMeta,\n): T {\n\tconst supplied = config as Record<string, unknown>;\n\tif (checksEnabled()) checkProps(op, supplied, meta);\n\n\tconst result: Record<string, unknown> = {};\n\tfor (const [key, value] of Object.entries(defaults)) {\n\t\tresult[key] = cloneDefault(value);\n\t}\n\tfor (const [key, value] of Object.entries(supplied)) {\n\t\tif (value === undefined) continue;\n\t\tconst base = result[key];\n\t\tresult[key] =\n\t\t\tisPlainObject(base) && isPlainObject(value)\n\t\t\t\t? {\n\t\t\t\t\t\t...base,\n\t\t\t\t\t\t...Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries(value).filter(([, v]) => v !== undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t}\n\t\t\t\t: value;\n\t}\n\treturn result as T;\n}\n","// @generated by scripts/generate-effects.mts — do not edit.\n// Source of truth: nodes/*/package.json (`framefields`) and nodes/*/src/shared/config.ts.\n// Regenerate with `pnpm run generate:effects`.\n\nimport type { EffectMeta } from \"../with-defaults.js\";\n\n/** Ranges and allowed values per effect prop, used by `withDefaults()` checks. */\nexport const effectMeta = {\n\tAscii: {\n\t\tcellSize: {\n\t\t\tmin: 4,\n\t\t\tmax: 64,\n\t\t},\n\t\tcolorMode: {\n\t\t\tenum: [\"mono\", \"source\", \"green\"],\n\t\t},\n\t\tfg: {},\n\t\tbg: {},\n\t\tcontrast: {\n\t\t\tmin: 0.5,\n\t\t\tmax: 3,\n\t\t},\n\t\tinvert: {},\n\t},\n\tAudioCompressor: {\n\t\tthreshold: {\n\t\t\tmin: -60,\n\t\t\tmax: 0,\n\t\t},\n\t\tratio: {\n\t\t\tmin: 1,\n\t\t\tmax: 100,\n\t\t},\n\t\tattack: {\n\t\t\tmin: 0.0001,\n\t\t\tmax: 1,\n\t\t},\n\t\trelease: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 5,\n\t\t},\n\t\tknee: {\n\t\t\tmin: 0,\n\t\t\tmax: 24,\n\t\t},\n\t\tmakeupGain: {\n\t\t\tmin: 0,\n\t\t\tmax: 24,\n\t\t},\n\t},\n\tAudioDelay: {\n\t\tdelayTime: {\n\t\t\tmin: 0.001,\n\t\t\tmax: 5,\n\t\t},\n\t\tfeedback: {\n\t\t\tmin: 0,\n\t\t\tmax: 0.95,\n\t\t},\n\t\twet: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tdry: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tpingPong: {},\n\t},\n\tAudioFade: {\n\t\tfadeInDuration: {\n\t\t\tmin: 0,\n\t\t\tmax: 60,\n\t\t},\n\t\tfadeOutDuration: {\n\t\t\tmin: 0,\n\t\t\tmax: 60,\n\t\t},\n\t\tfadeInCurve: {\n\t\t\tenum: [\"linear\", \"exponential\", \"scurve\"],\n\t\t},\n\t\tfadeOutCurve: {\n\t\t\tenum: [\"linear\", \"exponential\", \"scurve\"],\n\t\t},\n\t},\n\tAudioNoiseGate: {\n\t\tthreshold: {\n\t\t\tmin: -120,\n\t\t\tmax: 0,\n\t\t},\n\t\tattack: {\n\t\t\tmin: 0.0001,\n\t\t\tmax: 1,\n\t\t},\n\t\thold: {\n\t\t\tmin: 0.001,\n\t\t\tmax: 5,\n\t\t},\n\t\trelease: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 5,\n\t\t},\n\t\trange: {\n\t\t\tmin: -120,\n\t\t\tmax: 0,\n\t\t},\n\t},\n\tAudioParametricEq: {\n\t\ttype: {\n\t\t\tenum: [\"lowShelf\", \"highShelf\", \"peak\", \"lowPass\", \"highPass\", \"notch\"],\n\t\t},\n\t\tfrequency: {\n\t\t\tmin: 20,\n\t\t\tmax: 20000,\n\t\t},\n\t\tgain: {\n\t\t\tmin: -24,\n\t\t\tmax: 24,\n\t\t},\n\t\tq: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 10,\n\t\t},\n\t},\n\tAudioReverb: {\n\t\troomSize: {\n\t\t\tmin: 0,\n\t\t\tmax: 0.98,\n\t\t},\n\t\tdamping: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\twet: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tdry: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\twidth: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t},\n\tBlur: {\n\t\tblurType: {\n\t\t\tenum: [\n\t\t\t\t\"Gaussian\",\n\t\t\t\t\"Box\",\n\t\t\t\t\"Median\",\n\t\t\t\t\"Motion\",\n\t\t\t\t\"Bilateral\",\n\t\t\t\t\"Edge-preserving\",\n\t\t\t\t\"Radial\",\n\t\t\t\t\"Zoom\",\n\t\t\t],\n\t\t},\n\t\tstrength: {\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t},\n\t\tangle: {\n\t\t\tmin: 0,\n\t\t\tmax: 360,\n\t\t},\n\t\tsigmaColor: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterX: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tpartialBlur: {},\n\t\tradius: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 1,\n\t\t},\n\t\tradiusY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tshape: {\n\t\t\tenum: [\"ellipse\", \"circle\", \"rect\"],\n\t\t},\n\t},\n\tCameraParallax3D: {\n\t\tmotionPreset: {\n\t\t\tenum: [\n\t\t\t\t\"Custom\",\n\t\t\t\t\"DollyZoom\",\n\t\t\t\t\"Orbit\",\n\t\t\t\t\"FlyThrough\",\n\t\t\t\t\"HandheldShake\",\n\t\t\t\t\"RackFocus\",\n\t\t\t],\n\t\t},\n\t\tpanX: {\n\t\t\tmin: -1,\n\t\t\tmax: 1,\n\t\t},\n\t\tpanY: {\n\t\t\tmin: -1,\n\t\t\tmax: 1,\n\t\t},\n\t\tdollyZ: {\n\t\t\tmin: -1,\n\t\t\tmax: 1,\n\t\t},\n\t\tfov: {\n\t\t\tmin: 15,\n\t\t\tmax: 120,\n\t\t},\n\t\tparallaxAmount: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t\tdofAperture: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tfocusPlane: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tedgeDilation: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tdepthInvert: {},\n\t},\n\tChannelMerger: {\n\t\tcolorSpace: {\n\t\t\tenum: [\"RGBA\", \"HSLA\", \"CMYK\", \"LAB\"],\n\t\t},\n\t\tdefaultChannel4: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t},\n\tChannelSplitter: {\n\t\tcolorSpace: {\n\t\t\tenum: [\"RGBA\", \"HSLA\", \"CMYK\", \"LAB\"],\n\t\t},\n\t},\n\tColorBalance: {\n\t\tshadows: {\n\t\t\tprops: {\n\t\t\t\tcyanRed: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tmagentaGreen: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tyellowBlue: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tmidtones: {\n\t\t\tprops: {\n\t\t\t\tcyanRed: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tmagentaGreen: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tyellowBlue: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\thighlights: {\n\t\t\tprops: {\n\t\t\t\tcyanRed: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tmagentaGreen: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tyellowBlue: {\n\t\t\t\t\tmin: -100,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tpreserveLuminosity: {},\n\t},\n\tColorKey: {\n\t\tkeyColor: {},\n\t\tsimilarity: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tsmoothness: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tspillSuppression: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcolorSpace: {\n\t\t\tenum: [\"YUV\", \"RGB\"],\n\t\t},\n\t\tspillSuppressionType: {\n\t\t\tenum: [\"Desaturate\", \"Neutralize\", \"None\"],\n\t\t},\n\t},\n\tContour: {\n\t\tlevels: {\n\t\t\tmin: 2,\n\t\t\tmax: 64,\n\t\t},\n\t\tlineWidth: {\n\t\t\tmin: 0.5,\n\t\t\tmax: 8,\n\t\t},\n\t\tlineColor: {},\n\t\tfill: {\n\t\t\tenum: [\"source\", \"flat\", \"none\"],\n\t\t},\n\t\tfillColor: {},\n\t\tsmoothing: {\n\t\t\tmin: 0,\n\t\t\tmax: 8,\n\t\t},\n\t},\n\tCornerPin: {\n\t\tpoints: {},\n\t},\n\tCRT: {\n\t\tscanlines: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tlineCount: {\n\t\t\tmin: 100,\n\t\t\tmax: 2160,\n\t\t},\n\t\tcurvature: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tmask: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tvignette: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tnoise: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tflicker: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\ttracking: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tchroma: {\n\t\t\tmin: 0,\n\t\t\tmax: 20,\n\t\t},\n\t},\n\tDatamosh: {\n\t\tkeyframes: {},\n\t\tstrength: {\n\t\t\tmin: 0,\n\t\t\tmax: 10,\n\t\t},\n\t\tbleed: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\twarmup: {\n\t\t\tmin: 1,\n\t\t\tmax: 240,\n\t\t},\n\t},\n\tDisplacementMap: {\n\t\tstrengthX: {\n\t\t\tmin: 0,\n\t\t\tmax: 500,\n\t\t},\n\t\tstrengthY: {\n\t\t\tmin: 0,\n\t\t\tmax: 500,\n\t\t},\n\t\txChannel: {\n\t\t\tenum: [\"Red\", \"Green\", \"Blue\", \"Alpha\", \"Luminance\"],\n\t\t},\n\t\tyChannel: {\n\t\t\tenum: [\"Red\", \"Green\", \"Blue\", \"Alpha\", \"Luminance\"],\n\t\t},\n\t\twrapMode: {\n\t\t\tenum: [\"Clamp\", \"Repeat\", \"Mirror\"],\n\t\t},\n\t},\n\tDither: {\n\t\tmode: {\n\t\t\tenum: [\"bayer\", \"noise\", \"halftone\"],\n\t\t},\n\t\tlevels: {\n\t\t\tmin: 2,\n\t\t\tmax: 16,\n\t\t},\n\t\tscale: {\n\t\t\tmin: 1,\n\t\t\tmax: 16,\n\t\t},\n\t\tmonochrome: {},\n\t\tdark: {},\n\t\tlight: {},\n\t},\n\tExtractLUT: {\n\t\tstrategy: {\n\t\t\tenum: [\"deterministic\", \"statistical\"],\n\t\t},\n\t\tsamplePoints: {\n\t\t\tmin: 10,\n\t\t\tmax: 500,\n\t\t},\n\t},\n\tFlip: {\n\t\thorizontal: {},\n\t\tvertical: {},\n\t\tdiagonal: {},\n\t\tmode: {\n\t\t\tenum: [\n\t\t\t\t\"horizontal\",\n\t\t\t\t\"vertical\",\n\t\t\t\t\"both\",\n\t\t\t\t\"diagonal\",\n\t\t\t\t\"antiDiagonal\",\n\t\t\t\t\"custom\",\n\t\t\t],\n\t\t},\n\t\tsymmetry: {\n\t\t\tenum: [\n\t\t\t\t\"none\",\n\t\t\t\t\"leftToRight\",\n\t\t\t\t\"rightToLeft\",\n\t\t\t\t\"topToBottom\",\n\t\t\t\t\"bottomToTop\",\n\t\t\t\t\"quadrant\",\n\t\t\t],\n\t\t},\n\t},\n\tGooey: {\n\t\tradius: {\n\t\t\tmin: 1,\n\t\t\tmax: 60,\n\t\t},\n\t\tthreshold: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tsoftness: {\n\t\t\tmin: 0.001,\n\t\t\tmax: 0.5,\n\t\t},\n\t},\n\tIridescence: {\n\t\tstrength: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tscale: {\n\t\t\tmin: 0.1,\n\t\t\tmax: 10,\n\t\t},\n\t\tshift: {\n\t\t\tmin: -3600,\n\t\t\tmax: 3600,\n\t\t},\n\t\tmode: {\n\t\t\tenum: [\"luminance\", \"relief\"],\n\t\t},\n\t},\n\tKaleidoscope: {\n\t\tsegments: {\n\t\t\tmin: 2,\n\t\t\tmax: 32,\n\t\t},\n\t\trotation: {\n\t\t\tmin: -3600,\n\t\t\tmax: 3600,\n\t\t},\n\t\tcenterX: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tzoom: {\n\t\t\tmin: 0.2,\n\t\t\tmax: 4,\n\t\t},\n\t},\n\tKenBurns: {\n\t\tkeyframes: {},\n\t\tmotionBlurSize: {\n\t\t\tmin: 0,\n\t\t\tmax: 10,\n\t\t},\n\t\tmovementStyle: {\n\t\t\tenum: [\"spline\", \"direct\"],\n\t\t},\n\t\taspectRatio: {\n\t\t\tenum: [\n\t\t\t\t\"input\",\n\t\t\t\t\"16:9\",\n\t\t\t\t\"9:16\",\n\t\t\t\t\"21:9\",\n\t\t\t\t\"9:21\",\n\t\t\t\t\"1:1\",\n\t\t\t\t\"4:3\",\n\t\t\t\t\"3:2\",\n\t\t\t\t\"2:3\",\n\t\t\t\t\"4:5\",\n\t\t\t\t\"5:4\",\n\t\t\t],\n\t\t},\n\t},\n\tLayerStyle: {\n\t\tdropShadow: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tangle: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 360,\n\t\t\t\t},\n\t\t\t\tdistance: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 500,\n\t\t\t\t},\n\t\t\t\tspread: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 250,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\tinnerShadow: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tangle: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 360,\n\t\t\t\t},\n\t\t\t\tdistance: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 500,\n\t\t\t\t},\n\t\t\t\tchoke: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 250,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\touterGlow: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 250,\n\t\t\t\t},\n\t\t\t\tspread: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\tinnerGlow: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 250,\n\t\t\t\t},\n\t\t\t\tspread: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\tstroke: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t},\n\t\t\t\tposition: {\n\t\t\t\t\tenum: [\"inside\", \"center\", \"outside\"],\n\t\t\t\t},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\tbevelEmboss: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tstyle: {\n\t\t\t\t\tenum: [\"InnerBevel\", \"OuterBevel\", \"Emboss\", \"PillowEmboss\"],\n\t\t\t\t},\n\t\t\t\ttechnique: {\n\t\t\t\t\tenum: [\"Smooth\", \"ChiselHard\", \"ChiselSoft\"],\n\t\t\t\t},\n\t\t\t\tdepth: {\n\t\t\t\t\tmin: 1,\n\t\t\t\t\tmax: 1000,\n\t\t\t\t},\n\t\t\t\tdirection: {\n\t\t\t\t\tenum: [\"Up\", \"Down\"],\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 250,\n\t\t\t\t},\n\t\t\t\tsoften: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 50,\n\t\t\t\t},\n\t\t\t\tangle: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 360,\n\t\t\t\t},\n\t\t\t\taltitude: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 90,\n\t\t\t\t},\n\t\t\t\thighlightColor: {},\n\t\t\t\thighlightOpacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tshadowColor: {},\n\t\t\t\tshadowOpacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tcolorOverlay: {\n\t\t\tprops: {\n\t\t\t\tenabled: {},\n\t\t\t\tcolor: {},\n\t\t\t\topacity: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 1,\n\t\t\t\t},\n\t\t\t\tblendMode: {},\n\t\t\t},\n\t\t},\n\t\tdropShadowAngleHandleId: {},\n\t\tdropShadowDistanceHandleId: {},\n\t\tdropShadowSpreadHandleId: {},\n\t\tdropShadowSizeHandleId: {},\n\t\tdropShadowOpacityHandleId: {},\n\t\tinnerShadowAngleHandleId: {},\n\t\tinnerShadowDistanceHandleId: {},\n\t\tinnerShadowChokeHandleId: {},\n\t\tinnerShadowSizeHandleId: {},\n\t\tinnerShadowOpacityHandleId: {},\n\t\touterGlowSizeHandleId: {},\n\t\touterGlowSpreadHandleId: {},\n\t\touterGlowOpacityHandleId: {},\n\t\tinnerGlowSizeHandleId: {},\n\t\tinnerGlowSpreadHandleId: {},\n\t\tinnerGlowOpacityHandleId: {},\n\t\tstrokeSizeHandleId: {},\n\t\tstrokeOpacityHandleId: {},\n\t\tbevelEmbossDepthHandleId: {},\n\t\tbevelEmbossSizeHandleId: {},\n\t\tbevelEmbossSoftenHandleId: {},\n\t\tbevelEmbossAngleHandleId: {},\n\t\tbevelEmbossAltitudeHandleId: {},\n\t\tbevelEmbossHighlightOpacityHandleId: {},\n\t\tbevelEmbossShadowOpacityHandleId: {},\n\t\tcolorOverlayOpacityHandleId: {},\n\t},\n\tLiquify: {\n\t\toperations: {},\n\t},\n\tMaskMath: {\n\t\toperation: {\n\t\t\tenum: [\n\t\t\t\t\"Union\",\n\t\t\t\t\"Intersect\",\n\t\t\t\t\"Subtract\",\n\t\t\t\t\"Difference\",\n\t\t\t\t\"Invert\",\n\t\t\t\t\"Dilate\",\n\t\t\t\t\"Erode\",\n\t\t\t\t\"Choke\",\n\t\t\t\t\"Feather\",\n\t\t\t],\n\t\t},\n\t\tradius: {\n\t\t\tmin: 0,\n\t\t\tmax: 200,\n\t\t},\n\t\tthreshold: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tclampMin: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tclampMax: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tchannelA: {\n\t\t\tenum: [\"Alpha\", \"Luminance\", \"Red\", \"Green\", \"Blue\"],\n\t\t},\n\t\tchannelB: {\n\t\t\tenum: [\"Alpha\", \"Luminance\", \"Red\", \"Green\", \"Blue\"],\n\t\t},\n\t\tbinarize: {},\n\t\tinvertResult: {},\n\t\toutputFormat: {\n\t\t\tenum: [\"WhiteWithAlpha\", \"GrayscaleRGB\", \"AlphaOnly\", \"PassthroughRGB\"],\n\t\t},\n\t},\n\tMeshWarp: {\n\t\tcols: {\n\t\t\tmin: 2,\n\t\t\tmax: 12,\n\t\t},\n\t\trows: {\n\t\t\tmin: 2,\n\t\t\tmax: 12,\n\t\t},\n\t\tpoints: {},\n\t},\n\tNoiseGenerator: {\n\t\tnoiseType: {\n\t\t\tenum: [\"Perlin\", \"Simplex\", \"Voronoi\"],\n\t\t},\n\t\toutputType: {\n\t\t\tenum: [\"Image\", \"Video\"],\n\t\t},\n\t\twidth: {\n\t\t\tmin: 16,\n\t\t\tmax: 4096,\n\t\t},\n\t\theight: {\n\t\t\tmin: 16,\n\t\t\tmax: 4096,\n\t\t},\n\t\tscale: {\n\t\t\tmin: 0.1,\n\t\t\tmax: 100,\n\t\t},\n\t\toctaves: {\n\t\t\tmin: 1,\n\t\t\tmax: 8,\n\t\t},\n\t\tpersistence: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tlacunarity: {\n\t\t\tmin: 1,\n\t\t\tmax: 4,\n\t\t},\n\t\tspeed: {\n\t\t\tmin: 0,\n\t\t\tmax: 10,\n\t\t},\n\t\tcolorStart: {},\n\t\tcolorEnd: {},\n\t\tdurationMs: {\n\t\t\tmin: 1,\n\t\t\tmax: 60000,\n\t\t},\n\t\tfps: {\n\t\t\tmin: 1,\n\t\t\tmax: 120,\n\t\t},\n\t},\n\tOpArt: {\n\t\tpattern: {\n\t\t\tenum: [\"stripes\", \"rings\", \"checker\", \"waves\"],\n\t\t},\n\t\tfrequency: {\n\t\t\tmin: 2,\n\t\t\tmax: 300,\n\t\t},\n\t\tangle: {\n\t\t\tmin: -360,\n\t\t\tmax: 360,\n\t\t},\n\t\twarp: {\n\t\t\tmin: 0,\n\t\t\tmax: 3,\n\t\t},\n\t\tsource: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcolorA: {},\n\t\tcolorB: {},\n\t},\n\tPaint: {\n\t\twidth: {\n\t\t\tmin: 1,\n\t\t\tmax: 16384,\n\t\t},\n\t\theight: {\n\t\t\tmin: 1,\n\t\t\tmax: 16384,\n\t\t},\n\t\tmaintainAspect: {},\n\t\taspectRatio: {},\n\t\tbackgroundColor: {},\n\t\tstrokes: {},\n\t},\n\tPainterly: {\n\t\tstyle: {\n\t\t\tenum: [\"oil\", \"watercolor\"],\n\t\t},\n\t\tradius: {\n\t\t\tmin: 2,\n\t\t\tmax: 12,\n\t\t},\n\t\tedgeDarkening: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tpaper: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tsaturation: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t},\n\tPatchHeal: {\n\t\tpatches: {},\n\t\tcenterX: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\toffsetX: {\n\t\t\tmin: -4096,\n\t\t\tmax: 4096,\n\t\t},\n\t\toffsetY: {\n\t\t\tmin: -4096,\n\t\t\tmax: 4096,\n\t\t},\n\t\tradius: {\n\t\t\tmin: 1,\n\t\t\tmax: 500,\n\t\t},\n\t\tsourceRadius: {\n\t\t\tmin: 1,\n\t\t\tmax: 500,\n\t\t},\n\t\tfeather: {\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t},\n\t\topacity: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tmode: {\n\t\t\tenum: [\"Clone\", \"SeamlessHeal\", \"TextureTransfer\"],\n\t\t},\n\t},\n\tPixelate: {\n\t\tsize: {\n\t\t\tmin: 1,\n\t\t\tmax: 256,\n\t\t},\n\t\tshape: {\n\t\t\tenum: [\"square\", \"circle\", \"diamond\"],\n\t\t},\n\t\tgap: {\n\t\t\tmin: 0,\n\t\t\tmax: 0.9,\n\t\t},\n\t},\n\tPosterize: {\n\t\tlevels: {\n\t\t\tmin: 2,\n\t\t\tmax: 64,\n\t\t},\n\t\tpalette: {\n\t\t\tenum: [\n\t\t\t\t\"none\",\n\t\t\t\t\"gameboy\",\n\t\t\t\t\"teletext\",\n\t\t\t\t\"cga\",\n\t\t\t\t\"pico8\",\n\t\t\t\t\"c64\",\n\t\t\t\t\"grayscale\",\n\t\t\t\t\"sepia\",\n\t\t\t\t\"custom\",\n\t\t\t],\n\t\t},\n\t\tcolors: {},\n\t\tdither: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tpixelSize: {\n\t\t\tmin: 1,\n\t\t\tmax: 64,\n\t\t},\n\t},\n\tProceduralVFX: {\n\t\teffectType: {\n\t\t\tenum: [\n\t\t\t\t\"Smoke\",\n\t\t\t\t\"Fire\",\n\t\t\t\t\"Rain\",\n\t\t\t\t\"Sparks\",\n\t\t\t\t\"Snow\",\n\t\t\t\t\"Dust\",\n\t\t\t\t\"Lightning\",\n\t\t\t\t\"Magic\",\n\t\t\t\t\"LensFlare\",\n\t\t\t\t\"Embers\",\n\t\t\t\t\"EnergyBeam\",\n\t\t\t\t\"Aurora\",\n\t\t\t],\n\t\t},\n\t\toutputType: {\n\t\t\tenum: [\"Image\", \"Video\"],\n\t\t},\n\t\twidth: {\n\t\t\tmin: 16,\n\t\t\tmax: 4096,\n\t\t},\n\t\theight: {\n\t\t\tmin: 16,\n\t\t\tmax: 4096,\n\t\t},\n\t\tdensity: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tscale: {\n\t\t\tmin: 0.001,\n\t\t\tmax: 10,\n\t\t},\n\t\tspeed: {\n\t\t\tmin: 0,\n\t\t\tmax: 10,\n\t\t},\n\t\tintensity: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tseed: {\n\t\t\tmin: 0,\n\t\t\tmax: 1000000,\n\t\t},\n\t\tcolorStart: {},\n\t\tcolorEnd: {},\n\t\tdurationMs: {\n\t\t\tmin: 100,\n\t\t\tmax: 100000,\n\t\t},\n\t\tfps: {\n\t\t\tmin: 1,\n\t\t\tmax: 120,\n\t\t},\n\t},\n\tRefineEdge: {\n\t\tdecontaminateAmount: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tradius: {\n\t\t\tmin: 0.5,\n\t\t\tmax: 50,\n\t\t},\n\t\tsmooth: {\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t},\n\t\tfeather: {\n\t\t\tmin: 0,\n\t\t\tmax: 50,\n\t\t},\n\t\tshiftEdge: {\n\t\t\tmin: -100,\n\t\t\tmax: 100,\n\t\t},\n\t\tmatteChannel: {\n\t\t\tenum: [\"Alpha\", \"Luminance\", \"Red\", \"Green\", \"Blue\"],\n\t\t},\n\t\toutputMode: {\n\t\t\tenum: [\"Composite\", \"MatteOnly\", \"DecontaminatedRGB\"],\n\t\t},\n\t},\n\tRefractionCaustics3D: {\n\t\tior: {\n\t\t\tmin: 1,\n\t\t\tmax: 2.5,\n\t\t},\n\t\tdispersion: {\n\t\t\tmin: 0,\n\t\t\tmax: 0.2,\n\t\t},\n\t\trefractionScale: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t\tcausticBrightness: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t\tcausticScale: {\n\t\t\tmin: 0.1,\n\t\t\tmax: 5,\n\t\t},\n\t\tfluidRipples: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\trippleSpeed: {\n\t\t\tmin: 0,\n\t\t\tmax: 5,\n\t\t},\n\t\troughness: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tspecularIntensity: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t\tlightPosX: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tlightPosY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\ttintColor: {},\n\t\ttintStrength: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tdepthInvert: {},\n\t\tdepthScale: {\n\t\t\tmin: 0.1,\n\t\t\tmax: 5,\n\t\t},\n\t},\n\tResizerScaler: {\n\t\taspectRatioPreset: {\n\t\t\tenum: [\"9:16\", \"16:9\", \"1:1\", \"4:5\", \"21:9\", \"custom\"],\n\t\t},\n\t\tresolutionPreset: {\n\t\t\tenum: [\"4k\", \"1080p\", \"720p\", \"480p\", \"custom\"],\n\t\t},\n\t\ttargetWidth: {\n\t\t\tmin: 1,\n\t\t\tmax: 8192,\n\t\t},\n\t\ttargetHeight: {\n\t\t\tmin: 1,\n\t\t\tmax: 8192,\n\t\t},\n\t\tfitMode: {\n\t\t\tenum: [\"cover\", \"contain\", \"stretch\", \"manual\"],\n\t\t},\n\t\tzoom: {\n\t\t\tmin: 1,\n\t\t\tmax: 1000,\n\t\t},\n\t\toffsetX: {\n\t\t\tmin: -8192,\n\t\t\tmax: 8192,\n\t\t},\n\t\toffsetY: {\n\t\t\tmin: -8192,\n\t\t\tmax: 8192,\n\t\t},\n\t\tbackgroundMode: {\n\t\t\tenum: [\"solid\", \"blurred\", \"gradient\", \"transparent\"],\n\t\t},\n\t\tbackgroundColor: {},\n\t\tbackgroundColor2: {},\n\t\tblurRadius: {\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t},\n\t\tbackgroundBrightness: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tanchorX: {\n\t\t\tenum: [\"left\", \"center\", \"right\"],\n\t\t},\n\t\tanchorY: {\n\t\t\tenum: [\"top\", \"center\", \"bottom\"],\n\t\t},\n\t},\n\tRGBSplit: {\n\t\tamount: {\n\t\t\tmin: 0,\n\t\t\tmax: 200,\n\t\t},\n\t\tangle: {\n\t\t\tmin: -360,\n\t\t\tmax: 360,\n\t\t},\n\t\tradial: {},\n\t},\n\tRotate: {\n\t\tangle: {},\n\t\tfit: {\n\t\t\tenum: [\"cover\", \"contain\", \"fill\"],\n\t\t},\n\t\tscale: {\n\t\t\tmin: 0.01,\n\t\t\tmax: 20,\n\t\t},\n\t},\n\tStereoPanning: {\n\t\tpan: {\n\t\t\tmin: -1,\n\t\t\tmax: 1,\n\t\t},\n\t},\n\tToon: {\n\t\tlevels: {\n\t\t\tmin: 2,\n\t\t\tmax: 12,\n\t\t},\n\t\tedgeThreshold: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tedgeWidth: {\n\t\t\tmin: 0.5,\n\t\t\tmax: 4,\n\t\t},\n\t\tedgeColor: {},\n\t\tsaturation: {\n\t\t\tmin: 0,\n\t\t\tmax: 2,\n\t\t},\n\t},\n\tTrails: {\n\t\tdecay: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tmode: {\n\t\t\tenum: [\"blend\", \"over\", \"add\", \"max\"],\n\t\t},\n\t\tzoom: {\n\t\t\tmin: 0.5,\n\t\t\tmax: 2,\n\t\t},\n\t\trotation: {\n\t\t\tmin: -45,\n\t\t\tmax: 45,\n\t\t},\n\t\toffsetX: {\n\t\t\tmin: -500,\n\t\t\tmax: 500,\n\t\t},\n\t\toffsetY: {\n\t\t\tmin: -500,\n\t\t\tmax: 500,\n\t\t},\n\t\thueShift: {\n\t\t\tmin: -180,\n\t\t\tmax: 180,\n\t\t},\n\t\twarmup: {\n\t\t\tmin: 0,\n\t\t\tmax: 240,\n\t\t},\n\t},\n\tVignette: {\n\t\tstrength: {\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t},\n\t\tradius: {\n\t\t\tmin: 0.1,\n\t\t\tmax: 2,\n\t\t},\n\t\tsoftness: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\troundness: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterX: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t\tcenterY: {\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t},\n\t},\n} as const satisfies Record<string, EffectMeta>;\n","// @generated by scripts/generate-effects.mts — do not edit.\n// Source of truth: nodes/*/package.json (`framefields`) and nodes/*/src/shared/config.ts.\n// Regenerate with `pnpm run generate:effects`.\n\nimport { Effect } from \"@framefields/core\";\nimport type { EffectProp } from \"../types.js\";\nimport { withDefaults } from \"../with-defaults.js\";\nimport { effectMeta } from \"./meta.js\";\n\nexport interface CornerPinPointsItem {\n\t/** Range 0 to 100. */\n\tx: number;\n\t/** Range 0 to 100. */\n\ty: number;\n}\n\nexport interface KenBurnsKeyframesItem {\n\tid?: string;\n\t/** Range 0 to 20000. */\n\tdurationMs: number;\n\t/**\n\t * Range 0 to 20000.\n\t * @default 1000\n\t */\n\tholdMs: number;\n\t/** Range 1 to 20. */\n\tscale: number;\n\t/** Range 0 to 100. */\n\tx: number;\n\t/** Range 0 to 100. */\n\ty: number;\n\t/**\n\t * @default \"ease-in-out\"\n\t */\n\teasing: \"linear\" | \"ease-in\" | \"ease-out\" | \"ease-in-out\" | \"spring\";\n}\n\nexport interface LayerStyleBevelEmboss {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"InnerBevel\"\n\t */\n\tstyle: \"InnerBevel\" | \"OuterBevel\" | \"Emboss\" | \"PillowEmboss\";\n\t/**\n\t * @default \"Smooth\"\n\t */\n\ttechnique: \"Smooth\" | \"ChiselHard\" | \"ChiselSoft\";\n\t/**\n\t * Range 1 to 1000.\n\t * @default 100\n\t */\n\tdepth: number;\n\t/**\n\t * @default \"Up\"\n\t */\n\tdirection: \"Up\" | \"Down\";\n\t/**\n\t * Range 0 to 250.\n\t * @default 5\n\t */\n\tsize: number;\n\t/**\n\t * Range 0 to 50.\n\t * @default 0\n\t */\n\tsoften: number;\n\t/**\n\t * Range 0 to 360.\n\t * @default 120\n\t */\n\tangle: number;\n\t/**\n\t * Range 0 to 90.\n\t * @default 30\n\t */\n\taltitude: number;\n\t/**\n\t * @default \"#ffffff\"\n\t */\n\thighlightColor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\thighlightOpacity: number;\n\t/**\n\t * @default \"#000000\"\n\t */\n\tshadowColor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\tshadowOpacity: number;\n}\n\nexport interface LayerStyleColorOverlay {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"#ff0000\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 1\n\t */\n\topacity: number;\n\t/**\n\t * @default \"normal\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LayerStyleDropShadow {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"#000000\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\topacity: number;\n\t/**\n\t * Range 0 to 360.\n\t * @default 120\n\t */\n\tangle: number;\n\t/**\n\t * Range 0 to 500.\n\t * @default 10\n\t */\n\tdistance: number;\n\t/**\n\t * Range 0 to 100.\n\t * @default 0\n\t */\n\tspread: number;\n\t/**\n\t * Range 0 to 250.\n\t * @default 10\n\t */\n\tsize: number;\n\t/**\n\t * @default \"multiply\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LayerStyleInnerGlow {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"#ffffff\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\topacity: number;\n\t/**\n\t * Range 0 to 250.\n\t * @default 15\n\t */\n\tsize: number;\n\t/**\n\t * Range 0 to 100.\n\t * @default 0\n\t */\n\tspread: number;\n\t/**\n\t * @default \"screen\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LayerStyleInnerShadow {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"#000000\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\topacity: number;\n\t/**\n\t * Range 0 to 360.\n\t * @default 120\n\t */\n\tangle: number;\n\t/**\n\t * Range 0 to 500.\n\t * @default 5\n\t */\n\tdistance: number;\n\t/**\n\t * Range 0 to 100.\n\t * @default 0\n\t */\n\tchoke: number;\n\t/**\n\t * Range 0 to 250.\n\t * @default 5\n\t */\n\tsize: number;\n\t/**\n\t * @default \"multiply\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LayerStyleOuterGlow {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * @default \"#ffffff\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.75\n\t */\n\topacity: number;\n\t/**\n\t * Range 0 to 250.\n\t * @default 15\n\t */\n\tsize: number;\n\t/**\n\t * Range 0 to 100.\n\t * @default 0\n\t */\n\tspread: number;\n\t/**\n\t * @default \"screen\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LayerStyleStroke {\n\t/**\n\t * @default false\n\t */\n\tenabled: boolean;\n\t/**\n\t * Range 0 to 100.\n\t * @default 2\n\t */\n\tsize: number;\n\t/**\n\t * @default \"outside\"\n\t */\n\tposition: \"inside\" | \"center\" | \"outside\";\n\t/**\n\t * @default \"#ffffff\"\n\t */\n\tcolor: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 1\n\t */\n\topacity: number;\n\t/**\n\t * @default \"normal\"\n\t */\n\tblendMode: string;\n}\n\nexport interface LiquifyOperationsItem {\n\t/**\n\t * @default \"Bloat\"\n\t */\n\ttype: \"Push\" | \"Pull\" | \"Bloat\" | \"Pucker\" | \"TwirlCW\" | \"TwirlCCW\";\n\t/** Range 0 to 1. */\n\tx: number;\n\t/** Range 0 to 1. */\n\ty: number;\n\t/**\n\t * Range 0.01 to 1.\n\t * @default 0.15\n\t */\n\tradius: number;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.5\n\t */\n\tstrength: number;\n\t/**\n\t * Range -1 to 1.\n\t * @default 0\n\t */\n\tdx: number;\n\t/**\n\t * Range -1 to 1.\n\t * @default 0\n\t */\n\tdy: number;\n}\n\nexport interface MeshWarpPointsItem {\n\t/** Range 0 to 100. */\n\tx: number;\n\t/** Range 0 to 100. */\n\ty: number;\n}\n\nexport interface PaintStrokesItemOption1 {\n\t/**\n\t * @default \"brush\"\n\t */\n\tid: string;\n\ttool: \"brush\";\n\tpath: string;\n\tcolor: string;\n\tsize: number;\n\t/**\n\t * Range 0 to 1.\n\t * @default 1\n\t */\n\topacity: number;\n}\n\nexport interface PaintStrokesItemOption2 {\n\t/**\n\t * @default \"eraser\"\n\t */\n\tid: string;\n\ttool: \"eraser\";\n\tpath: string;\n\tsize: number;\n}\n\nexport interface PaintStrokesItemOption3 {\n\t/**\n\t * @default \"fill\"\n\t */\n\tid: string;\n\ttool: \"fill\";\n\timageData: string;\n\t/** Maximum 16384. */\n\twidth: number;\n\t/** Maximum 16384. */\n\theight: number;\n}\n\nexport interface PatchHealPatchesItem {\n\t/**\n\t * @default \"patch\"\n\t */\n\tid: string;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.5\n\t */\n\tcenterX: number;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.5\n\t */\n\tcenterY: number;\n\t/**\n\t * Range -4096 to 4096.\n\t * @default 50\n\t */\n\toffsetX: number;\n\t/**\n\t * Range -4096 to 4096.\n\t * @default 0\n\t */\n\toffsetY: number;\n\t/**\n\t * Range 1 to 500.\n\t * @default 25\n\t */\n\tradius: number;\n\t/**\n\t * Range 1 to 500.\n\t * @default 25\n\t */\n\tsourceRadius: number;\n\t/**\n\t * Range 0 to 100.\n\t * @default 50\n\t */\n\tfeather: number;\n\t/**\n\t * Range 0 to 1.\n\t * @default 1\n\t */\n\topacity: number;\n\t/**\n\t * @default \"SeamlessHeal\"\n\t */\n\tmode: \"Clone\" | \"SeamlessHeal\" | \"TextureTransfer\";\n}\n\nexport interface TonalShift {\n\t/**\n\t * Range -100 to 100.\n\t * @default 0\n\t */\n\tcyanRed: number;\n\t/**\n\t * Range -100 to 100.\n\t * @default 0\n\t */\n\tmagentaGreen: number;\n\t/**\n\t * Range -100 to 100.\n\t * @default 0\n\t */\n\tyellowBlue: number;\n}\n\nexport interface AsciiProps {\n\t/**\n\t * Character cell size, px.\n\t * Range 4 to 64. Accepts a signal.\n\t * @default 10\n\t */\n\tcellSize?: EffectProp<number>;\n\t/**\n\t * Glyph color: `fg`, the layer's own colors, or green phosphor.\n\t * @default \"mono\"\n\t */\n\tcolorMode?: \"mono\" | \"source\" | \"green\";\n\t/**\n\t * Glyph color (mono).\n\t * @default \"#e8e8e8\"\n\t */\n\tfg?: string;\n\t/**\n\t * Background color.\n\t * @default \"#0b0b0b\"\n\t */\n\tbg?: string;\n\t/**\n\t * Brightness contrast before picking glyphs.\n\t * Range 0.5 to 3. Accepts a signal.\n\t * @default 1.2\n\t */\n\tcontrast?: EffectProp<number>;\n\t/**\n\t * Dark areas get dense glyphs.\n\t * @default false\n\t */\n\tinvert?: boolean;\n}\n\nconst asciiDefaults: AsciiProps = {\n\tcellSize: 10,\n\tcolorMode: \"mono\",\n\tfg: \"#e8e8e8\",\n\tbg: \"#0b0b0b\",\n\tcontrast: 1.2,\n\tinvert: false,\n};\n\nexport class Ascii extends Effect<AsciiProps, \"Ascii\", \"visual\"> {\n\tpublic readonly op = \"Ascii\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare cellSize: number;\n\tpublic declare colorMode: \"mono\" | \"source\" | \"green\";\n\tpublic declare fg: string;\n\tpublic declare bg: string;\n\tpublic declare contrast: number;\n\tpublic declare invert: boolean;\n\n\tconstructor(config: AsciiProps = {}) {\n\t\tsuper(withDefaults(\"Ascii\", asciiDefaults, config, effectMeta.Ascii));\n\t}\n}\n\nexport interface AudioCompressorProps {\n\t/**\n\t * Level (dBFS) above which gain reduction begins (-60 to 0 dB). Can be modulated by a static number or dynamic signal.\n\t * Range -60 to 0. Accepts a signal.\n\t * @default -24\n\t */\n\tthreshold?: EffectProp<number>;\n\t/**\n\t * Input-to-output ratio above threshold (1 to 100). Can be modulated by a static number or dynamic signal.\n\t * Range 1 to 100. Accepts a signal.\n\t * @default 4\n\t */\n\tratio?: EffectProp<number>;\n\t/**\n\t * Seconds to reach full gain reduction (0.0001 to 1.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.0001 to 1. Accepts a signal.\n\t * @default 0.003\n\t */\n\tattack?: EffectProp<number>;\n\t/**\n\t * Seconds to recover gain after signal drops (0.01 to 5.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.01 to 5. Accepts a signal.\n\t * @default 0.25\n\t */\n\trelease?: EffectProp<number>;\n\t/**\n\t * dB range for soft-knee transition around threshold (0 to 24 dB). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 24. Accepts a signal.\n\t * @default 6\n\t */\n\tknee?: EffectProp<number>;\n\t/**\n\t * dBFS of gain applied after compression (0 to 24 dB). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 24. Accepts a signal.\n\t * @default 0\n\t */\n\tmakeupGain?: EffectProp<number>;\n}\n\nconst audioCompressorDefaults: AudioCompressorProps = {\n\tthreshold: -24,\n\tratio: 4,\n\tattack: 0.003,\n\trelease: 0.25,\n\tknee: 6,\n\tmakeupGain: 0,\n};\n\nexport class AudioCompressor extends Effect<\n\tAudioCompressorProps,\n\t\"AudioCompressor\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"AudioCompressor\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare threshold: number;\n\tpublic declare ratio: number;\n\tpublic declare attack: number;\n\tpublic declare release: number;\n\tpublic declare knee: number;\n\tpublic declare makeupGain: number;\n\n\tconstructor(config: AudioCompressorProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioCompressor\",\n\t\t\t\taudioCompressorDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioCompressor,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface AudioDelayProps {\n\t/**\n\t * Delay time in seconds (0.001 to 5.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.001 to 5. Accepts a signal.\n\t * @default 0.25\n\t */\n\tdelayTime?: EffectProp<number>;\n\t/**\n\t * Amount of delayed signal fed back into delay line (0.0 to 0.95). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 0.95. Accepts a signal.\n\t * @default 0.4\n\t */\n\tfeedback?: EffectProp<number>;\n\t/**\n\t * Mix level of the wet delayed signal (0.0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.3\n\t */\n\twet?: EffectProp<number>;\n\t/**\n\t * Mix level of the original dry signal (0.0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\tdry?: EffectProp<number>;\n\t/**\n\t * Alternates echo reflections between left and right channels\n\t * @default false\n\t */\n\tpingPong?: boolean;\n}\n\nconst audioDelayDefaults: AudioDelayProps = {\n\tdelayTime: 0.25,\n\tfeedback: 0.4,\n\twet: 0.3,\n\tdry: 1,\n\tpingPong: false,\n};\n\nexport class AudioDelay extends Effect<AudioDelayProps, \"AudioDelay\", \"audio\"> {\n\tpublic readonly op = \"AudioDelay\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare delayTime: number;\n\tpublic declare feedback: number;\n\tpublic declare wet: number;\n\tpublic declare dry: number;\n\tpublic declare pingPong: boolean;\n\n\tconstructor(config: AudioDelayProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioDelay\",\n\t\t\t\taudioDelayDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioDelay,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface AudioFadeProps {\n\t/**\n\t * Duration in seconds of fade in from silence (0 to 60s). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 60. Accepts a signal.\n\t * @default 0\n\t */\n\tfadeInDuration?: EffectProp<number>;\n\t/**\n\t * Duration in seconds of fade out to silence (0 to 60s). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 60. Accepts a signal.\n\t * @default 0\n\t */\n\tfadeOutDuration?: EffectProp<number>;\n\t/**\n\t * Envelope shape for fade in\n\t * @default \"linear\"\n\t */\n\tfadeInCurve?: \"linear\" | \"exponential\" | \"scurve\";\n\t/**\n\t * Envelope shape for fade out\n\t * @default \"linear\"\n\t */\n\tfadeOutCurve?: \"linear\" | \"exponential\" | \"scurve\";\n}\n\nconst audioFadeDefaults: AudioFadeProps = {\n\tfadeInDuration: 0,\n\tfadeOutDuration: 0,\n\tfadeInCurve: \"linear\",\n\tfadeOutCurve: \"linear\",\n};\n\nexport class AudioFade extends Effect<AudioFadeProps, \"AudioFade\", \"audio\"> {\n\tpublic readonly op = \"AudioFade\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare fadeInDuration: number;\n\tpublic declare fadeOutDuration: number;\n\tpublic declare fadeInCurve: \"linear\" | \"exponential\" | \"scurve\";\n\tpublic declare fadeOutCurve: \"linear\" | \"exponential\" | \"scurve\";\n\n\tconstructor(config: AudioFadeProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioFade\",\n\t\t\t\taudioFadeDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioFade,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface AudioNoiseGateProps {\n\t/**\n\t * dBFS level below which the gate closes (-120 to 0 dB). Can be modulated by a static number or dynamic signal.\n\t * Range -120 to 0. Accepts a signal.\n\t * @default -40\n\t */\n\tthreshold?: EffectProp<number>;\n\t/**\n\t * Seconds to open (fade in) when signal exceeds threshold (0.0001 to 1.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.0001 to 1. Accepts a signal.\n\t * @default 0.005\n\t */\n\tattack?: EffectProp<number>;\n\t/**\n\t * Seconds to stay open after signal drops below threshold (0.001 to 5.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.001 to 5. Accepts a signal.\n\t * @default 0.05\n\t */\n\thold?: EffectProp<number>;\n\t/**\n\t * Seconds to close (fade out) after hold expires (0.01 to 5.0s). Can be modulated by a static number or dynamic signal.\n\t * Range 0.01 to 5. Accepts a signal.\n\t * @default 0.1\n\t */\n\trelease?: EffectProp<number>;\n\t/**\n\t * dBFS floor when gate is closed (-120 to 0 dB). Can be modulated by a static number or dynamic signal.\n\t * Range -120 to 0. Accepts a signal.\n\t * @default -80\n\t */\n\trange?: EffectProp<number>;\n}\n\nconst audioNoiseGateDefaults: AudioNoiseGateProps = {\n\tthreshold: -40,\n\tattack: 0.005,\n\thold: 0.05,\n\trelease: 0.1,\n\trange: -80,\n};\n\nexport class AudioNoiseGate extends Effect<\n\tAudioNoiseGateProps,\n\t\"AudioNoiseGate\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"AudioNoiseGate\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare threshold: number;\n\tpublic declare attack: number;\n\tpublic declare hold: number;\n\tpublic declare release: number;\n\tpublic declare range: number;\n\n\tconstructor(config: AudioNoiseGateProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioNoiseGate\",\n\t\t\t\taudioNoiseGateDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioNoiseGate,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface AudioParametricEqProps {\n\t/**\n\t * Type of biquad filter\n\t * @default \"peak\"\n\t */\n\ttype?: \"lowShelf\" | \"highShelf\" | \"peak\" | \"lowPass\" | \"highPass\" | \"notch\";\n\t/**\n\t * Cutoff or center frequency in Hz (20 to 20000 Hz). Can be modulated by a static number or dynamic signal.\n\t * Range 20 to 20000. Accepts a signal.\n\t * @default 1000\n\t */\n\tfrequency?: EffectProp<number>;\n\t/**\n\t * Gain boost or cut in dB (-24 to 24 dB). Can be modulated by a static number or dynamic signal.\n\t * Range -24 to 24. Accepts a signal.\n\t * @default 0\n\t */\n\tgain?: EffectProp<number>;\n\t/**\n\t * Filter bandwidth / Q factor (0.01 to 10.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0.01 to 10. Accepts a signal.\n\t * @default 1\n\t */\n\tq?: EffectProp<number>;\n}\n\nconst audioParametricEqDefaults: AudioParametricEqProps = {\n\ttype: \"peak\",\n\tfrequency: 1000,\n\tgain: 0,\n\tq: 1,\n};\n\nexport class AudioParametricEq extends Effect<\n\tAudioParametricEqProps,\n\t\"AudioParametricEq\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"AudioParametricEq\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare type:\n\t\t| \"lowShelf\"\n\t\t| \"highShelf\"\n\t\t| \"peak\"\n\t\t| \"lowPass\"\n\t\t| \"highPass\"\n\t\t| \"notch\";\n\tpublic declare frequency: number;\n\tpublic declare gain: number;\n\tpublic declare q: number;\n\n\tconstructor(config: AudioParametricEqProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioParametricEq\",\n\t\t\t\taudioParametricEqDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioParametricEq,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface AudioReverbProps {\n\t/**\n\t * Room decay, size of simulated space (0 to 0.98). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 0.98. Accepts a signal.\n\t * @default 0.5\n\t */\n\troomSize?: EffectProp<number>;\n\t/**\n\t * High-frequency absorption (0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tdamping?: EffectProp<number>;\n\t/**\n\t * Mix level of the wet reverberated signal (0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.3\n\t */\n\twet?: EffectProp<number>;\n\t/**\n\t * Mix level of the original dry signal (0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\tdry?: EffectProp<number>;\n\t/**\n\t * Stereo spread of the reverb tail (0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\twidth?: EffectProp<number>;\n}\n\nconst audioReverbDefaults: AudioReverbProps = {\n\troomSize: 0.5,\n\tdamping: 0.5,\n\twet: 0.3,\n\tdry: 1,\n\twidth: 1,\n};\n\nexport class AudioReverb extends Effect<\n\tAudioReverbProps,\n\t\"AudioReverb\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"AudioReverb\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare roomSize: number;\n\tpublic declare damping: number;\n\tpublic declare wet: number;\n\tpublic declare dry: number;\n\tpublic declare width: number;\n\n\tconstructor(config: AudioReverbProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"AudioReverb\",\n\t\t\t\taudioReverbDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.AudioReverb,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface BlurBaseProps {\n\t/**\n\t * Blur Type\n\t * @default \"Gaussian\"\n\t */\n\tblurType?:\n\t\t| \"Gaussian\"\n\t\t| \"Box\"\n\t\t| \"Median\"\n\t\t| \"Motion\"\n\t\t| \"Bilateral\"\n\t\t| \"Edge-preserving\"\n\t\t| \"Radial\"\n\t\t| \"Zoom\";\n\t/**\n\t * The intensity of the blur. 0 = no blur. Can be modulated by a static number or a dynamic signal.\n\t * Range 0 to 100. Accepts a signal.\n\t * @default 5\n\t */\n\tstrength?: EffectProp<number>;\n\t/**\n\t * Direction of a Motion blur, in degrees.\n\t * Range 0 to 360. Accepts a signal.\n\t * @default 0\n\t */\n\tangle?: EffectProp<number>;\n\t/**\n\t * Sigma value for color space in Bilateral / Edge-preserving blurs. Can be modulated by a static number or a dynamic signal.\n\t * Range 0.01 to 1. Accepts a signal.\n\t * @default 0.1\n\t */\n\tsigmaColor?: EffectProp<number>;\n\t/**\n\t * The X coordinate of the blur center (0.0 to 1.0). Can be modulated by a static number or a dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterX?: EffectProp<number>;\n\t/**\n\t * The Y coordinate of the blur center (0.0 to 1.0). Can be modulated by a static number or a dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterY?: EffectProp<number>;\n\t/**\n\t * Blurs only a specific circular area around center point.\n\t * Accepts a signal.\n\t * @default false\n\t */\n\tpartialBlur?: EffectProp<boolean>;\n\t/**\n\t * Radius of the partial blur region (0.01 to 1.0). Can be modulated by a static number or a dynamic signal.\n\t * Range 0.01 to 1. Accepts a signal.\n\t * @default 0.3\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Vertical radius of the partial blur region (0 to 1.0). 0 reuses the horizontal radius.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tradiusY?: EffectProp<number>;\n\t/**\n\t * Shape of the partial blur region.\n\t * @default \"circle\"\n\t */\n\tshape?: \"ellipse\" | \"circle\" | \"rect\";\n}\n\nconst blurDefaults: BlurBaseProps = {\n\tblurType: \"Gaussian\",\n\tstrength: 5,\n\tangle: 0,\n\tsigmaColor: 0.1,\n\tcenterX: 0.5,\n\tcenterY: 0.5,\n\tpartialBlur: false,\n\tradius: 0.3,\n\tradiusY: 0,\n\tshape: \"circle\",\n};\n\n/** @internal Extended by `effects/custom/blur.ts`, which exports `Blur`. */\nexport class BlurBase extends Effect<BlurBaseProps, \"Blur\", \"visual\"> {\n\tpublic readonly op = \"Blur\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare blurType:\n\t\t| \"Gaussian\"\n\t\t| \"Box\"\n\t\t| \"Median\"\n\t\t| \"Motion\"\n\t\t| \"Bilateral\"\n\t\t| \"Edge-preserving\"\n\t\t| \"Radial\"\n\t\t| \"Zoom\";\n\tpublic declare strength: number;\n\tpublic declare angle: number;\n\tpublic declare sigmaColor: number;\n\tpublic declare centerX: number;\n\tpublic declare centerY: number;\n\tpublic declare partialBlur: boolean;\n\tpublic declare radius: number;\n\tpublic declare radiusY: number;\n\tpublic declare shape: \"ellipse\" | \"circle\" | \"rect\";\n\n\tconstructor(config: BlurBaseProps = {}) {\n\t\tsuper(withDefaults(\"Blur\", blurDefaults, config, effectMeta.Blur));\n\t}\n}\n\nexport interface CameraParallax3DProps {\n\t/**\n\t * Motion Preset\n\t * @default \"DollyZoom\"\n\t */\n\tmotionPreset?:\n\t\t| \"Custom\"\n\t\t| \"DollyZoom\"\n\t\t| \"Orbit\"\n\t\t| \"FlyThrough\"\n\t\t| \"HandheldShake\"\n\t\t| \"RackFocus\";\n\t/**\n\t * Horizontal camera pan angle / position offset (-1.0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range -1 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tpanX?: EffectProp<number>;\n\t/**\n\t * Vertical camera tilt angle / position offset (-1.0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range -1 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tpanY?: EffectProp<number>;\n\t/**\n\t * Camera forward/backward zoom position (-1.0 to 1.0). Can be modulated by a static number or dynamic signal.\n\t * Range -1 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tdollyZ?: EffectProp<number>;\n\t/**\n\t * Camera Field of View in degrees (15° to 120°). Can be modulated by a static number or dynamic signal.\n\t * Range 15 to 120. Accepts a signal.\n\t * @default 50\n\t */\n\tfov?: EffectProp<number>;\n\t/**\n\t * Strength of 3D spatial displacement depth relief. Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 0.6\n\t */\n\tparallaxAmount?: EffectProp<number>;\n\t/**\n\t * Lens aperture size / Circle of Confusion bokeh blur radius. Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.3\n\t */\n\tdofAperture?: EffectProp<number>;\n\t/**\n\t * Focal plane depth in scene (0.0=foreground, 1.0=background). Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.4\n\t */\n\tfocusPlane?: EffectProp<number>;\n\t/**\n\t * Inpainting border bleed to eliminate border occlusion tearing.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tedgeDilation?: EffectProp<number>;\n\t/**\n\t * Invert depth polarity (white = near vs black = near).\n\t * @default false\n\t */\n\tdepthInvert?: boolean;\n}\n\nconst cameraParallax3DDefaults: CameraParallax3DProps = {\n\tmotionPreset: \"DollyZoom\",\n\tpanX: 0,\n\tpanY: 0,\n\tdollyZ: 0,\n\tfov: 50,\n\tparallaxAmount: 0.6,\n\tdofAperture: 0.3,\n\tfocusPlane: 0.4,\n\tedgeDilation: 0.5,\n\tdepthInvert: false,\n};\n\nexport class CameraParallax3D extends Effect<\n\tCameraParallax3DProps,\n\t\"CameraParallax3D\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"CameraParallax3D\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare motionPreset:\n\t\t| \"Custom\"\n\t\t| \"DollyZoom\"\n\t\t| \"Orbit\"\n\t\t| \"FlyThrough\"\n\t\t| \"HandheldShake\"\n\t\t| \"RackFocus\";\n\tpublic declare panX: number;\n\tpublic declare panY: number;\n\tpublic declare dollyZ: number;\n\tpublic declare fov: number;\n\tpublic declare parallaxAmount: number;\n\tpublic declare dofAperture: number;\n\tpublic declare focusPlane: number;\n\tpublic declare edgeDilation: number;\n\tpublic declare depthInvert: boolean;\n\n\tconstructor(config: CameraParallax3DProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"CameraParallax3D\",\n\t\t\t\tcameraParallax3DDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.CameraParallax3D,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ChannelMergerProps {\n\t/**\n\t * Color space used for channel recombination (RGBA, HSLA, CMYK, or LAB).\n\t * @default \"RGBA\"\n\t */\n\tcolorSpace?: \"RGBA\" | \"HSLA\" | \"CMYK\" | \"LAB\";\n\t/**\n\t * Fallback value used when Channel 4 is unconnected (Alpha=1.0, Black=0.0 in CMYK).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\tdefaultChannel4?: EffectProp<number>;\n}\n\nconst channelMergerDefaults: ChannelMergerProps = {\n\tcolorSpace: \"RGBA\",\n\tdefaultChannel4: 1,\n};\n\nexport class ChannelMerger extends Effect<\n\tChannelMergerProps,\n\t\"ChannelMerger\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ChannelMerger\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare colorSpace: \"RGBA\" | \"HSLA\" | \"CMYK\" | \"LAB\";\n\tpublic declare defaultChannel4: number;\n\n\tconstructor(config: ChannelMergerProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ChannelMerger\",\n\t\t\t\tchannelMergerDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ChannelMerger,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ChannelSplitterProps {\n\t/**\n\t * Color space used for channel decomposition (RGBA, HSLA, CMYK, or LAB).\n\t * @default \"RGBA\"\n\t */\n\tcolorSpace?: \"RGBA\" | \"HSLA\" | \"CMYK\" | \"LAB\";\n}\n\nconst channelSplitterDefaults: ChannelSplitterProps = {\n\tcolorSpace: \"RGBA\",\n};\n\nexport class ChannelSplitter extends Effect<\n\tChannelSplitterProps,\n\t\"ChannelSplitter\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ChannelSplitter\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare colorSpace: \"RGBA\" | \"HSLA\" | \"CMYK\" | \"LAB\";\n\n\tconstructor(config: ChannelSplitterProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ChannelSplitter\",\n\t\t\t\tchannelSplitterDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ChannelSplitter,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ColorBalanceProps {\n\t/**\n\t * @default {\"cyanRed\":0,\"magentaGreen\":0,\"yellowBlue\":0}\n\t */\n\tshadows?: Partial<TonalShift>;\n\t/**\n\t * @default {\"cyanRed\":0,\"magentaGreen\":0,\"yellowBlue\":0}\n\t */\n\tmidtones?: Partial<TonalShift>;\n\t/**\n\t * @default {\"cyanRed\":0,\"magentaGreen\":0,\"yellowBlue\":0}\n\t */\n\thighlights?: Partial<TonalShift>;\n\t/**\n\t * @default true\n\t */\n\tpreserveLuminosity?: boolean;\n}\n\nconst colorBalanceDefaults: ColorBalanceProps = {\n\tshadows: { cyanRed: 0, magentaGreen: 0, yellowBlue: 0 },\n\tmidtones: { cyanRed: 0, magentaGreen: 0, yellowBlue: 0 },\n\thighlights: { cyanRed: 0, magentaGreen: 0, yellowBlue: 0 },\n\tpreserveLuminosity: true,\n};\n\nexport class ColorBalance extends Effect<\n\tColorBalanceProps,\n\t\"ColorBalance\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ColorBalance\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare shadows: Partial<TonalShift>;\n\tpublic declare midtones: Partial<TonalShift>;\n\tpublic declare highlights: Partial<TonalShift>;\n\tpublic declare preserveLuminosity: boolean;\n\n\tconstructor(config: ColorBalanceProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ColorBalance\",\n\t\t\t\tcolorBalanceDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ColorBalance,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ColorKeyProps {\n\t/**\n\t * Key Color\n\t * @default \"#00ff00\"\n\t */\n\tkeyColor?: string;\n\t/**\n\t * How close the color must be to the Key Color to be removed.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.4\n\t */\n\tsimilarity?: EffectProp<number>;\n\t/**\n\t * The softness of the transparency edge.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.1\n\t */\n\tsmoothness?: EffectProp<number>;\n\t/**\n\t * Amount of key color spill to remove from foreground edges.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.2\n\t */\n\tspillSuppression?: EffectProp<number>;\n\t/**\n\t * Color space used to calculate similarity distance.\n\t * @default \"YUV\"\n\t */\n\tcolorSpace?: \"YUV\" | \"RGB\";\n\t/**\n\t * How key color spill is suppressed on foreground edges.\n\t * @default \"Desaturate\"\n\t */\n\tspillSuppressionType?: \"Desaturate\" | \"Neutralize\" | \"None\";\n}\n\nconst colorKeyDefaults: ColorKeyProps = {\n\tkeyColor: \"#00ff00\",\n\tsimilarity: 0.4,\n\tsmoothness: 0.1,\n\tspillSuppression: 0.2,\n\tcolorSpace: \"YUV\",\n\tspillSuppressionType: \"Desaturate\",\n};\n\nexport class ColorKey extends Effect<ColorKeyProps, \"ColorKey\", \"visual\"> {\n\tpublic readonly op = \"ColorKey\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare keyColor: string;\n\tpublic declare similarity: number;\n\tpublic declare smoothness: number;\n\tpublic declare spillSuppression: number;\n\tpublic declare colorSpace: \"YUV\" | \"RGB\";\n\tpublic declare spillSuppressionType: \"Desaturate\" | \"Neutralize\" | \"None\";\n\n\tconstructor(config: ColorKeyProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"ColorKey\", colorKeyDefaults, config, effectMeta.ColorKey),\n\t\t);\n\t}\n}\n\nexport interface ContourProps {\n\t/**\n\t * Contour lines from dark to light.\n\t * Range 2 to 64. Accepts a signal.\n\t * @default 14\n\t */\n\tlevels?: EffectProp<number>;\n\t/**\n\t * Line width, px.\n\t * Range 0.5 to 8. Accepts a signal.\n\t * @default 1.2\n\t */\n\tlineWidth?: EffectProp<number>;\n\t/**\n\t * Line color.\n\t * @default \"#2b1d0e\"\n\t */\n\tlineColor?: string;\n\t/**\n\t * Under the lines: the layer, `fillColor`, or transparent.\n\t * @default \"source\"\n\t */\n\tfill?: \"source\" | \"flat\" | \"none\";\n\t/**\n\t * Paper color (flat fill).\n\t * @default \"#f3ead8\"\n\t */\n\tfillColor?: string;\n\t/**\n\t * Blur before tracing, px (smoother lines).\n\t * Range 0 to 8. Accepts a signal.\n\t * @default 2\n\t */\n\tsmoothing?: EffectProp<number>;\n}\n\nconst contourDefaults: ContourProps = {\n\tlevels: 14,\n\tlineWidth: 1.2,\n\tlineColor: \"#2b1d0e\",\n\tfill: \"source\",\n\tfillColor: \"#f3ead8\",\n\tsmoothing: 2,\n};\n\nexport class Contour extends Effect<ContourProps, \"Contour\", \"visual\"> {\n\tpublic readonly op = \"Contour\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare levels: number;\n\tpublic declare lineWidth: number;\n\tpublic declare lineColor: string;\n\tpublic declare fill: \"source\" | \"flat\" | \"none\";\n\tpublic declare fillColor: string;\n\tpublic declare smoothing: number;\n\n\tconstructor(config: ContourProps = {}) {\n\t\tsuper(withDefaults(\"Contour\", contourDefaults, config, effectMeta.Contour));\n\t}\n}\n\nexport interface CornerPinProps {\n\tpoints?: CornerPinPointsItem[];\n}\n\nconst cornerPinDefaults: CornerPinProps = {};\n\nexport class CornerPin extends Effect<CornerPinProps, \"CornerPin\", \"visual\"> {\n\tpublic readonly op = \"CornerPin\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare points: CornerPinPointsItem[] | undefined;\n\n\tconstructor(config: CornerPinProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"CornerPin\",\n\t\t\t\tcornerPinDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.CornerPin,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface CRTProps {\n\t/**\n\t * Scanline darkness.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.45\n\t */\n\tscanlines?: EffectProp<number>;\n\t/**\n\t * Scanlines over the height.\n\t * Range 100 to 2160. Accepts a signal.\n\t * @default 540\n\t */\n\tlineCount?: EffectProp<number>;\n\t/**\n\t * Barrel distortion of the tube.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.12\n\t */\n\tcurvature?: EffectProp<number>;\n\t/**\n\t * RGB aperture-grille strength.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.25\n\t */\n\tmask?: EffectProp<number>;\n\t/**\n\t * Darkening toward the edges.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.35\n\t */\n\tvignette?: EffectProp<number>;\n\t/**\n\t * Animated static.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.08\n\t */\n\tnoise?: EffectProp<number>;\n\t/**\n\t * Brightness flicker.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.03\n\t */\n\tflicker?: EffectProp<number>;\n\t/**\n\t * VHS tracking error: line jitter and a rolling band.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\ttracking?: EffectProp<number>;\n\t/**\n\t * VHS color bleed, px.\n\t * Range 0 to 20. Accepts a signal.\n\t * @default 0\n\t */\n\tchroma?: EffectProp<number>;\n}\n\nconst cRTDefaults: CRTProps = {\n\tscanlines: 0.45,\n\tlineCount: 540,\n\tcurvature: 0.12,\n\tmask: 0.25,\n\tvignette: 0.35,\n\tnoise: 0.08,\n\tflicker: 0.03,\n\ttracking: 0,\n\tchroma: 0,\n};\n\nexport class CRT extends Effect<CRTProps, \"CRT\", \"visual\"> {\n\tpublic readonly op = \"CRT\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare scanlines: number;\n\tpublic declare lineCount: number;\n\tpublic declare curvature: number;\n\tpublic declare mask: number;\n\tpublic declare vignette: number;\n\tpublic declare noise: number;\n\tpublic declare flicker: number;\n\tpublic declare tracking: number;\n\tpublic declare chroma: number;\n\n\tconstructor(config: CRTProps = {}) {\n\t\tsuper(withDefaults(\"CRT\", cRTDefaults, config, effectMeta.CRT));\n\t}\n}\n\nexport interface DatamoshProps {\n\t/**\n\t * Layer frames that show the clean picture again (I-frames). The first frame always does.\n\t * @default []\n\t */\n\tkeyframes?: number[];\n\t/**\n\t * How far pixels are dragged along the motion.\n\t * Range 0 to 10. Accepts a signal.\n\t * @default 1\n\t */\n\tstrength?: EffectProp<number>;\n\t/**\n\t * Clean picture mixed back in per frame, 0–1.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tbleed?: EffectProp<number>;\n\t/**\n\t * Most frames replayed to rebuild the smear after a jump.\n\t * Range 1 to 240.\n\t * @default 48\n\t */\n\twarmup?: number;\n}\n\nconst datamoshDefaults: DatamoshProps = {\n\tkeyframes: [],\n\tstrength: 1,\n\tbleed: 0,\n\twarmup: 48,\n};\n\nexport class Datamosh extends Effect<DatamoshProps, \"Datamosh\", \"visual\"> {\n\tpublic readonly op = \"Datamosh\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare keyframes: number[];\n\tpublic declare strength: number;\n\tpublic declare bleed: number;\n\tpublic declare warmup: number;\n\n\tconstructor(config: DatamoshProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"Datamosh\", datamoshDefaults, config, effectMeta.Datamosh),\n\t\t);\n\t}\n}\n\nexport interface DisplacementMapProps {\n\t/**\n\t * Horizontal displacement strength in pixels. Can be modulated by a static number or a dynamic signal.\n\t * Range 0 to 500. Accepts a signal.\n\t * @default 50\n\t */\n\tstrengthX?: EffectProp<number>;\n\t/**\n\t * Vertical displacement strength in pixels. Can be modulated by a static number or a dynamic signal.\n\t * Range 0 to 500. Accepts a signal.\n\t * @default 50\n\t */\n\tstrengthY?: EffectProp<number>;\n\t/**\n\t * X Channel\n\t * @default \"Red\"\n\t */\n\txChannel?: \"Red\" | \"Green\" | \"Blue\" | \"Alpha\" | \"Luminance\";\n\t/**\n\t * Y Channel\n\t * @default \"Green\"\n\t */\n\tyChannel?: \"Red\" | \"Green\" | \"Blue\" | \"Alpha\" | \"Luminance\";\n\t/**\n\t * Wrap Mode\n\t * @default \"Clamp\"\n\t */\n\twrapMode?: \"Clamp\" | \"Repeat\" | \"Mirror\";\n}\n\nconst displacementMapDefaults: DisplacementMapProps = {\n\tstrengthX: 50,\n\tstrengthY: 50,\n\txChannel: \"Red\",\n\tyChannel: \"Green\",\n\twrapMode: \"Clamp\",\n};\n\nexport class DisplacementMap extends Effect<\n\tDisplacementMapProps,\n\t\"DisplacementMap\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"DisplacementMap\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare strengthX: number;\n\tpublic declare strengthY: number;\n\tpublic declare xChannel: \"Red\" | \"Green\" | \"Blue\" | \"Alpha\" | \"Luminance\";\n\tpublic declare yChannel: \"Red\" | \"Green\" | \"Blue\" | \"Alpha\" | \"Luminance\";\n\tpublic declare wrapMode: \"Clamp\" | \"Repeat\" | \"Mirror\";\n\n\tconstructor(config: DisplacementMapProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"DisplacementMap\",\n\t\t\t\tdisplacementMapDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.DisplacementMap,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface DitherProps {\n\t/**\n\t * Pattern: Bayer matrix, blue-ish noise or round halftone dots.\n\t * @default \"bayer\"\n\t */\n\tmode?: \"bayer\" | \"noise\" | \"halftone\";\n\t/**\n\t * Levels per channel (2 = 1-bit).\n\t * Range 2 to 16. Accepts a signal.\n\t * @default 2\n\t */\n\tlevels?: EffectProp<number>;\n\t/**\n\t * Dither pixel size, px.\n\t * Range 1 to 16. Accepts a signal.\n\t * @default 2\n\t */\n\tscale?: EffectProp<number>;\n\t/**\n\t * Map brightness to the dark → light colors instead of dithering each channel.\n\t * @default true\n\t */\n\tmonochrome?: boolean;\n\t/**\n\t * Dark color (monochrome).\n\t * @default \"#111111\"\n\t */\n\tdark?: string;\n\t/**\n\t * Light color (monochrome).\n\t * @default \"#f2efe6\"\n\t */\n\tlight?: string;\n}\n\nconst ditherDefaults: DitherProps = {\n\tmode: \"bayer\",\n\tlevels: 2,\n\tscale: 2,\n\tmonochrome: true,\n\tdark: \"#111111\",\n\tlight: \"#f2efe6\",\n};\n\nexport class Dither extends Effect<DitherProps, \"Dither\", \"visual\"> {\n\tpublic readonly op = \"Dither\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare mode: \"bayer\" | \"noise\" | \"halftone\";\n\tpublic declare levels: number;\n\tpublic declare scale: number;\n\tpublic declare monochrome: boolean;\n\tpublic declare dark: string;\n\tpublic declare light: string;\n\n\tconstructor(config: DitherProps = {}) {\n\t\tsuper(withDefaults(\"Dither\", ditherDefaults, config, effectMeta.Dither));\n\t}\n}\n\nexport interface ExtractLUTProps {\n\t/**\n\t * Extraction Strategy\n\t * @default \"deterministic\"\n\t */\n\tstrategy?: \"deterministic\" | \"statistical\";\n\t/**\n\t * Sample Points\n\t * Range 10 to 500. Accepts a signal.\n\t * @default 150\n\t */\n\tsamplePoints?: EffectProp<number>;\n}\n\nconst extractLUTDefaults: ExtractLUTProps = {\n\tstrategy: \"deterministic\",\n\tsamplePoints: 150,\n};\n\nexport class ExtractLUT extends Effect<\n\tExtractLUTProps,\n\t\"ExtractLUT\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ExtractLUT\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare strategy: \"deterministic\" | \"statistical\";\n\tpublic declare samplePoints: number;\n\n\tconstructor(config: ExtractLUTProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ExtractLUT\",\n\t\t\t\textractLUTDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ExtractLUT,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface FlipProps {\n\t/**\n\t * Mirror horizontally along the vertical center axis.\n\t * @default true\n\t */\n\thorizontal?: boolean;\n\t/**\n\t * Mirror vertically along the horizontal center axis.\n\t * @default false\n\t */\n\tvertical?: boolean;\n\t/**\n\t * Swap horizontal and vertical axes (diagonal transposition).\n\t * @default false\n\t */\n\tdiagonal?: boolean;\n\t/**\n\t * Quick preset mode for flipping or transposition.\n\t * @default \"horizontal\"\n\t */\n\tmode?:\n\t\t| \"horizontal\"\n\t\t| \"vertical\"\n\t\t| \"both\"\n\t\t| \"diagonal\"\n\t\t| \"antiDiagonal\"\n\t\t| \"custom\";\n\t/**\n\t * Split-mirror reflection and symmetry effects.\n\t * @default \"none\"\n\t */\n\tsymmetry?:\n\t\t| \"none\"\n\t\t| \"leftToRight\"\n\t\t| \"rightToLeft\"\n\t\t| \"topToBottom\"\n\t\t| \"bottomToTop\"\n\t\t| \"quadrant\";\n}\n\nconst flipDefaults: FlipProps = {\n\thorizontal: true,\n\tvertical: false,\n\tdiagonal: false,\n\tmode: \"horizontal\",\n\tsymmetry: \"none\",\n};\n\nexport class Flip extends Effect<FlipProps, \"Flip\", \"visual\"> {\n\tpublic readonly op = \"Flip\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare horizontal: boolean;\n\tpublic declare vertical: boolean;\n\tpublic declare diagonal: boolean;\n\tpublic declare mode:\n\t\t| \"horizontal\"\n\t\t| \"vertical\"\n\t\t| \"both\"\n\t\t| \"diagonal\"\n\t\t| \"antiDiagonal\"\n\t\t| \"custom\";\n\tpublic declare symmetry:\n\t\t| \"none\"\n\t\t| \"leftToRight\"\n\t\t| \"rightToLeft\"\n\t\t| \"topToBottom\"\n\t\t| \"bottomToTop\"\n\t\t| \"quadrant\";\n\n\tconstructor(config: FlipProps = {}) {\n\t\tsuper(withDefaults(\"Flip\", flipDefaults, config, effectMeta.Flip));\n\t}\n}\n\nexport interface GooeyProps {\n\t/**\n\t * Melt distance, px.\n\t * Range 1 to 60. Accepts a signal.\n\t * @default 12\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Alpha cut, 0–1 (higher = thinner blobs).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tthreshold?: EffectProp<number>;\n\t/**\n\t * Edge softness.\n\t * Range 0.001 to 0.5. Accepts a signal.\n\t * @default 0.04\n\t */\n\tsoftness?: EffectProp<number>;\n}\n\nconst gooeyDefaults: GooeyProps = {\n\tradius: 12,\n\tthreshold: 0.5,\n\tsoftness: 0.04,\n};\n\nexport class Gooey extends Effect<GooeyProps, \"Gooey\", \"visual\"> {\n\tpublic readonly op = \"Gooey\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare radius: number;\n\tpublic declare threshold: number;\n\tpublic declare softness: number;\n\n\tconstructor(config: GooeyProps = {}) {\n\t\tsuper(withDefaults(\"Gooey\", gooeyDefaults, config, effectMeta.Gooey));\n\t}\n}\n\nexport interface IridescenceProps {\n\t/**\n\t * How much rainbow, 0–1.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.6\n\t */\n\tstrength?: EffectProp<number>;\n\t/**\n\t * Rainbow bands over the range.\n\t * Range 0.1 to 10. Accepts a signal.\n\t * @default 2\n\t */\n\tscale?: EffectProp<number>;\n\t/**\n\t * Hue shift, degrees (animate it).\n\t * Range -3600 to 3600. Accepts a signal.\n\t * @default 0\n\t */\n\tshift?: EffectProp<number>;\n\t/**\n\t * Bands from brightness, or from the slope of the image (foil).\n\t * @default \"relief\"\n\t */\n\tmode?: \"luminance\" | \"relief\";\n}\n\nconst iridescenceDefaults: IridescenceProps = {\n\tstrength: 0.6,\n\tscale: 2,\n\tshift: 0,\n\tmode: \"relief\",\n};\n\nexport class Iridescence extends Effect<\n\tIridescenceProps,\n\t\"Iridescence\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"Iridescence\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare strength: number;\n\tpublic declare scale: number;\n\tpublic declare shift: number;\n\tpublic declare mode: \"luminance\" | \"relief\";\n\n\tconstructor(config: IridescenceProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"Iridescence\",\n\t\t\t\tiridescenceDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.Iridescence,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface KaleidoscopeProps {\n\t/**\n\t * Mirror segments.\n\t * Range 2 to 32. Accepts a signal.\n\t * @default 6\n\t */\n\tsegments?: EffectProp<number>;\n\t/**\n\t * Pattern rotation, degrees.\n\t * Range -3600 to 3600. Accepts a signal.\n\t * @default 0\n\t */\n\trotation?: EffectProp<number>;\n\t/**\n\t * Center, 0–1 across.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterX?: EffectProp<number>;\n\t/**\n\t * Center, 0–1 down.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterY?: EffectProp<number>;\n\t/**\n\t * Scale of the folded image.\n\t * Range 0.2 to 4. Accepts a signal.\n\t * @default 1\n\t */\n\tzoom?: EffectProp<number>;\n}\n\nconst kaleidoscopeDefaults: KaleidoscopeProps = {\n\tsegments: 6,\n\trotation: 0,\n\tcenterX: 0.5,\n\tcenterY: 0.5,\n\tzoom: 1,\n};\n\nexport class Kaleidoscope extends Effect<\n\tKaleidoscopeProps,\n\t\"Kaleidoscope\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"Kaleidoscope\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare segments: number;\n\tpublic declare rotation: number;\n\tpublic declare centerX: number;\n\tpublic declare centerY: number;\n\tpublic declare zoom: number;\n\n\tconstructor(config: KaleidoscopeProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"Kaleidoscope\",\n\t\t\t\tkaleidoscopeDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.Kaleidoscope,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface KenBurnsProps {\n\t/**\n\t * @default []\n\t */\n\tkeyframes?: KenBurnsKeyframesItem[];\n\t/**\n\t * Range 0 to 10.\n\t * @default 1.5\n\t */\n\tmotionBlurSize?: number;\n\t/**\n\t * @default \"spline\"\n\t */\n\tmovementStyle?: \"spline\" | \"direct\";\n\t/**\n\t * @default \"input\"\n\t */\n\taspectRatio?:\n\t\t| \"input\"\n\t\t| \"16:9\"\n\t\t| \"9:16\"\n\t\t| \"21:9\"\n\t\t| \"9:21\"\n\t\t| \"1:1\"\n\t\t| \"4:3\"\n\t\t| \"3:2\"\n\t\t| \"2:3\"\n\t\t| \"4:5\"\n\t\t| \"5:4\";\n}\n\nconst kenBurnsDefaults: KenBurnsProps = {\n\tkeyframes: [],\n\tmotionBlurSize: 1.5,\n\tmovementStyle: \"spline\",\n\taspectRatio: \"input\",\n};\n\nexport class KenBurns extends Effect<KenBurnsProps, \"KenBurns\", \"visual\"> {\n\tpublic readonly op = \"KenBurns\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare keyframes: KenBurnsKeyframesItem[];\n\tpublic declare motionBlurSize: number;\n\tpublic declare movementStyle: \"spline\" | \"direct\";\n\tpublic declare aspectRatio:\n\t\t| \"input\"\n\t\t| \"16:9\"\n\t\t| \"9:16\"\n\t\t| \"21:9\"\n\t\t| \"9:21\"\n\t\t| \"1:1\"\n\t\t| \"4:3\"\n\t\t| \"3:2\"\n\t\t| \"2:3\"\n\t\t| \"4:5\"\n\t\t| \"5:4\";\n\n\tconstructor(config: KenBurnsProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"KenBurns\", kenBurnsDefaults, config, effectMeta.KenBurns),\n\t\t);\n\t}\n}\n\nexport interface LayerStyleProps {\n\t/**\n\t * @default {\"enabled\":false,\"color\":\"#000000\",\"opacity\":0.75,\"angle\":120,\"distance\":10,\"spread\":0,\"size\":10,\"blendMode\":\"multiply\"}\n\t */\n\tdropShadow?: Partial<LayerStyleDropShadow>;\n\t/**\n\t * @default {\"enabled\":false,\"color\":\"#000000\",\"opacity\":0.75,\"angle\":120,\"distance\":5,\"choke\":0,\"size\":5,\"blendMode\":\"multiply\"}\n\t */\n\tinnerShadow?: Partial<LayerStyleInnerShadow>;\n\t/**\n\t * @default {\"enabled\":false,\"color\":\"#ffffff\",\"opacity\":0.75,\"size\":15,\"spread\":0,\"blendMode\":\"screen\"}\n\t */\n\touterGlow?: Partial<LayerStyleOuterGlow>;\n\t/**\n\t * @default {\"enabled\":false,\"color\":\"#ffffff\",\"opacity\":0.75,\"size\":15,\"spread\":0,\"blendMode\":\"screen\"}\n\t */\n\tinnerGlow?: Partial<LayerStyleInnerGlow>;\n\t/**\n\t * @default {\"enabled\":false,\"size\":2,\"position\":\"outside\",\"color\":\"#ffffff\",\"opacity\":1,\"blendMode\":\"normal\"}\n\t */\n\tstroke?: Partial<LayerStyleStroke>;\n\t/**\n\t * @default {\"enabled\":false,\"style\":\"InnerBevel\",\"technique\":\"Smooth\",\"depth\":100,\"direction\":\"Up\",\"size\":5,\"soften\":0,\"angle\":120,\"altitude\":30,\"highlightColor\":\"#ffffff\",\"highlightOpacity\":0.75,\"shadowColor\":\"#000000\",\"shadowOpacity\":0.75}\n\t */\n\tbevelEmboss?: Partial<LayerStyleBevelEmboss>;\n\t/**\n\t * @default {\"enabled\":false,\"color\":\"#ff0000\",\"opacity\":1,\"blendMode\":\"normal\"}\n\t */\n\tcolorOverlay?: Partial<LayerStyleColorOverlay>;\n\tdropShadowAngleHandleId?: string | null;\n\tdropShadowDistanceHandleId?: string | null;\n\tdropShadowSpreadHandleId?: string | null;\n\tdropShadowSizeHandleId?: string | null;\n\tdropShadowOpacityHandleId?: string | null;\n\tinnerShadowAngleHandleId?: string | null;\n\tinnerShadowDistanceHandleId?: string | null;\n\tinnerShadowChokeHandleId?: string | null;\n\tinnerShadowSizeHandleId?: string | null;\n\tinnerShadowOpacityHandleId?: string | null;\n\touterGlowSizeHandleId?: string | null;\n\touterGlowSpreadHandleId?: string | null;\n\touterGlowOpacityHandleId?: string | null;\n\tinnerGlowSizeHandleId?: string | null;\n\tinnerGlowSpreadHandleId?: string | null;\n\tinnerGlowOpacityHandleId?: string | null;\n\tstrokeSizeHandleId?: string | null;\n\tstrokeOpacityHandleId?: string | null;\n\tbevelEmbossDepthHandleId?: string | null;\n\tbevelEmbossSizeHandleId?: string | null;\n\tbevelEmbossSoftenHandleId?: string | null;\n\tbevelEmbossAngleHandleId?: string | null;\n\tbevelEmbossAltitudeHandleId?: string | null;\n\tbevelEmbossHighlightOpacityHandleId?: string | null;\n\tbevelEmbossShadowOpacityHandleId?: string | null;\n\tcolorOverlayOpacityHandleId?: string | null;\n}\n\nconst layerStyleDefaults: LayerStyleProps = {\n\tdropShadow: {\n\t\tenabled: false,\n\t\tcolor: \"#000000\",\n\t\topacity: 0.75,\n\t\tangle: 120,\n\t\tdistance: 10,\n\t\tspread: 0,\n\t\tsize: 10,\n\t\tblendMode: \"multiply\",\n\t},\n\tinnerShadow: {\n\t\tenabled: false,\n\t\tcolor: \"#000000\",\n\t\topacity: 0.75,\n\t\tangle: 120,\n\t\tdistance: 5,\n\t\tchoke: 0,\n\t\tsize: 5,\n\t\tblendMode: \"multiply\",\n\t},\n\touterGlow: {\n\t\tenabled: false,\n\t\tcolor: \"#ffffff\",\n\t\topacity: 0.75,\n\t\tsize: 15,\n\t\tspread: 0,\n\t\tblendMode: \"screen\",\n\t},\n\tinnerGlow: {\n\t\tenabled: false,\n\t\tcolor: \"#ffffff\",\n\t\topacity: 0.75,\n\t\tsize: 15,\n\t\tspread: 0,\n\t\tblendMode: \"screen\",\n\t},\n\tstroke: {\n\t\tenabled: false,\n\t\tsize: 2,\n\t\tposition: \"outside\",\n\t\tcolor: \"#ffffff\",\n\t\topacity: 1,\n\t\tblendMode: \"normal\",\n\t},\n\tbevelEmboss: {\n\t\tenabled: false,\n\t\tstyle: \"InnerBevel\",\n\t\ttechnique: \"Smooth\",\n\t\tdepth: 100,\n\t\tdirection: \"Up\",\n\t\tsize: 5,\n\t\tsoften: 0,\n\t\tangle: 120,\n\t\taltitude: 30,\n\t\thighlightColor: \"#ffffff\",\n\t\thighlightOpacity: 0.75,\n\t\tshadowColor: \"#000000\",\n\t\tshadowOpacity: 0.75,\n\t},\n\tcolorOverlay: {\n\t\tenabled: false,\n\t\tcolor: \"#ff0000\",\n\t\topacity: 1,\n\t\tblendMode: \"normal\",\n\t},\n};\n\nexport class LayerStyle extends Effect<\n\tLayerStyleProps,\n\t\"LayerStyle\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"LayerStyle\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare dropShadow: Partial<LayerStyleDropShadow>;\n\tpublic declare innerShadow: Partial<LayerStyleInnerShadow>;\n\tpublic declare outerGlow: Partial<LayerStyleOuterGlow>;\n\tpublic declare innerGlow: Partial<LayerStyleInnerGlow>;\n\tpublic declare stroke: Partial<LayerStyleStroke>;\n\tpublic declare bevelEmboss: Partial<LayerStyleBevelEmboss>;\n\tpublic declare colorOverlay: Partial<LayerStyleColorOverlay>;\n\tpublic declare dropShadowAngleHandleId: string | null | undefined;\n\tpublic declare dropShadowDistanceHandleId: string | null | undefined;\n\tpublic declare dropShadowSpreadHandleId: string | null | undefined;\n\tpublic declare dropShadowSizeHandleId: string | null | undefined;\n\tpublic declare dropShadowOpacityHandleId: string | null | undefined;\n\tpublic declare innerShadowAngleHandleId: string | null | undefined;\n\tpublic declare innerShadowDistanceHandleId: string | null | undefined;\n\tpublic declare innerShadowChokeHandleId: string | null | undefined;\n\tpublic declare innerShadowSizeHandleId: string | null | undefined;\n\tpublic declare innerShadowOpacityHandleId: string | null | undefined;\n\tpublic declare outerGlowSizeHandleId: string | null | undefined;\n\tpublic declare outerGlowSpreadHandleId: string | null | undefined;\n\tpublic declare outerGlowOpacityHandleId: string | null | undefined;\n\tpublic declare innerGlowSizeHandleId: string | null | undefined;\n\tpublic declare innerGlowSpreadHandleId: string | null | undefined;\n\tpublic declare innerGlowOpacityHandleId: string | null | undefined;\n\tpublic declare strokeSizeHandleId: string | null | undefined;\n\tpublic declare strokeOpacityHandleId: string | null | undefined;\n\tpublic declare bevelEmbossDepthHandleId: string | null | undefined;\n\tpublic declare bevelEmbossSizeHandleId: string | null | undefined;\n\tpublic declare bevelEmbossSoftenHandleId: string | null | undefined;\n\tpublic declare bevelEmbossAngleHandleId: string | null | undefined;\n\tpublic declare bevelEmbossAltitudeHandleId: string | null | undefined;\n\tpublic declare bevelEmbossHighlightOpacityHandleId: string | null | undefined;\n\tpublic declare bevelEmbossShadowOpacityHandleId: string | null | undefined;\n\tpublic declare colorOverlayOpacityHandleId: string | null | undefined;\n\n\tconstructor(config: LayerStyleProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"LayerStyle\",\n\t\t\t\tlayerStyleDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.LayerStyle,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface LiquifyProps {\n\t/**\n\t * List of localized liquify deformation operations.\n\t * @default []\n\t */\n\toperations?: LiquifyOperationsItem[];\n}\n\nconst liquifyDefaults: LiquifyProps = {\n\toperations: [],\n};\n\nexport class Liquify extends Effect<LiquifyProps, \"Liquify\", \"visual\"> {\n\tpublic readonly op = \"Liquify\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare operations: LiquifyOperationsItem[];\n\n\tconstructor(config: LiquifyProps = {}) {\n\t\tsuper(withDefaults(\"Liquify\", liquifyDefaults, config, effectMeta.Liquify));\n\t}\n}\n\nexport interface MaskMathProps {\n\t/**\n\t * Morphological or Boolean set operation applied to input alpha masks.\n\t * @default \"Union\"\n\t */\n\toperation?:\n\t\t| \"Union\"\n\t\t| \"Intersect\"\n\t\t| \"Subtract\"\n\t\t| \"Difference\"\n\t\t| \"Invert\"\n\t\t| \"Dilate\"\n\t\t| \"Erode\"\n\t\t| \"Choke\"\n\t\t| \"Feather\";\n\t/**\n\t * Kernel radius in pixels for Dilate, Erode, Choke, or Feather operations.\n\t * Range 0 to 200. Accepts a signal.\n\t * @default 0\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Cutoff threshold level (0.0–1.0) for binarization step or non-linear choke.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tthreshold?: EffectProp<number>;\n\t/**\n\t * Minimum alpha matte cutoff limit (0.0–1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tclampMin?: EffectProp<number>;\n\t/**\n\t * Maximum alpha matte cutoff limit (0.0–1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\tclampMax?: EffectProp<number>;\n\t/**\n\t * Source channel to extract mask from Mask A (Alpha, Luminance, Red, Green, Blue).\n\t * @default \"Alpha\"\n\t */\n\tchannelA?: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\t/**\n\t * Source channel to extract mask from Mask B (Alpha, Luminance, Red, Green, Blue).\n\t * @default \"Alpha\"\n\t */\n\tchannelB?: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\t/**\n\t * When enabled, outputs crisp 1-bit binary matte based on threshold.\n\t * @default false\n\t */\n\tbinarize?: boolean;\n\t/**\n\t * Inverts final matte output.\n\t * @default false\n\t */\n\tinvertResult?: boolean;\n\t/**\n\t * WhiteWithAlpha (rgba(1,1,1,a)), GrayscaleRGB (rgba(a,a,a,1)), AlphaOnly (rgba(0,0,0,a)), PassthroughRGB (Mask A RGB with new alpha).\n\t * @default \"WhiteWithAlpha\"\n\t */\n\toutputFormat?:\n\t\t| \"WhiteWithAlpha\"\n\t\t| \"GrayscaleRGB\"\n\t\t| \"AlphaOnly\"\n\t\t| \"PassthroughRGB\";\n}\n\nconst maskMathDefaults: MaskMathProps = {\n\toperation: \"Union\",\n\tradius: 0,\n\tthreshold: 0.5,\n\tclampMin: 0,\n\tclampMax: 1,\n\tchannelA: \"Alpha\",\n\tchannelB: \"Alpha\",\n\tbinarize: false,\n\tinvertResult: false,\n\toutputFormat: \"WhiteWithAlpha\",\n};\n\nexport class MaskMath extends Effect<MaskMathProps, \"MaskMath\", \"visual\"> {\n\tpublic readonly op = \"MaskMath\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare operation:\n\t\t| \"Union\"\n\t\t| \"Intersect\"\n\t\t| \"Subtract\"\n\t\t| \"Difference\"\n\t\t| \"Invert\"\n\t\t| \"Dilate\"\n\t\t| \"Erode\"\n\t\t| \"Choke\"\n\t\t| \"Feather\";\n\tpublic declare radius: number;\n\tpublic declare threshold: number;\n\tpublic declare clampMin: number;\n\tpublic declare clampMax: number;\n\tpublic declare channelA: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\tpublic declare channelB: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\tpublic declare binarize: boolean;\n\tpublic declare invertResult: boolean;\n\tpublic declare outputFormat:\n\t\t| \"WhiteWithAlpha\"\n\t\t| \"GrayscaleRGB\"\n\t\t| \"AlphaOnly\"\n\t\t| \"PassthroughRGB\";\n\n\tconstructor(config: MaskMathProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"MaskMath\", maskMathDefaults, config, effectMeta.MaskMath),\n\t\t);\n\t}\n}\n\nexport interface MeshWarpProps {\n\t/**\n\t * Range 2 to 12.\n\t * @default 3\n\t */\n\tcols?: number;\n\t/**\n\t * Range 2 to 12.\n\t * @default 3\n\t */\n\trows?: number;\n\tpoints?: MeshWarpPointsItem[];\n}\n\nconst meshWarpDefaults: MeshWarpProps = {\n\tcols: 3,\n\trows: 3,\n};\n\nexport class MeshWarp extends Effect<MeshWarpProps, \"MeshWarp\", \"visual\"> {\n\tpublic readonly op = \"MeshWarp\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare cols: number;\n\tpublic declare rows: number;\n\tpublic declare points: MeshWarpPointsItem[] | undefined;\n\n\tconstructor(config: MeshWarpProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"MeshWarp\", meshWarpDefaults, config, effectMeta.MeshWarp),\n\t\t);\n\t}\n}\n\nexport interface NoiseGeneratorProps {\n\t/**\n\t * Noise Type\n\t * @default \"Perlin\"\n\t */\n\tnoiseType?: \"Perlin\" | \"Simplex\" | \"Voronoi\";\n\t/**\n\t * Output Type\n\t * @default \"Image\"\n\t */\n\toutputType?: \"Image\" | \"Video\";\n\t/**\n\t * Width\n\t * Range 16 to 4096.\n\t * @default 512\n\t */\n\twidth?: number;\n\t/**\n\t * Height\n\t * Range 16 to 4096.\n\t * @default 512\n\t */\n\theight?: number;\n\t/**\n\t * Scale of the noise pattern. Can be modulated by a static number or a dynamic signal.\n\t * Range 0.1 to 100. Accepts a signal.\n\t * @default 10\n\t */\n\tscale?: EffectProp<number>;\n\t/**\n\t * Fractal detail depth of the noise.\n\t * Range 1 to 8. Accepts a signal.\n\t * @default 4\n\t */\n\toctaves?: EffectProp<number>;\n\t/**\n\t * Roughness multiplier for each fractal octave.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tpersistence?: EffectProp<number>;\n\t/**\n\t * Frequency spacing multiplier for each fractal octave.\n\t * Range 1 to 4. Accepts a signal.\n\t * @default 2\n\t */\n\tlacunarity?: EffectProp<number>;\n\t/**\n\t * Speed of time-based noise animation in Video mode.\n\t * Range 0 to 10. Accepts a signal.\n\t * @default 1\n\t */\n\tspeed?: EffectProp<number>;\n\t/**\n\t * Color Start\n\t * @default \"#000000\"\n\t */\n\tcolorStart?: string;\n\t/**\n\t * Color End\n\t * @default \"#ffffff\"\n\t */\n\tcolorEnd?: string;\n\t/**\n\t * Duration (ms)\n\t * Range 1 to 60000.\n\t * @default 5000\n\t */\n\tdurationMs?: number;\n\t/**\n\t * FPS\n\t * Range 1 to 120.\n\t * @default 30\n\t */\n\tfps?: number;\n}\n\nconst noiseGeneratorDefaults: NoiseGeneratorProps = {\n\tnoiseType: \"Perlin\",\n\toutputType: \"Image\",\n\twidth: 512,\n\theight: 512,\n\tscale: 10,\n\toctaves: 4,\n\tpersistence: 0.5,\n\tlacunarity: 2,\n\tspeed: 1,\n\tcolorStart: \"#000000\",\n\tcolorEnd: \"#ffffff\",\n\tdurationMs: 5000,\n\tfps: 30,\n};\n\nexport class NoiseGenerator extends Effect<\n\tNoiseGeneratorProps,\n\t\"NoiseGenerator\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"NoiseGenerator\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare noiseType: \"Perlin\" | \"Simplex\" | \"Voronoi\";\n\tpublic declare outputType: \"Image\" | \"Video\";\n\tpublic declare width: number;\n\tpublic declare height: number;\n\tpublic declare scale: number;\n\tpublic declare octaves: number;\n\tpublic declare persistence: number;\n\tpublic declare lacunarity: number;\n\tpublic declare speed: number;\n\tpublic declare colorStart: string;\n\tpublic declare colorEnd: string;\n\tpublic declare durationMs: number;\n\tpublic declare fps: number;\n\n\tconstructor(config: NoiseGeneratorProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"NoiseGenerator\",\n\t\t\t\tnoiseGeneratorDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.NoiseGenerator,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface OpArtProps {\n\t/**\n\t * Line pattern.\n\t * @default \"stripes\"\n\t */\n\tpattern?: \"stripes\" | \"rings\" | \"checker\" | \"waves\";\n\t/**\n\t * Lines across the height.\n\t * Range 2 to 300. Accepts a signal.\n\t * @default 48\n\t */\n\tfrequency?: EffectProp<number>;\n\t/**\n\t * Pattern angle, degrees.\n\t * Range -360 to 360. Accepts a signal.\n\t * @default 0\n\t */\n\tangle?: EffectProp<number>;\n\t/**\n\t * How far brightness bends the lines.\n\t * Range 0 to 3. Accepts a signal.\n\t * @default 0.6\n\t */\n\twarp?: EffectProp<number>;\n\t/**\n\t * How much darks thicken the lines (0 = even lines).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\tsource?: EffectProp<number>;\n\t/**\n\t * Line color.\n\t * @default \"#0a0a0a\"\n\t */\n\tcolorA?: string;\n\t/**\n\t * Gap color.\n\t * @default \"#f5f5f5\"\n\t */\n\tcolorB?: string;\n}\n\nconst opArtDefaults: OpArtProps = {\n\tpattern: \"stripes\",\n\tfrequency: 48,\n\tangle: 0,\n\twarp: 0.6,\n\tsource: 1,\n\tcolorA: \"#0a0a0a\",\n\tcolorB: \"#f5f5f5\",\n};\n\nexport class OpArt extends Effect<OpArtProps, \"OpArt\", \"visual\"> {\n\tpublic readonly op = \"OpArt\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare pattern: \"stripes\" | \"rings\" | \"checker\" | \"waves\";\n\tpublic declare frequency: number;\n\tpublic declare angle: number;\n\tpublic declare warp: number;\n\tpublic declare source: number;\n\tpublic declare colorA: string;\n\tpublic declare colorB: string;\n\n\tconstructor(config: OpArtProps = {}) {\n\t\tsuper(withDefaults(\"OpArt\", opArtDefaults, config, effectMeta.OpArt));\n\t}\n}\n\nexport interface PaintProps {\n\t/**\n\t * Range 1 to 16384.\n\t * @default 1080\n\t */\n\twidth?: number;\n\t/**\n\t * Range 1 to 16384.\n\t * @default 1080\n\t */\n\theight?: number;\n\t/**\n\t * @default true\n\t */\n\tmaintainAspect?: boolean;\n\taspectRatio?: number;\n\t/**\n\t * @default \"#ffffff\"\n\t */\n\tbackgroundColor?: string;\n\tstrokes?: (\n\t\t| PaintStrokesItemOption1\n\t\t| PaintStrokesItemOption2\n\t\t| PaintStrokesItemOption3\n\t)[];\n}\n\nconst paintDefaults: PaintProps = {\n\twidth: 1080,\n\theight: 1080,\n\tmaintainAspect: true,\n\tbackgroundColor: \"#ffffff\",\n};\n\nexport class Paint extends Effect<PaintProps, \"Paint\", \"visual\"> {\n\tpublic readonly op = \"Paint\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare width: number;\n\tpublic declare height: number;\n\tpublic declare maintainAspect: boolean;\n\tpublic declare aspectRatio: number | undefined;\n\tpublic declare backgroundColor: string;\n\tpublic declare strokes:\n\t\t| (\n\t\t\t\t| PaintStrokesItemOption1\n\t\t\t\t| PaintStrokesItemOption2\n\t\t\t\t| PaintStrokesItemOption3\n\t\t )[]\n\t\t| undefined;\n\n\tconstructor(config: PaintProps = {}) {\n\t\tsuper(withDefaults(\"Paint\", paintDefaults, config, effectMeta.Paint));\n\t}\n}\n\nexport interface PainterlyProps {\n\t/**\n\t * Oil (dense strokes) or watercolor (wet edges, paper).\n\t * @default \"oil\"\n\t */\n\tstyle?: \"oil\" | \"watercolor\";\n\t/**\n\t * Brush size, px.\n\t * Range 2 to 12. Accepts a signal.\n\t * @default 5\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Watercolor: pigment pooling at patch edges.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tedgeDarkening?: EffectProp<number>;\n\t/**\n\t * Paper / canvas grain.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.3\n\t */\n\tpaper?: EffectProp<number>;\n\t/**\n\t * Color saturation.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 1.05\n\t */\n\tsaturation?: EffectProp<number>;\n}\n\nconst painterlyDefaults: PainterlyProps = {\n\tstyle: \"oil\",\n\tradius: 5,\n\tedgeDarkening: 0.5,\n\tpaper: 0.3,\n\tsaturation: 1.05,\n};\n\nexport class Painterly extends Effect<PainterlyProps, \"Painterly\", \"visual\"> {\n\tpublic readonly op = \"Painterly\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare style: \"oil\" | \"watercolor\";\n\tpublic declare radius: number;\n\tpublic declare edgeDarkening: number;\n\tpublic declare paper: number;\n\tpublic declare saturation: number;\n\n\tconstructor(config: PainterlyProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"Painterly\",\n\t\t\t\tpainterlyDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.Painterly,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface PatchHealProps {\n\t/** List of patch healing operations applied sequentially. */\n\tpatches?: PatchHealPatchesItem[];\n\t/**\n\t * Horizontal normalized position of destination patch (0.0 to 1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterX?: EffectProp<number>;\n\t/**\n\t * Vertical normalized position of destination patch (0.0 to 1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterY?: EffectProp<number>;\n\t/**\n\t * Horizontal pixel distance from destination to sample source patch.\n\t * Range -4096 to 4096. Accepts a signal.\n\t * @default 50\n\t */\n\toffsetX?: EffectProp<number>;\n\t/**\n\t * Vertical pixel distance from destination to sample source patch.\n\t * Range -4096 to 4096. Accepts a signal.\n\t * @default 0\n\t */\n\toffsetY?: EffectProp<number>;\n\t/**\n\t * Radius of the destination circular patch in pixels (used when no explicit Mask input is connected).\n\t * Range 1 to 500. Accepts a signal.\n\t * @default 25\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Radius of the source sample circular patch in pixels.\n\t * Range 1 to 500. Accepts a signal.\n\t * @default 25\n\t */\n\tsourceRadius?: EffectProp<number>;\n\t/**\n\t * Softness edge falloff percentage (0–100%).\n\t * Range 0 to 100. Accepts a signal.\n\t * @default 50\n\t */\n\tfeather?: EffectProp<number>;\n\t/**\n\t * Blending opacity of the healed patch (0.0–1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 1\n\t */\n\topacity?: EffectProp<number>;\n\t/**\n\t * Healing algorithm: Clone (direct stamp), SeamlessHeal (Poisson color/lighting blend), TextureTransfer (luminance structure matching).\n\t * @default \"SeamlessHeal\"\n\t */\n\tmode?: \"Clone\" | \"SeamlessHeal\" | \"TextureTransfer\";\n}\n\nconst patchHealDefaults: PatchHealProps = {\n\tcenterX: 0.5,\n\tcenterY: 0.5,\n\toffsetX: 50,\n\toffsetY: 0,\n\tradius: 25,\n\tsourceRadius: 25,\n\tfeather: 50,\n\topacity: 1,\n\tmode: \"SeamlessHeal\",\n};\n\nexport class PatchHeal extends Effect<PatchHealProps, \"PatchHeal\", \"visual\"> {\n\tpublic readonly op = \"PatchHeal\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare patches: PatchHealPatchesItem[] | undefined;\n\tpublic declare centerX: number;\n\tpublic declare centerY: number;\n\tpublic declare offsetX: number;\n\tpublic declare offsetY: number;\n\tpublic declare radius: number;\n\tpublic declare sourceRadius: number;\n\tpublic declare feather: number;\n\tpublic declare opacity: number;\n\tpublic declare mode: \"Clone\" | \"SeamlessHeal\" | \"TextureTransfer\";\n\n\tconstructor(config: PatchHealProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"PatchHeal\",\n\t\t\t\tpatchHealDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.PatchHeal,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface PixelateProps {\n\t/**\n\t * Cell size, px.\n\t * Range 1 to 256. Accepts a signal.\n\t * @default 12\n\t */\n\tsize?: EffectProp<number>;\n\t/**\n\t * Cell shape: square pixels, round LEDs or diamonds.\n\t * @default \"square\"\n\t */\n\tshape?: \"square\" | \"circle\" | \"diamond\";\n\t/**\n\t * Space between cells, as a fraction of a cell (0 = touching).\n\t * Range 0 to 0.9. Accepts a signal.\n\t * @default 0\n\t */\n\tgap?: EffectProp<number>;\n}\n\nconst pixelateDefaults: PixelateProps = {\n\tsize: 12,\n\tshape: \"square\",\n\tgap: 0,\n};\n\nexport class Pixelate extends Effect<PixelateProps, \"Pixelate\", \"visual\"> {\n\tpublic readonly op = \"Pixelate\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare size: number;\n\tpublic declare shape: \"square\" | \"circle\" | \"diamond\";\n\tpublic declare gap: number;\n\n\tconstructor(config: PixelateProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"Pixelate\", pixelateDefaults, config, effectMeta.Pixelate),\n\t\t);\n\t}\n}\n\nexport interface PosterizeProps {\n\t/**\n\t * Steps per channel when no palette is set.\n\t * Range 2 to 64. Accepts a signal.\n\t * @default 6\n\t */\n\tlevels?: EffectProp<number>;\n\t/**\n\t * Snap to a retro palette, or `custom` to use `colors`.\n\t * @default \"none\"\n\t */\n\tpalette?:\n\t\t| \"none\"\n\t\t| \"gameboy\"\n\t\t| \"teletext\"\n\t\t| \"cga\"\n\t\t| \"pico8\"\n\t\t| \"c64\"\n\t\t| \"grayscale\"\n\t\t| \"sepia\"\n\t\t| \"custom\";\n\t/**\n\t * Your palette (up to 16 hex colors), used when `palette` is `custom`.\n\t * @default []\n\t */\n\tcolors?: string[];\n\t/**\n\t * Ordered (Bayer) dithering between steps, 0–1.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tdither?: EffectProp<number>;\n\t/**\n\t * Pixel size, px: above 1 for pixel art.\n\t * Range 1 to 64. Accepts a signal.\n\t * @default 1\n\t */\n\tpixelSize?: EffectProp<number>;\n}\n\nconst posterizeDefaults: PosterizeProps = {\n\tlevels: 6,\n\tpalette: \"none\",\n\tcolors: [],\n\tdither: 0,\n\tpixelSize: 1,\n};\n\nexport class Posterize extends Effect<PosterizeProps, \"Posterize\", \"visual\"> {\n\tpublic readonly op = \"Posterize\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare levels: number;\n\tpublic declare palette:\n\t\t| \"none\"\n\t\t| \"gameboy\"\n\t\t| \"teletext\"\n\t\t| \"cga\"\n\t\t| \"pico8\"\n\t\t| \"c64\"\n\t\t| \"grayscale\"\n\t\t| \"sepia\"\n\t\t| \"custom\";\n\tpublic declare colors: string[];\n\tpublic declare dither: number;\n\tpublic declare pixelSize: number;\n\n\tconstructor(config: PosterizeProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"Posterize\",\n\t\t\t\tposterizeDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.Posterize,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ProceduralVFXProps {\n\t/**\n\t * Which procedural particle / light effect to synthesize.\n\t * @default \"Smoke\"\n\t */\n\teffectType?:\n\t\t| \"Smoke\"\n\t\t| \"Fire\"\n\t\t| \"Rain\"\n\t\t| \"Sparks\"\n\t\t| \"Snow\"\n\t\t| \"Dust\"\n\t\t| \"Lightning\"\n\t\t| \"Magic\"\n\t\t| \"LensFlare\"\n\t\t| \"Embers\"\n\t\t| \"EnergyBeam\"\n\t\t| \"Aurora\";\n\t/**\n\t * Image renders a static frame; Video animates over time.\n\t * @default \"Video\"\n\t */\n\toutputType?: \"Image\" | \"Video\";\n\t/**\n\t * Width\n\t * Range 16 to 4096.\n\t * @default 1080\n\t */\n\twidth?: number;\n\t/**\n\t * Height\n\t * Range 16 to 4096.\n\t * @default 1080\n\t */\n\theight?: number;\n\t/**\n\t * Amount of particles / coverage of the effect. Can be modulated by a static number or dynamic signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.6\n\t */\n\tdensity?: EffectProp<number>;\n\t/**\n\t * Spatial frequency / particle size of the effect. Can be modulated by a signal.\n\t * Range 0.001 to 10. Accepts a signal.\n\t * @default 0.01\n\t */\n\tscale?: EffectProp<number>;\n\t/**\n\t * Animation speed in Video mode. Can be modulated by a signal.\n\t * Range 0 to 10. Accepts a signal.\n\t * @default 1\n\t */\n\tspeed?: EffectProp<number>;\n\t/**\n\t * Brightness / alpha gain of the effect. Can be modulated by a signal.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.8\n\t */\n\tintensity?: EffectProp<number>;\n\t/**\n\t * Deterministic shuffle of the random pattern. Can be modulated by a signal.\n\t * Range 0 to 1000000. Accepts a signal.\n\t * @default 1234\n\t */\n\tseed?: EffectProp<number>;\n\t/**\n\t * Color Start\n\t * @default \"#ffffff\"\n\t */\n\tcolorStart?: string;\n\t/**\n\t * Color End\n\t * @default \"#ff5500\"\n\t */\n\tcolorEnd?: string;\n\t/**\n\t * Duration (ms)\n\t * Range 100 to 100000.\n\t * @default 5000\n\t */\n\tdurationMs?: number;\n\t/**\n\t * FPS\n\t * Range 1 to 120.\n\t * @default 30\n\t */\n\tfps?: number;\n}\n\nconst proceduralVFXDefaults: ProceduralVFXProps = {\n\teffectType: \"Smoke\",\n\toutputType: \"Video\",\n\twidth: 1080,\n\theight: 1080,\n\tdensity: 0.6,\n\tscale: 0.01,\n\tspeed: 1,\n\tintensity: 0.8,\n\tseed: 1234,\n\tcolorStart: \"#ffffff\",\n\tcolorEnd: \"#ff5500\",\n\tdurationMs: 5000,\n\tfps: 30,\n};\n\nexport class ProceduralVFX extends Effect<\n\tProceduralVFXProps,\n\t\"ProceduralVFX\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ProceduralVFX\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare effectType:\n\t\t| \"Smoke\"\n\t\t| \"Fire\"\n\t\t| \"Rain\"\n\t\t| \"Sparks\"\n\t\t| \"Snow\"\n\t\t| \"Dust\"\n\t\t| \"Lightning\"\n\t\t| \"Magic\"\n\t\t| \"LensFlare\"\n\t\t| \"Embers\"\n\t\t| \"EnergyBeam\"\n\t\t| \"Aurora\";\n\tpublic declare outputType: \"Image\" | \"Video\";\n\tpublic declare width: number;\n\tpublic declare height: number;\n\tpublic declare density: number;\n\tpublic declare scale: number;\n\tpublic declare speed: number;\n\tpublic declare intensity: number;\n\tpublic declare seed: number;\n\tpublic declare colorStart: string;\n\tpublic declare colorEnd: string;\n\tpublic declare durationMs: number;\n\tpublic declare fps: number;\n\n\tconstructor(config: ProceduralVFXProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ProceduralVFX\",\n\t\t\t\tproceduralVFXDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ProceduralVFX,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface RefineEdgeProps {\n\t/**\n\t * Amount of edge color spill decontamination/defringing (0.0–1.0).\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.7\n\t */\n\tdecontaminateAmount?: EffectProp<number>;\n\t/**\n\t * Radius in pixels around alpha transitions to refine and decontaminate.\n\t * Range 0.5 to 50. Accepts a signal.\n\t * @default 2\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * Matte edge smoothing curve intensity (0–100).\n\t * Range 0 to 100. Accepts a signal.\n\t * @default 5\n\t */\n\tsmooth?: EffectProp<number>;\n\t/**\n\t * Sub-pixel gaussian softness along the matte boundary.\n\t * Range 0 to 50. Accepts a signal.\n\t * @default 0.5\n\t */\n\tfeather?: EffectProp<number>;\n\t/**\n\t * Contract (<0) or expand (>0) the edge boundary (-100% to +100%).\n\t * Range -100 to 100. Accepts a signal.\n\t * @default 0\n\t */\n\tshiftEdge?: EffectProp<number>;\n\t/**\n\t * Channel to extract matte from (Alpha, Luminance, Red, Green, Blue).\n\t * @default \"Alpha\"\n\t */\n\tmatteChannel?: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\t/**\n\t * Composite (decontaminated RGB + refined alpha), MatteOnly (grayscale mask), DecontaminatedRGB (clean RGB with full alpha).\n\t * @default \"Composite\"\n\t */\n\toutputMode?: \"Composite\" | \"MatteOnly\" | \"DecontaminatedRGB\";\n}\n\nconst refineEdgeDefaults: RefineEdgeProps = {\n\tdecontaminateAmount: 0.7,\n\tradius: 2,\n\tsmooth: 5,\n\tfeather: 0.5,\n\tshiftEdge: 0,\n\tmatteChannel: \"Alpha\",\n\toutputMode: \"Composite\",\n};\n\nexport class RefineEdge extends Effect<\n\tRefineEdgeProps,\n\t\"RefineEdge\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"RefineEdge\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare decontaminateAmount: number;\n\tpublic declare radius: number;\n\tpublic declare smooth: number;\n\tpublic declare feather: number;\n\tpublic declare shiftEdge: number;\n\tpublic declare matteChannel: \"Alpha\" | \"Luminance\" | \"Red\" | \"Green\" | \"Blue\";\n\tpublic declare outputMode: \"Composite\" | \"MatteOnly\" | \"DecontaminatedRGB\";\n\n\tconstructor(config: RefineEdgeProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"RefineEdge\",\n\t\t\t\trefineEdgeDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.RefineEdge,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface RefractionCaustics3DProps {\n\t/**\n\t * Index of Refraction (1.0=Air, 1.33=Water, 1.52=Crown Glass, 2.42=Diamond). Controls ray bending according to Snell's Law.\n\t * Range 1 to 2.5. Accepts a signal.\n\t * @default 1.52\n\t */\n\tior?: EffectProp<number>;\n\t/**\n\t * Chromatic dispersion (RGB wavelength splitting) creating prismatic rainbow fringing.\n\t * Range 0 to 0.2. Accepts a signal.\n\t * @default 0.04\n\t */\n\tdispersion?: EffectProp<number>;\n\t/**\n\t * Depth displacement scale and effective glass thickness factor.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 0.5\n\t */\n\trefractionScale?: EffectProp<number>;\n\t/**\n\t * Brightness multiplier for photometric caustic light rays focusing through curved glass.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 0.6\n\t */\n\tcausticBrightness?: EffectProp<number>;\n\t/**\n\t * Spatial frequency scale of photometric caustic patterns.\n\t * Range 0.1 to 5. Accepts a signal.\n\t * @default 1\n\t */\n\tcausticScale?: EffectProp<number>;\n\t/**\n\t * Dynamic liquid wave perturbation strength across the refractive surface.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tfluidRipples?: EffectProp<number>;\n\t/**\n\t * Speed of dynamic fluid wave animation.\n\t * Range 0 to 5. Accepts a signal.\n\t * @default 1\n\t */\n\trippleSpeed?: EffectProp<number>;\n\t/**\n\t * Microfacet frosted glass roughness and optical diffusion blur.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\troughness?: EffectProp<number>;\n\t/**\n\t * Fresnel specular reflection gleam intensity.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 0.8\n\t */\n\tspecularIntensity?: EffectProp<number>;\n\t/**\n\t * Horizontal normalized coordinate (0.0 to 1.0) of incident light source.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tlightPosX?: EffectProp<number>;\n\t/**\n\t * Vertical normalized coordinate (0.0 to 1.0) of incident light source.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.2\n\t */\n\tlightPosY?: EffectProp<number>;\n\t/**\n\t * Internal glass color tint and absorption.\n\t * @default \"#ffffff\"\n\t */\n\ttintColor?: string;\n\t/**\n\t * Strength of internal glass color tint absorption.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\ttintStrength?: EffectProp<number>;\n\t/**\n\t * Invert depth polarity (white = near vs black = near).\n\t * @default false\n\t */\n\tdepthInvert?: boolean;\n\t/**\n\t * Height-field surface normal extrusion exaggeration.\n\t * Range 0.1 to 5. Accepts a signal.\n\t * @default 1\n\t */\n\tdepthScale?: EffectProp<number>;\n}\n\nconst refractionCaustics3DDefaults: RefractionCaustics3DProps = {\n\tior: 1.52,\n\tdispersion: 0.04,\n\trefractionScale: 0.5,\n\tcausticBrightness: 0.6,\n\tcausticScale: 1,\n\tfluidRipples: 0,\n\trippleSpeed: 1,\n\troughness: 0,\n\tspecularIntensity: 0.8,\n\tlightPosX: 0.5,\n\tlightPosY: 0.2,\n\ttintColor: \"#ffffff\",\n\ttintStrength: 0,\n\tdepthInvert: false,\n\tdepthScale: 1,\n};\n\nexport class RefractionCaustics3D extends Effect<\n\tRefractionCaustics3DProps,\n\t\"RefractionCaustics3D\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"RefractionCaustics3D\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare ior: number;\n\tpublic declare dispersion: number;\n\tpublic declare refractionScale: number;\n\tpublic declare causticBrightness: number;\n\tpublic declare causticScale: number;\n\tpublic declare fluidRipples: number;\n\tpublic declare rippleSpeed: number;\n\tpublic declare roughness: number;\n\tpublic declare specularIntensity: number;\n\tpublic declare lightPosX: number;\n\tpublic declare lightPosY: number;\n\tpublic declare tintColor: string;\n\tpublic declare tintStrength: number;\n\tpublic declare depthInvert: boolean;\n\tpublic declare depthScale: number;\n\n\tconstructor(config: RefractionCaustics3DProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"RefractionCaustics3D\",\n\t\t\t\trefractionCaustics3DDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.RefractionCaustics3D,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ResizerScalerProps {\n\t/**\n\t * @default \"16:9\"\n\t */\n\taspectRatioPreset?: \"9:16\" | \"16:9\" | \"1:1\" | \"4:5\" | \"21:9\" | \"custom\";\n\t/**\n\t * @default \"1080p\"\n\t */\n\tresolutionPreset?: \"4k\" | \"1080p\" | \"720p\" | \"480p\" | \"custom\";\n\t/**\n\t * Range 1 to 8192.\n\t * @default 1920\n\t */\n\ttargetWidth?: number;\n\t/**\n\t * Range 1 to 8192.\n\t * @default 1080\n\t */\n\ttargetHeight?: number;\n\t/**\n\t * @default \"contain\"\n\t */\n\tfitMode?: \"cover\" | \"contain\" | \"stretch\" | \"manual\";\n\t/**\n\t * Range 1 to 1000.\n\t * @default 100\n\t */\n\tzoom?: number;\n\t/**\n\t * Range -8192 to 8192.\n\t * @default 0\n\t */\n\toffsetX?: number;\n\t/**\n\t * Range -8192 to 8192.\n\t * @default 0\n\t */\n\toffsetY?: number;\n\t/**\n\t * @default \"solid\"\n\t */\n\tbackgroundMode?: \"solid\" | \"blurred\" | \"gradient\" | \"transparent\";\n\t/**\n\t * @default \"#000000FF\"\n\t */\n\tbackgroundColor?: string;\n\t/**\n\t * @default \"#000000FF\"\n\t */\n\tbackgroundColor2?: string;\n\t/**\n\t * Range 0 to 100.\n\t * @default 40\n\t */\n\tblurRadius?: number;\n\t/**\n\t * Range 0 to 1.\n\t * @default 0.6\n\t */\n\tbackgroundBrightness?: number;\n\t/**\n\t * @default \"center\"\n\t */\n\tanchorX?: \"left\" | \"center\" | \"right\";\n\t/**\n\t * @default \"center\"\n\t */\n\tanchorY?: \"top\" | \"center\" | \"bottom\";\n}\n\nconst resizerScalerDefaults: ResizerScalerProps = {\n\taspectRatioPreset: \"16:9\",\n\tresolutionPreset: \"1080p\",\n\ttargetWidth: 1920,\n\ttargetHeight: 1080,\n\tfitMode: \"contain\",\n\tzoom: 100,\n\toffsetX: 0,\n\toffsetY: 0,\n\tbackgroundMode: \"solid\",\n\tbackgroundColor: \"#000000FF\",\n\tbackgroundColor2: \"#000000FF\",\n\tblurRadius: 40,\n\tbackgroundBrightness: 0.6,\n\tanchorX: \"center\",\n\tanchorY: \"center\",\n};\n\nexport class ResizerScaler extends Effect<\n\tResizerScalerProps,\n\t\"ResizerScaler\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ResizerScaler\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare aspectRatioPreset:\n\t\t| \"9:16\"\n\t\t| \"16:9\"\n\t\t| \"1:1\"\n\t\t| \"4:5\"\n\t\t| \"21:9\"\n\t\t| \"custom\";\n\tpublic declare resolutionPreset: \"4k\" | \"1080p\" | \"720p\" | \"480p\" | \"custom\";\n\tpublic declare targetWidth: number;\n\tpublic declare targetHeight: number;\n\tpublic declare fitMode: \"cover\" | \"contain\" | \"stretch\" | \"manual\";\n\tpublic declare zoom: number;\n\tpublic declare offsetX: number;\n\tpublic declare offsetY: number;\n\tpublic declare backgroundMode:\n\t\t| \"solid\"\n\t\t| \"blurred\"\n\t\t| \"gradient\"\n\t\t| \"transparent\";\n\tpublic declare backgroundColor: string;\n\tpublic declare backgroundColor2: string;\n\tpublic declare blurRadius: number;\n\tpublic declare backgroundBrightness: number;\n\tpublic declare anchorX: \"left\" | \"center\" | \"right\";\n\tpublic declare anchorY: \"top\" | \"center\" | \"bottom\";\n\n\tconstructor(config: ResizerScalerProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"ResizerScaler\",\n\t\t\t\tresizerScalerDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.ResizerScaler,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface RGBSplitProps {\n\t/**\n\t * Split distance, px.\n\t * Range 0 to 200. Accepts a signal.\n\t * @default 8\n\t */\n\tamount?: EffectProp<number>;\n\t/**\n\t * Split direction, degrees (linear mode).\n\t * Range -360 to 360. Accepts a signal.\n\t * @default 0\n\t */\n\tangle?: EffectProp<number>;\n\t/**\n\t * Split outward from the center instead of along `angle`.\n\t * @default false\n\t */\n\tradial?: boolean;\n}\n\nconst rGBSplitDefaults: RGBSplitProps = {\n\tamount: 8,\n\tangle: 0,\n\tradial: false,\n};\n\nexport class RGBSplit extends Effect<RGBSplitProps, \"RGBSplit\", \"visual\"> {\n\tpublic readonly op = \"RGBSplit\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare amount: number;\n\tpublic declare angle: number;\n\tpublic declare radial: boolean;\n\n\tconstructor(config: RGBSplitProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"RGBSplit\", rGBSplitDefaults, config, effectMeta.RGBSplit),\n\t\t);\n\t}\n}\n\nexport interface RotateProps {\n\t/**\n\t * Rotation in degrees about the frame center, clockwise. Any value; 90 / 180 / 270 fix footage shot sideways or upside down.\n\t * Accepts a signal.\n\t * @default 90\n\t */\n\tangle?: EffectProp<number>;\n\t/**\n\t * How the rotated source sits in the output: cover fills it (cropping the overhang), contain shows all of it (transparent margins), fill keeps the unrotated source stretched to the output and only turns it.\n\t * @default \"cover\"\n\t */\n\tfit?: \"cover\" | \"contain\" | \"fill\";\n\t/**\n\t * Extra zoom applied after the fit (1 = exactly fitted).\n\t * Range 0.01 to 20. Accepts a signal.\n\t * @default 1\n\t */\n\tscale?: EffectProp<number>;\n}\n\nconst rotateDefaults: RotateProps = {\n\tangle: 90,\n\tfit: \"cover\",\n\tscale: 1,\n};\n\nexport class Rotate extends Effect<RotateProps, \"Rotate\", \"visual\"> {\n\tpublic readonly op = \"Rotate\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare angle: number;\n\tpublic declare fit: \"cover\" | \"contain\" | \"fill\";\n\tpublic declare scale: number;\n\n\tconstructor(config: RotateProps = {}) {\n\t\tsuper(withDefaults(\"Rotate\", rotateDefaults, config, effectMeta.Rotate));\n\t}\n}\n\nexport interface StereoPanningProps {\n\t/**\n\t * Stereo panning value: -1 (full left) to 1 (full right), 0 is center. Can be modulated by a static number or dynamic signal.\n\t * Range -1 to 1. Accepts a signal.\n\t * @default 0\n\t */\n\tpan?: EffectProp<number>;\n}\n\nconst stereoPanningDefaults: StereoPanningProps = {\n\tpan: 0,\n};\n\nexport class StereoPanning extends Effect<\n\tStereoPanningProps,\n\t\"StereoPanning\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"StereoPanning\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare pan: number;\n\n\tconstructor(config: StereoPanningProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\n\t\t\t\t\"StereoPanning\",\n\t\t\t\tstereoPanningDefaults,\n\t\t\t\tconfig,\n\t\t\t\teffectMeta.StereoPanning,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport interface ToonProps {\n\t/**\n\t * Brightness bands.\n\t * Range 2 to 12. Accepts a signal.\n\t * @default 4\n\t */\n\tlevels?: EffectProp<number>;\n\t/**\n\t * How strong an edge must be to get ink, 0–1.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.2\n\t */\n\tedgeThreshold?: EffectProp<number>;\n\t/**\n\t * Ink line width, px.\n\t * Range 0.5 to 4. Accepts a signal.\n\t * @default 1\n\t */\n\tedgeWidth?: EffectProp<number>;\n\t/**\n\t * Ink color.\n\t * @default \"#111111\"\n\t */\n\tedgeColor?: string;\n\t/**\n\t * Color saturation after banding.\n\t * Range 0 to 2. Accepts a signal.\n\t * @default 1.15\n\t */\n\tsaturation?: EffectProp<number>;\n}\n\nconst toonDefaults: ToonProps = {\n\tlevels: 4,\n\tedgeThreshold: 0.2,\n\tedgeWidth: 1,\n\tedgeColor: \"#111111\",\n\tsaturation: 1.15,\n};\n\nexport class Toon extends Effect<ToonProps, \"Toon\", \"visual\"> {\n\tpublic readonly op = \"Toon\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare levels: number;\n\tpublic declare edgeThreshold: number;\n\tpublic declare edgeWidth: number;\n\tpublic declare edgeColor: string;\n\tpublic declare saturation: number;\n\n\tconstructor(config: ToonProps = {}) {\n\t\tsuper(withDefaults(\"Toon\", toonDefaults, config, effectMeta.Toon));\n\t}\n}\n\nexport interface TrailsProps {\n\t/**\n\t * History kept per frame, 0–1: 0.8 short echoes, 0.97 long light trails.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.9\n\t */\n\tdecay?: EffectProp<number>;\n\t/**\n\t * blend: running average (echoes on full-frame footage); over: the layer over its fading past (cutouts, text); add: glows build up (light painting); max: keeps the brightest.\n\t * @default \"blend\"\n\t */\n\tmode?: \"blend\" | \"over\" | \"add\" | \"max\";\n\t/**\n\t * History scale per frame; 1.02 pulls the past into a tunnel.\n\t * Range 0.5 to 2. Accepts a signal.\n\t * @default 1\n\t */\n\tzoom?: EffectProp<number>;\n\t/**\n\t * History rotation per frame, degrees.\n\t * Range -45 to 45. Accepts a signal.\n\t * @default 0\n\t */\n\trotation?: EffectProp<number>;\n\t/**\n\t * History drift per frame, px.\n\t * Range -500 to 500. Accepts a signal.\n\t * @default 0\n\t */\n\toffsetX?: EffectProp<number>;\n\t/**\n\t * History drift per frame, px.\n\t * Range -500 to 500. Accepts a signal.\n\t * @default 0\n\t */\n\toffsetY?: EffectProp<number>;\n\t/**\n\t * History hue rotation per frame, degrees (psychedelic cycling).\n\t * Range -180 to 180. Accepts a signal.\n\t * @default 0\n\t */\n\thueShift?: EffectProp<number>;\n\t/**\n\t * Most frames replayed to rebuild the history after a jump (scrubbing, a single frame render).\n\t * Range 0 to 240.\n\t * @default 60\n\t */\n\twarmup?: number;\n}\n\nconst trailsDefaults: TrailsProps = {\n\tdecay: 0.9,\n\tmode: \"blend\",\n\tzoom: 1,\n\trotation: 0,\n\toffsetX: 0,\n\toffsetY: 0,\n\thueShift: 0,\n\twarmup: 60,\n};\n\nexport class Trails extends Effect<TrailsProps, \"Trails\", \"visual\"> {\n\tpublic readonly op = \"Trails\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare decay: number;\n\tpublic declare mode: \"blend\" | \"over\" | \"add\" | \"max\";\n\tpublic declare zoom: number;\n\tpublic declare rotation: number;\n\tpublic declare offsetX: number;\n\tpublic declare offsetY: number;\n\tpublic declare hueShift: number;\n\tpublic declare warmup: number;\n\n\tconstructor(config: TrailsProps = {}) {\n\t\tsuper(withDefaults(\"Trails\", trailsDefaults, config, effectMeta.Trails));\n\t}\n}\n\nexport interface VignetteProps {\n\t/**\n\t * The intensity of the vignette darkening effect. 0 = no vignette.\n\t * Range 0 to 100. Accepts a signal.\n\t * @default 50\n\t */\n\tstrength?: EffectProp<number>;\n\t/**\n\t * The extent/size of the vignette.\n\t * Range 0.1 to 2. Accepts a signal.\n\t * @default 1\n\t */\n\tradius?: EffectProp<number>;\n\t/**\n\t * The softness of the vignette transition edge.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tsoftness?: EffectProp<number>;\n\t/**\n\t * 0.0 matches the image aspect ratio, 1.0 is a perfect circle.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\troundness?: EffectProp<number>;\n\t/**\n\t * The X coordinate of the vignette center.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterX?: EffectProp<number>;\n\t/**\n\t * The Y coordinate of the vignette center.\n\t * Range 0 to 1. Accepts a signal.\n\t * @default 0.5\n\t */\n\tcenterY?: EffectProp<number>;\n}\n\nconst vignetteDefaults: VignetteProps = {\n\tstrength: 50,\n\tradius: 1,\n\tsoftness: 0.5,\n\troundness: 0.5,\n\tcenterX: 0.5,\n\tcenterY: 0.5,\n};\n\nexport class Vignette extends Effect<VignetteProps, \"Vignette\", \"visual\"> {\n\tpublic readonly op = \"Vignette\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare strength: number;\n\tpublic declare radius: number;\n\tpublic declare softness: number;\n\tpublic declare roundness: number;\n\tpublic declare centerX: number;\n\tpublic declare centerY: number;\n\n\tconstructor(config: VignetteProps = {}) {\n\t\tsuper(\n\t\t\twithDefaults(\"Vignette\", vignetteDefaults, config, effectMeta.Vignette),\n\t\t);\n\t}\n}\n","import type { ObjectTrackSignals } from \"@framefields/vision\";\nimport { BlurBase, type BlurBaseProps } from \"../generated/classes.js\";\n\nexport interface BlurProps extends BlurBaseProps {\n\t/**\n\t * Follow a tracked object. Turns on `partialBlur` and derives the region\n\t * (`centerX`, `centerY`, `radius`, `radiusY`, `shape`) and `strength` from\n\t * the track. Any of those passed explicitly wins over the track.\n\t */\n\ttrack?: ObjectTrackSignals;\n}\n\n/** Props the track supplies when the caller does not. */\nfunction trackDefaults(track: ObjectTrackSignals): BlurBaseProps {\n\treturn {\n\t\tpartialBlur: true,\n\t\tcenterX: track.center.x,\n\t\tcenterY: track.center.y,\n\t\tradius: track.bounds.width.multiply(0.55),\n\t\tradiusY: track.bounds.height.multiply(0.55),\n\t\tshape: \"ellipse\",\n\t\t// Fades the blur out while the object is not being tracked.\n\t\tstrength: track.active.multiply(25),\n\t};\n}\n\n/**\n * Blur effect. Props, defaults and ranges are generated from `node-blur`'s\n * schema ({@link BlurBase}); this subclass only adds `track`.\n */\nexport class Blur extends BlurBase {\n\tconstructor(config: BlurProps = {}) {\n\t\tconst { track, ...rest } = config;\n\t\tsuper(track ? { ...trackDefaults(track), ...definedOnly(rest) } : rest);\n\t}\n}\n\nfunction definedOnly<T extends object>(value: T): T {\n\treturn Object.fromEntries(\n\t\tObject.entries(value).filter(([, v]) => v !== undefined),\n\t) as T;\n}\n","// @generated by scripts/generate-effects.mts — do not edit.\n// Source of truth: nodes/*/package.json (`framefields`) and nodes/*/src/shared/config.ts.\n// Regenerate with `pnpm run generate:effects`.\n\nimport { Blur, type BlurProps } from \"../custom/blur.js\";\nimport {\n\tAscii,\n\ttype AsciiProps,\n\tAudioCompressor,\n\ttype AudioCompressorProps,\n\tAudioDelay,\n\ttype AudioDelayProps,\n\tAudioFade,\n\ttype AudioFadeProps,\n\tAudioNoiseGate,\n\ttype AudioNoiseGateProps,\n\tAudioParametricEq,\n\ttype AudioParametricEqProps,\n\tAudioReverb,\n\ttype AudioReverbProps,\n\tCameraParallax3D,\n\ttype CameraParallax3DProps,\n\tChannelMerger,\n\ttype ChannelMergerProps,\n\tChannelSplitter,\n\ttype ChannelSplitterProps,\n\tColorBalance,\n\ttype ColorBalanceProps,\n\tColorKey,\n\ttype ColorKeyProps,\n\tContour,\n\ttype ContourProps,\n\tCornerPin,\n\ttype CornerPinProps,\n\tCRT,\n\ttype CRTProps,\n\tDatamosh,\n\ttype DatamoshProps,\n\tDisplacementMap,\n\ttype DisplacementMapProps,\n\tDither,\n\ttype DitherProps,\n\tExtractLUT,\n\ttype ExtractLUTProps,\n\tFlip,\n\ttype FlipProps,\n\tGooey,\n\ttype GooeyProps,\n\tIridescence,\n\ttype IridescenceProps,\n\tKaleidoscope,\n\ttype KaleidoscopeProps,\n\tKenBurns,\n\ttype KenBurnsProps,\n\tLayerStyle,\n\ttype LayerStyleProps,\n\tLiquify,\n\ttype LiquifyProps,\n\tMaskMath,\n\ttype MaskMathProps,\n\tMeshWarp,\n\ttype MeshWarpProps,\n\tNoiseGenerator,\n\ttype NoiseGeneratorProps,\n\tOpArt,\n\ttype OpArtProps,\n\tPaint,\n\tPainterly,\n\ttype PainterlyProps,\n\ttype PaintProps,\n\tPatchHeal,\n\ttype PatchHealProps,\n\tPixelate,\n\ttype PixelateProps,\n\tPosterize,\n\ttype PosterizeProps,\n\tProceduralVFX,\n\ttype ProceduralVFXProps,\n\tRefineEdge,\n\ttype RefineEdgeProps,\n\tRefractionCaustics3D,\n\ttype RefractionCaustics3DProps,\n\tResizerScaler,\n\ttype ResizerScalerProps,\n\tRGBSplit,\n\ttype RGBSplitProps,\n\tRotate,\n\ttype RotateProps,\n\tStereoPanning,\n\ttype StereoPanningProps,\n\tToon,\n\ttype ToonProps,\n\tTrails,\n\ttype TrailsProps,\n\tVignette,\n\ttype VignetteProps,\n} from \"./classes.js\";\n\n/** `Effect.<factory>(config)` helpers, one per generated effect class. */\nexport const effectFactories = {\n\tascii: (config?: AsciiProps) => new Ascii(config),\n\taudioCompressor: (config?: AudioCompressorProps) =>\n\t\tnew AudioCompressor(config),\n\taudioDelay: (config?: AudioDelayProps) => new AudioDelay(config),\n\taudioFade: (config?: AudioFadeProps) => new AudioFade(config),\n\taudioNoiseGate: (config?: AudioNoiseGateProps) => new AudioNoiseGate(config),\n\taudioParametricEq: (config?: AudioParametricEqProps) =>\n\t\tnew AudioParametricEq(config),\n\taudioReverb: (config?: AudioReverbProps) => new AudioReverb(config),\n\tblur: (config?: BlurProps) => new Blur(config),\n\tcameraParallax3D: (config?: CameraParallax3DProps) =>\n\t\tnew CameraParallax3D(config),\n\tchannelMerger: (config?: ChannelMergerProps) => new ChannelMerger(config),\n\tchannelSplitter: (config?: ChannelSplitterProps) =>\n\t\tnew ChannelSplitter(config),\n\tcolorBalance: (config?: ColorBalanceProps) => new ColorBalance(config),\n\tcolorKey: (config?: ColorKeyProps) => new ColorKey(config),\n\tcontour: (config?: ContourProps) => new Contour(config),\n\tcornerPin: (config?: CornerPinProps) => new CornerPin(config),\n\tcRT: (config?: CRTProps) => new CRT(config),\n\tdatamosh: (config?: DatamoshProps) => new Datamosh(config),\n\tdisplacementMap: (config?: DisplacementMapProps) =>\n\t\tnew DisplacementMap(config),\n\tdither: (config?: DitherProps) => new Dither(config),\n\textractLUT: (config?: ExtractLUTProps) => new ExtractLUT(config),\n\tflip: (config?: FlipProps) => new Flip(config),\n\tgooey: (config?: GooeyProps) => new Gooey(config),\n\tiridescence: (config?: IridescenceProps) => new Iridescence(config),\n\tkaleidoscope: (config?: KaleidoscopeProps) => new Kaleidoscope(config),\n\tkenBurns: (config?: KenBurnsProps) => new KenBurns(config),\n\tlayerStyle: (config?: LayerStyleProps) => new LayerStyle(config),\n\tliquify: (config?: LiquifyProps) => new Liquify(config),\n\tmaskMath: (config?: MaskMathProps) => new MaskMath(config),\n\tmeshWarp: (config?: MeshWarpProps) => new MeshWarp(config),\n\tnoiseGenerator: (config?: NoiseGeneratorProps) => new NoiseGenerator(config),\n\topArt: (config?: OpArtProps) => new OpArt(config),\n\tpaint: (config?: PaintProps) => new Paint(config),\n\tpainterly: (config?: PainterlyProps) => new Painterly(config),\n\tpatchHeal: (config?: PatchHealProps) => new PatchHeal(config),\n\tpixelate: (config?: PixelateProps) => new Pixelate(config),\n\tposterize: (config?: PosterizeProps) => new Posterize(config),\n\tproceduralVFX: (config?: ProceduralVFXProps) => new ProceduralVFX(config),\n\trefineEdge: (config?: RefineEdgeProps) => new RefineEdge(config),\n\trefractionCaustics3D: (config?: RefractionCaustics3DProps) =>\n\t\tnew RefractionCaustics3D(config),\n\tresizerScaler: (config?: ResizerScalerProps) => new ResizerScaler(config),\n\trGBSplit: (config?: RGBSplitProps) => new RGBSplit(config),\n\trotate: (config?: RotateProps) => new Rotate(config),\n\tstereoPanning: (config?: StereoPanningProps) => new StereoPanning(config),\n\ttoon: (config?: ToonProps) => new Toon(config),\n\ttrails: (config?: TrailsProps) => new Trails(config),\n\tvignette: (config?: VignetteProps) => new Vignette(config),\n} as const;\n","import { Effect } from \"@framefields/core\";\nimport {\n\tAudioSignal,\n\ttype AudioSignalOptions,\n\ttype ExtractedAudioSignalsBundle,\n} from \"../signals/audio.js\";\nimport type { EffectProp } from \"./types.js\";\n\n// Vignette, Blur and ColorBalance are generated from their node packages\n// (./generated, written by scripts/generate-effects.mts). The classes below\n// are still hand-written and move there in later phases of spec/sync-node.md.\nexport * from \"./generated/index.js\";\n\nimport type {\n\tAnyGeneratedAudioEffect,\n\tAnyGeneratedVisualEffect,\n\tGeneratedEffectConfigMap,\n} from \"./generated/index.js\";\n\nexport type { EffectProp } from \"./types.js\";\n\nexport interface LevelChannel {\n\tinBlack?: number;\n\tinWhite?: number;\n\toutBlack?: number;\n\toutWhite?: number;\n}\n\nexport interface LevelsProps {\n\tmaster?: LevelChannel;\n\tred?: LevelChannel;\n\tgreen?: LevelChannel;\n\tblue?: LevelChannel;\n}\n\nexport class Levels extends Effect<LevelsProps, \"Levels\", \"visual\"> {\n\tpublic readonly op = \"Levels\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare master: LevelChannel;\n\tpublic declare red: LevelChannel;\n\tpublic declare green: LevelChannel;\n\tpublic declare blue: LevelChannel;\n\n\tconstructor(config: LevelsProps = {}) {\n\t\tconst defaultChannel: LevelChannel = {\n\t\t\tinBlack: 0,\n\t\t\tinWhite: 1,\n\t\t\toutBlack: 0,\n\t\t\toutWhite: 1,\n\t\t};\n\t\tsuper({\n\t\t\tmaster: config.master ?? { ...defaultChannel },\n\t\t\tred: config.red ?? { ...defaultChannel },\n\t\t\tgreen: config.green ?? { ...defaultChannel },\n\t\t\tblue: config.blue ?? { ...defaultChannel },\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport interface FilmGrainProps {\n\tstrength?: EffectProp<number>;\n\tsize?: EffectProp<number>;\n\tmonochrome?: boolean;\n\tanimated?: boolean;\n\tspeed?: EffectProp<number>;\n\tshadows?: EffectProp<number>;\n\tmidtones?: EffectProp<number>;\n\thighlights?: EffectProp<number>;\n}\n\nexport class FilmGrain extends Effect<FilmGrainProps, \"FilmGrain\", \"visual\"> {\n\tpublic readonly op = \"FilmGrain\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare strength: number;\n\tpublic declare size: number;\n\tpublic declare monochrome: boolean;\n\tpublic declare animated: boolean;\n\tpublic declare speed: number;\n\tpublic declare shadows: number;\n\tpublic declare midtones: number;\n\tpublic declare highlights: number;\n\n\tconstructor(config: FilmGrainProps = {}) {\n\t\tsuper({\n\t\t\tstrength: config.strength ?? 15,\n\t\t\tsize: config.size ?? 1.5,\n\t\t\tmonochrome: config.monochrome ?? true,\n\t\t\tanimated: config.animated ?? true,\n\t\t\tspeed: config.speed ?? 50,\n\t\t\tshadows: config.shadows ?? 0.2,\n\t\t\tmidtones: config.midtones ?? 1.0,\n\t\t\thighlights: config.highlights ?? 0.2,\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport class CustomEffect extends Effect<\n\tRecord<string, unknown>,\n\tstring,\n\t\"visual\"\n> {\n\tpublic readonly op: string;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tconstructor(opName: string, config: Record<string, unknown> = {}) {\n\t\tsuper(config);\n\t\tthis.op = opName;\n\t}\n}\n\nexport interface AudioSignalExtractorProps {\n\textractionMode?:\n\t\t| \"rms_envelope\"\n\t\t| \"transient_beat\"\n\t\t| \"sub_bass\"\n\t\t| \"bass\"\n\t\t| \"mid\"\n\t\t| \"high\"\n\t\t| \"spectral_flux\";\n\tattackMs?: number;\n\treleaseMs?: number;\n\tsensitivity?: number;\n\tnoiseFloorDb?: number;\n\tdynamicRangeDb?: number;\n\tautoRange?: boolean;\n\tsmoothing?: number;\n\tcurve?: \"linear\" | \"exponential\" | \"logarithmic\" | \"square\" | \"smoothstep\";\n\tbeatThreshold?: number;\n\tbeatDecayMs?: number;\n\tpreviewMode?: \"waveform\" | \"envelope\" | \"beat_markers\" | \"spectrum\";\n\tnodeId?: string;\n}\n\nexport class AudioSignalExtractor extends Effect<\n\tAudioSignalExtractorProps,\n\t\"AudioSignalExtractor\",\n\t\"audio\"\n> {\n\tpublic readonly op = \"AudioSignalExtractor\" as const;\n\tpublic override readonly domain = \"audio\" as const;\n\n\tpublic declare extractionMode: AudioSignalExtractorProps[\"extractionMode\"];\n\tpublic declare attackMs: number;\n\tpublic declare releaseMs: number;\n\tpublic declare sensitivity: number;\n\tpublic declare noiseFloorDb: number;\n\tpublic declare dynamicRangeDb: number;\n\tpublic declare autoRange: boolean;\n\tpublic declare smoothing: number;\n\tpublic declare curve: AudioSignalExtractorProps[\"curve\"];\n\tpublic declare beatThreshold: number;\n\tpublic declare beatDecayMs: number;\n\tpublic declare previewMode: AudioSignalExtractorProps[\"previewMode\"];\n\tpublic declare nodeId: string;\n\n\tconstructor(config: AudioSignalExtractorProps = {}) {\n\t\tsuper({\n\t\t\textractionMode: config.extractionMode ?? \"rms_envelope\",\n\t\t\tattackMs: config.attackMs ?? 10,\n\t\t\treleaseMs: config.releaseMs ?? 120,\n\t\t\tsensitivity: config.sensitivity ?? 1.0,\n\t\t\tnoiseFloorDb: config.noiseFloorDb ?? -48,\n\t\t\tdynamicRangeDb: config.dynamicRangeDb ?? 48,\n\t\t\tautoRange: config.autoRange ?? true,\n\t\t\tsmoothing: config.smoothing ?? 0.15,\n\t\t\tcurve: config.curve ?? \"linear\",\n\t\t\tbeatThreshold: config.beatThreshold ?? 0.08,\n\t\t\tbeatDecayMs: config.beatDecayMs ?? 80,\n\t\t\tpreviewMode: config.previewMode ?? \"envelope\",\n\t\t\tnodeId: config.nodeId ?? \"audio_extractor\",\n\t\t\t...config,\n\t\t});\n\t}\n\n\tpublic async extract(\n\t\tsource: string,\n\t\toptions: Partial<AudioSignalOptions> = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\treturn AudioSignal.extract(source, {\n\t\t\textractionMode: this.extractionMode,\n\t\t\tattackMs: this.attackMs,\n\t\t\treleaseMs: this.releaseMs,\n\t\t\tsensitivity: this.sensitivity,\n\t\t\tnoiseFloorDb: this.noiseFloorDb,\n\t\t\tdynamicRangeDb: this.dynamicRangeDb,\n\t\t\tsmoothing: this.smoothing,\n\t\t\tcurve: this.curve,\n\t\t\tbeatThreshold: this.beatThreshold,\n\t\t\tbeatDecayMs: this.beatDecayMs,\n\t\t\tpreviewMode: this.previewMode,\n\t\t\t...options,\n\t\t});\n\t}\n}\n\n// ─── Batch 1: Core Tonal, Color & Filter Effects ────────────────────────────\n\nexport interface CurvesChannelPoint {\n\tx: number;\n\ty: number;\n}\n\nexport interface CurvesProps {\n\tcurveType?: \"rgb\" | \"hue-vs-hue\" | \"hue-vs-sat\" | \"lum-vs-sat\" | \"sat-vs-sat\";\n\tmaster?: CurvesChannelPoint[];\n\tred?: CurvesChannelPoint[];\n\tgreen?: CurvesChannelPoint[];\n\tblue?: CurvesChannelPoint[];\n\thueVsHue?: CurvesChannelPoint[];\n\thueVsSat?: CurvesChannelPoint[];\n\tlumVsSat?: CurvesChannelPoint[];\n\tsatVsSat?: CurvesChannelPoint[];\n}\n\nexport class Curves extends Effect<CurvesProps, \"Curves\", \"visual\"> {\n\tpublic readonly op = \"Curves\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare curveType: CurvesProps[\"curveType\"];\n\tpublic declare master: CurvesChannelPoint[];\n\tpublic declare red: CurvesChannelPoint[];\n\tpublic declare green: CurvesChannelPoint[];\n\tpublic declare blue: CurvesChannelPoint[];\n\tpublic declare hueVsHue: CurvesChannelPoint[];\n\tpublic declare hueVsSat: CurvesChannelPoint[];\n\tpublic declare lumVsSat: CurvesChannelPoint[];\n\tpublic declare satVsSat: CurvesChannelPoint[];\n\n\tconstructor(config: CurvesProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tcurveType: config.curveType ?? \"rgb\",\n\t\t\tmaster: config.master ?? [\n\t\t\t\t{ x: 0, y: 0 },\n\t\t\t\t{ x: 1, y: 1 },\n\t\t\t],\n\t\t\tred: config.red ?? [\n\t\t\t\t{ x: 0, y: 0 },\n\t\t\t\t{ x: 1, y: 1 },\n\t\t\t],\n\t\t\tgreen: config.green ?? [\n\t\t\t\t{ x: 0, y: 0 },\n\t\t\t\t{ x: 1, y: 1 },\n\t\t\t],\n\t\t\tblue: config.blue ?? [\n\t\t\t\t{ x: 0, y: 0 },\n\t\t\t\t{ x: 1, y: 1 },\n\t\t\t],\n\t\t\thueVsHue: config.hueVsHue ?? [\n\t\t\t\t{ x: 0, y: 0.5 },\n\t\t\t\t{ x: 1, y: 0.5 },\n\t\t\t],\n\t\t\thueVsSat: config.hueVsSat ?? [\n\t\t\t\t{ x: 0, y: 1.0 },\n\t\t\t\t{ x: 1, y: 1.0 },\n\t\t\t],\n\t\t\tlumVsSat: config.lumVsSat ?? [\n\t\t\t\t{ x: 0, y: 1.0 },\n\t\t\t\t{ x: 1, y: 1.0 },\n\t\t\t],\n\t\t\tsatVsSat: config.satVsSat ?? [\n\t\t\t\t{ x: 0, y: 1.0 },\n\t\t\t\t{ x: 1, y: 1.0 },\n\t\t\t],\n\t\t});\n\t}\n}\n\nexport interface SelectiveColorAdjustment {\n\tcyan: number;\n\tmagenta: number;\n\tyellow: number;\n\tblack: number;\n}\n\nexport interface SelectiveColorProps {\n\tmethod?: \"Relative\" | \"Absolute\";\n\treds?: Partial<SelectiveColorAdjustment>;\n\tyellows?: Partial<SelectiveColorAdjustment>;\n\tgreens?: Partial<SelectiveColorAdjustment>;\n\tcyans?: Partial<SelectiveColorAdjustment>;\n\tblues?: Partial<SelectiveColorAdjustment>;\n\tmagentas?: Partial<SelectiveColorAdjustment>;\n\twhites?: Partial<SelectiveColorAdjustment>;\n\tneutrals?: Partial<SelectiveColorAdjustment>;\n\tblacks?: Partial<SelectiveColorAdjustment>;\n}\n\nexport class SelectiveColor extends Effect<\n\tSelectiveColorProps,\n\t\"SelectiveColor\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"SelectiveColor\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare method: \"Relative\" | \"Absolute\";\n\tpublic declare reds: SelectiveColorAdjustment;\n\tpublic declare yellows: SelectiveColorAdjustment;\n\tpublic declare greens: SelectiveColorAdjustment;\n\tpublic declare cyans: SelectiveColorAdjustment;\n\tpublic declare blues: SelectiveColorAdjustment;\n\tpublic declare magentas: SelectiveColorAdjustment;\n\tpublic declare whites: SelectiveColorAdjustment;\n\tpublic declare neutrals: SelectiveColorAdjustment;\n\tpublic declare blacks: SelectiveColorAdjustment;\n\n\tconstructor(config: SelectiveColorProps = {}) {\n\t\tconst defaultAdj: SelectiveColorAdjustment = {\n\t\t\tcyan: 0,\n\t\t\tmagenta: 0,\n\t\t\tyellow: 0,\n\t\t\tblack: 0,\n\t\t};\n\t\tsuper({\n\t\t\t...config,\n\t\t\tmethod: config.method ?? \"Relative\",\n\t\t\treds: { ...defaultAdj, ...config.reds },\n\t\t\tyellows: { ...defaultAdj, ...config.yellows },\n\t\t\tgreens: { ...defaultAdj, ...config.greens },\n\t\t\tcyans: { ...defaultAdj, ...config.cyans },\n\t\t\tblues: { ...defaultAdj, ...config.blues },\n\t\t\tmagentas: { ...defaultAdj, ...config.magentas },\n\t\t\twhites: { ...defaultAdj, ...config.whites },\n\t\t\tneutrals: { ...defaultAdj, ...config.neutrals },\n\t\t\tblacks: { ...defaultAdj, ...config.blacks },\n\t\t});\n\t}\n}\n\nexport interface GradientMapStop {\n\tposition: number;\n\tcolor: string;\n}\n\nexport interface GradientMapProps {\n\tstops?: GradientMapStop[];\n\tsmooth?: boolean;\n\tdither?: boolean;\n\topacity?: EffectProp<number>;\n}\n\nexport class GradientMap extends Effect<\n\tGradientMapProps,\n\t\"GradientMap\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"GradientMap\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare stops: GradientMapStop[];\n\tpublic declare smooth: boolean;\n\tpublic declare dither: boolean;\n\tpublic declare opacity: number;\n\n\tconstructor(config: GradientMapProps = {}) {\n\t\tconst defaultStops: GradientMapStop[] = [\n\t\t\t{ position: 0.0, color: \"#000000\" },\n\t\t\t{ position: 1.0, color: \"#ffffff\" },\n\t\t];\n\t\tsuper({\n\t\t\t...config,\n\t\t\tstops: config.stops ?? defaultStops,\n\t\t\tsmooth: config.smooth ?? true,\n\t\t\tdither: config.dither ?? true,\n\t\t\topacity: config.opacity ?? 1.0,\n\t\t});\n\t}\n}\n\nexport interface ShadowsHighlightsProps {\n\tshadowAmount?: EffectProp<number>;\n\tshadowTonalWidth?: EffectProp<number>;\n\tshadowRadius?: EffectProp<number>;\n\thighlightAmount?: EffectProp<number>;\n\thighlightTonalWidth?: EffectProp<number>;\n\thighlightRadius?: EffectProp<number>;\n\tcolorCorrection?: EffectProp<number>;\n\tmidtoneContrast?: EffectProp<number>;\n}\n\nexport class ShadowsHighlights extends Effect<\n\tShadowsHighlightsProps,\n\t\"ShadowsHighlights\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"ShadowsHighlights\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare shadowAmount: number;\n\tpublic declare shadowTonalWidth: number;\n\tpublic declare shadowRadius: number;\n\tpublic declare highlightAmount: number;\n\tpublic declare highlightTonalWidth: number;\n\tpublic declare highlightRadius: number;\n\tpublic declare colorCorrection: number;\n\tpublic declare midtoneContrast: number;\n\n\tconstructor(config: ShadowsHighlightsProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tshadowAmount: config.shadowAmount ?? 0,\n\t\t\tshadowTonalWidth: config.shadowTonalWidth ?? 50,\n\t\t\tshadowRadius: config.shadowRadius ?? 30,\n\t\t\thighlightAmount: config.highlightAmount ?? 0,\n\t\t\thighlightTonalWidth: config.highlightTonalWidth ?? 50,\n\t\t\thighlightRadius: config.highlightRadius ?? 30,\n\t\t\tcolorCorrection: config.colorCorrection ?? 0,\n\t\t\tmidtoneContrast: config.midtoneContrast ?? 0,\n\t\t});\n\t}\n}\n\nexport interface ApplyLUTProps {\n\tlutUrl?: string;\n\tintensity?: EffectProp<number>;\n}\n\nexport class ApplyLUT extends Effect<ApplyLUTProps, \"ApplyLUT\", \"visual\"> {\n\tpublic readonly op = \"ApplyLUT\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare lutUrl: string;\n\tpublic declare intensity: number;\n\n\tconstructor(config: ApplyLUTProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tlutUrl: config.lutUrl ?? \"\",\n\t\t\tintensity: config.intensity ?? 1.0,\n\t\t});\n\t}\n}\n\nexport interface UnsharpMaskProps {\n\tamount?: EffectProp<number>;\n\tradius?: EffectProp<number>;\n\tthreshold?: EffectProp<number>;\n}\n\nexport class UnsharpMask extends Effect<\n\tUnsharpMaskProps,\n\t\"UnsharpMask\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"UnsharpMask\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare amount: number;\n\tpublic declare radius: number;\n\tpublic declare threshold: number;\n\n\tconstructor(config: UnsharpMaskProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tamount: config.amount ?? 100,\n\t\t\tradius: config.radius ?? 1.5,\n\t\t\tthreshold: config.threshold ?? 3,\n\t\t});\n\t}\n}\n\nexport interface HighPassProps {\n\tradius?: EffectProp<number>;\n\tcontrastBoost?: EffectProp<number>;\n\tmonochrome?: boolean;\n}\n\nexport class HighPass extends Effect<HighPassProps, \"HighPass\", \"visual\"> {\n\tpublic readonly op = \"HighPass\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare radius: number;\n\tpublic declare contrastBoost: number;\n\tpublic declare monochrome: boolean;\n\n\tconstructor(config: HighPassProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tradius: config.radius ?? 3.0,\n\t\t\tcontrastBoost: config.contrastBoost ?? 1.0,\n\t\t\tmonochrome: config.monochrome ?? true,\n\t\t});\n\t}\n}\n\nexport type HalftoneDotShape = \"Circle\" | \"Diamond\" | \"Line\" | \"Square\";\nexport type HalftoneMode = \"Monochrome\" | \"CMYK\";\n\nexport interface HalftoneScreenProps {\n\tmode?: HalftoneMode;\n\tdotShape?: HalftoneDotShape;\n\tfrequency?: EffectProp<number>;\n\tangle?: EffectProp<number>;\n\tcontrast?: EffectProp<number>;\n\tdotColor?: string;\n\tpaperColor?: string;\n\tsmooth?: boolean;\n\tinvert?: boolean;\n\tcyanAngle?: EffectProp<number>;\n\tmagentaAngle?: EffectProp<number>;\n\tyellowAngle?: EffectProp<number>;\n\tblackAngle?: EffectProp<number>;\n\topacity?: EffectProp<number>;\n}\n\nexport class HalftoneScreen extends Effect<\n\tHalftoneScreenProps,\n\t\"HalftoneScreen\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"HalftoneScreen\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare mode: HalftoneMode;\n\tpublic declare dotShape: HalftoneDotShape;\n\tpublic declare frequency: number;\n\tpublic declare angle: number;\n\tpublic declare contrast: number;\n\tpublic declare dotColor: string;\n\tpublic declare paperColor: string;\n\tpublic declare smooth: boolean;\n\tpublic declare invert: boolean;\n\tpublic declare cyanAngle: number;\n\tpublic declare magentaAngle: number;\n\tpublic declare yellowAngle: number;\n\tpublic declare blackAngle: number;\n\tpublic declare opacity: number;\n\n\tconstructor(config: HalftoneScreenProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tmode: config.mode ?? \"Monochrome\",\n\t\t\tdotShape: config.dotShape ?? \"Circle\",\n\t\t\tfrequency: config.frequency ?? 30,\n\t\t\tangle: config.angle ?? 45,\n\t\t\tcontrast: config.contrast ?? 1.0,\n\t\t\tdotColor: config.dotColor ?? \"#000000\",\n\t\t\tpaperColor: config.paperColor ?? \"#ffffff\",\n\t\t\tsmooth: config.smooth ?? true,\n\t\t\tinvert: config.invert ?? false,\n\t\t\tcyanAngle: config.cyanAngle ?? 15,\n\t\t\tmagentaAngle: config.magentaAngle ?? 75,\n\t\t\tyellowAngle: config.yellowAngle ?? 0,\n\t\t\tblackAngle: config.blackAngle ?? 45,\n\t\t\topacity: config.opacity ?? 1.0,\n\t\t});\n\t}\n}\n\nexport type TileOffsetEdgeMode = \"wrap\" | \"clamp\" | \"transparent\" | \"mirror\";\n\nexport interface TileOffsetProps {\n\toffsetX?: EffectProp<number>;\n\toffsetY?: EffectProp<number>;\n\twrap?: boolean;\n\tedgeMode?: TileOffsetEdgeMode;\n}\n\nexport class TileOffset extends Effect<\n\tTileOffsetProps,\n\t\"TileOffset\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"TileOffset\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare offsetX: number;\n\tpublic declare offsetY: number;\n\tpublic declare wrap: boolean;\n\tpublic declare edgeMode: TileOffsetEdgeMode;\n\n\tconstructor(config: TileOffsetProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\toffsetX: config.offsetX ?? 0,\n\t\t\toffsetY: config.offsetY ?? 0,\n\t\t\twrap: config.wrap ?? true,\n\t\t\tedgeMode: config.edgeMode ?? \"wrap\",\n\t\t});\n\t}\n}\n\nexport interface MotionBlurProps {\n\tshutterAngle?: EffectProp<number>;\n\tsamples?: EffectProp<number>;\n\tmaxVelocity?: EffectProp<number>;\n\tshutterCurve?: \"box\" | \"gaussian\" | \"triangle\";\n\tdepthAware?: boolean;\n}\n\nexport class MotionBlur extends Effect<\n\tMotionBlurProps,\n\t\"MotionBlur\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"MotionBlur\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare shutterAngle: number;\n\tpublic declare samples: number;\n\tpublic declare maxVelocity: number;\n\tpublic declare shutterCurve: \"box\" | \"gaussian\" | \"triangle\";\n\tpublic declare depthAware: boolean;\n\n\tconstructor(config: MotionBlurProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tshutterAngle: config.shutterAngle ?? 180,\n\t\t\tsamples: config.samples ?? 16,\n\t\t\tmaxVelocity: config.maxVelocity ?? 64,\n\t\t\tshutterCurve: config.shutterCurve ?? \"gaussian\",\n\t\t\tdepthAware: config.depthAware ?? true,\n\t\t});\n\t}\n}\n\nexport interface SSAOProps {\n\tradius?: EffectProp<number>;\n\tbias?: EffectProp<number>;\n\tintensity?: EffectProp<number>;\n\tkernelSamples?: EffectProp<number>;\n\tblurRadius?: EffectProp<number>;\n}\n\nexport class SSAO extends Effect<SSAOProps, \"SSAO\", \"visual\"> {\n\tpublic readonly op = \"SSAO\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare radius: number;\n\tpublic declare bias: number;\n\tpublic declare intensity: number;\n\tpublic declare kernelSamples: number;\n\tpublic declare blurRadius: number;\n\n\tconstructor(config: SSAOProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tradius: config.radius ?? 45,\n\t\t\tbias: config.bias ?? 0.025,\n\t\t\tintensity: config.intensity ?? 1.5,\n\t\t\tkernelSamples: config.kernelSamples ?? 16,\n\t\t\tblurRadius: config.blurRadius ?? 4,\n\t\t});\n\t}\n}\n\nexport interface PBRGlassProps {\n\tior?: EffectProp<number>;\n\troughness?: EffectProp<number>;\n\ttransmission?: EffectProp<number>;\n\tdispersion?: EffectProp<number>;\n\tfresnelPower?: EffectProp<number>;\n\ttintColor?: EffectProp<string>;\n}\n\nexport class PBRGlass extends Effect<PBRGlassProps, \"PBRGlass\", \"visual\"> {\n\tpublic readonly op = \"PBRGlass\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare ior: number;\n\tpublic declare roughness: number;\n\tpublic declare transmission: number;\n\tpublic declare dispersion: number;\n\tpublic declare fresnelPower: number;\n\tpublic declare tintColor: string;\n\n\tconstructor(config: PBRGlassProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tior: config.ior ?? 1.49,\n\t\t\troughness: config.roughness ?? 0.15,\n\t\t\ttransmission: config.transmission ?? 0.92,\n\t\t\tdispersion: config.dispersion ?? 0.015,\n\t\t\tfresnelPower: config.fresnelPower ?? 5.0,\n\t\t\ttintColor: config.tintColor ?? \"#ffffff\",\n\t\t});\n\t}\n}\n\nexport interface DepthOfFieldProps {\n\tfocusDistance?: EffectProp<number>;\n\tfocalLength?: EffectProp<number>;\n\taperture?: EffectProp<number>;\n\tmaxBlur?: EffectProp<number>;\n\tquality?: \"low\" | \"medium\" | \"high\" | \"ultra\";\n}\n\nexport class DepthOfField extends Effect<\n\tDepthOfFieldProps,\n\t\"DepthOfField\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"DepthOfField\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare focusDistance: number;\n\tpublic declare focalLength: number;\n\tpublic declare aperture: number;\n\tpublic declare maxBlur: number;\n\tpublic declare quality: string;\n\n\tconstructor(config: DepthOfFieldProps = {}) {\n\t\tsuper({\n\t\t\t...config,\n\t\t\tfocusDistance: config.focusDistance ?? 500,\n\t\t\tfocalLength: config.focalLength ?? 50,\n\t\t\taperture: config.aperture ?? 2.8,\n\t\t\tmaxBlur: config.maxBlur ?? 16,\n\t\t\tquality: config.quality ?? \"high\",\n\t\t});\n\t}\n}\n\nexport interface CropProps {\n\tcropType?: \"rect\" | \"path\";\n\tleftPercentage?: EffectProp<number>;\n\ttopPercentage?: EffectProp<number>;\n\twidthPercentage?: EffectProp<number>;\n\theightPercentage?: EffectProp<number>;\n\troundness?: EffectProp<number>;\n\tpathPoints?: { x: number; y: number }[];\n\tmode?: \"cropped\" | \"rest\";\n}\n\nexport class Crop extends Effect<CropProps, \"Crop\", \"visual\"> {\n\tpublic readonly op = \"Crop\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare cropType: \"rect\" | \"path\";\n\tpublic declare leftPercentage: number;\n\tpublic declare topPercentage: number;\n\tpublic declare widthPercentage: number;\n\tpublic declare heightPercentage: number;\n\tpublic declare roundness: number;\n\tpublic declare pathPoints?: { x: number; y: number }[];\n\tpublic declare mode?: \"cropped\" | \"rest\";\n\n\tconstructor(config: CropProps = {}) {\n\t\tsuper({\n\t\t\tcropType: config.cropType ?? \"rect\",\n\t\t\tleftPercentage: config.leftPercentage ?? 0,\n\t\t\ttopPercentage: config.topPercentage ?? 0,\n\t\t\twidthPercentage: config.widthPercentage ?? 100,\n\t\t\theightPercentage: config.heightPercentage ?? 100,\n\t\t\troundness: config.roundness ?? 0,\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport interface VisionProps {\n\t/** Track COCO-80 objects (RTMDet-Ins boxes). Default true. */\n\tenableDetection?: boolean;\n\t/** Per-instance masks (RTMDet-Ins). Shares the detection pass. */\n\tenableSegmentation?: boolean;\n\t/** COCO-17 keypoints per person (RTMO). */\n\tenablePose?: boolean;\n\t/** Fast person-vs-background alpha (Selfie Segmenter). */\n\tenableMatte?: boolean;\n\t/** COCO class-name filter (all classes when omitted). */\n\tclasses?: readonly string[];\n\t/** Minimum detection score, 0..1. Default 0.3. */\n\tconfidence?: number;\n\t/** Model size: `t` fastest · `s` default · `m` most accurate. */\n\tvariant?: \"t\" | \"s\" | \"m\";\n\tmode?:\n\t\t| \"passthrough\"\n\t\t| \"mask\"\n\t\t| \"matte\"\n\t\t| \"crop\"\n\t\t| \"skeleton\"\n\t\t| \"boxes\"\n\t\t| \"tracking\";\n\t/**\n\t * Subject alpha for mask/matte/crop: instance masks (default; any COCO class) or the\n\t * selfie matte (fastest, but only reliable when a person fills much of the frame).\n\t */\n\tmatteSource?: \"instance\" | \"selfie\";\n\t/** Frames a track may go unseen before it is dropped. Default 15. */\n\tmaxMissedFrames?: number;\n\tmodelsDir?: string;\n\tbaseUrl?: string;\n\tmaskThreshold?: number;\n\tfeatherRadius?: number;\n\t/** Grow the subject into connected pixels that stand out from the backdrop. */\n\tkeyBackground?: boolean;\n\t/** Colour-distance threshold for the background key (lower → more growth). Default 70. */\n\tbackgroundKeyThreshold?: number;\n\tvisionBundle?: unknown;\n}\n\n/**\n * On-device vision: tracks objects, segments instances, estimates pose and mattes people on\n * the rendered frame, feeding reactive signals. Models download lazily on first use.\n */\nexport class Vision extends Effect<VisionProps, \"Vision\", \"visual\"> {\n\tpublic readonly op = \"Vision\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare enableDetection?: boolean;\n\tpublic declare enableSegmentation?: boolean;\n\tpublic declare enablePose?: boolean;\n\tpublic declare enableMatte?: boolean;\n\tpublic declare classes?: readonly string[];\n\tpublic declare confidence?: number;\n\tpublic declare variant?: VisionProps[\"variant\"];\n\tpublic declare mode?: VisionProps[\"mode\"];\n\tpublic declare matteSource?: VisionProps[\"matteSource\"];\n\tpublic declare maxMissedFrames?: number;\n\tpublic declare modelsDir?: string;\n\tpublic declare baseUrl?: string;\n\tpublic declare maskThreshold?: number;\n\tpublic declare featherRadius?: number;\n\tpublic declare keyBackground?: boolean;\n\tpublic declare backgroundKeyThreshold?: number;\n\tpublic declare visionBundle?: unknown;\n\n\tconstructor(config: VisionProps = {}) {\n\t\tsuper({\n\t\t\tenableDetection: config.enableDetection !== false,\n\t\t\tenableSegmentation: config.enableSegmentation === true,\n\t\t\tenablePose: config.enablePose === true,\n\t\t\tenableMatte: config.enableMatte === true,\n\t\t\tconfidence: config.confidence ?? 0.3,\n\t\t\tvariant: config.variant ?? \"s\",\n\t\t\tmode: config.mode ?? \"passthrough\",\n\t\t\tmatteSource: config.matteSource ?? \"instance\",\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport interface Relight3DProps {\n\tlightType?: \"Point\" | \"Spot\" | \"Directional\" | \"Rim\";\n\tintensity?: EffectProp<number>;\n\tlightPosX?: EffectProp<number>;\n\tlightPosY?: EffectProp<number>;\n\tlightPosZ?: EffectProp<number>;\n\tlightRadius?: EffectProp<number>;\n\tspotConeAngle?: EffectProp<number>;\n\tspecularRoughness?: EffectProp<number>;\n\tspecularStrength?: EffectProp<number>;\n\tmetallic?: EffectProp<number>;\n\tambientIntensity?: EffectProp<number>;\n\tvolumetricDensity?: EffectProp<number>;\n\tdepthScale?: EffectProp<number>;\n\tdepthInvert?: boolean;\n\tlightColor?: string;\n\tambientColor?: string;\n\tnormalMap?: unknown;\n}\n\nexport class Relight3D extends Effect<Relight3DProps, \"Relight3D\", \"visual\"> {\n\tpublic readonly op = \"Relight3D\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare lightType: Relight3DProps[\"lightType\"];\n\tpublic declare intensity: number;\n\tpublic declare lightPosX: number;\n\tpublic declare lightPosY: number;\n\tpublic declare lightPosZ: number;\n\tpublic declare lightRadius: number;\n\tpublic declare spotConeAngle: number;\n\tpublic declare specularRoughness: number;\n\tpublic declare specularStrength: number;\n\tpublic declare metallic: number;\n\tpublic declare ambientIntensity: number;\n\tpublic declare volumetricDensity: number;\n\tpublic declare depthScale: number;\n\tpublic declare depthInvert: boolean;\n\tpublic declare lightColor: string;\n\tpublic declare ambientColor: string;\n\tpublic declare normalMap: unknown;\n\n\tconstructor(config: Relight3DProps = {}) {\n\t\tsuper({\n\t\t\tlightType: config.lightType ?? \"Point\",\n\t\t\tintensity: config.intensity ?? 1.0,\n\t\t\tlightPosX: config.lightPosX ?? 0.5,\n\t\t\tlightPosY: config.lightPosY ?? 0.5,\n\t\t\tlightPosZ: config.lightPosZ ?? 0.3,\n\t\t\tlightRadius: config.lightRadius ?? 0.8,\n\t\t\tspotConeAngle: config.spotConeAngle ?? 45,\n\t\t\tspecularRoughness: config.specularRoughness ?? 0.35,\n\t\t\tspecularStrength: config.specularStrength ?? 0.7,\n\t\t\tmetallic: config.metallic ?? 0.0,\n\t\t\tambientIntensity: config.ambientIntensity ?? 0.4,\n\t\t\tvolumetricDensity: config.volumetricDensity ?? 0.2,\n\t\t\tdepthScale: config.depthScale ?? 1.0,\n\t\t\tdepthInvert: config.depthInvert ?? false,\n\t\t\tlightColor: config.lightColor ?? \"#ffffff\",\n\t\t\tambientColor: config.ambientColor ?? \"#ffffff\",\n\t\t\tnormalMap: config.normalMap,\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport interface DeflickerProps {\n\tblendWeight?: EffectProp<number>;\n\tdisocclusionThreshold?: EffectProp<number>;\n\tmaxMotionPixels?: EffectProp<number>;\n\tscale?: number;\n\twindowSize?: number;\n}\n\nexport class TemporalDeflicker extends Effect<\n\tDeflickerProps,\n\t\"TemporalDeflicker\",\n\t\"visual\"\n> {\n\tpublic readonly op = \"TemporalDeflicker\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare blendWeight: number;\n\tpublic declare disocclusionThreshold: number;\n\tpublic declare maxMotionPixels: number;\n\tpublic declare scale: number;\n\tpublic declare windowSize: number;\n\n\tconstructor(config: DeflickerProps = {}) {\n\t\tsuper({\n\t\t\tblendWeight: config.blendWeight ?? 0.35,\n\t\t\tdisocclusionThreshold: config.disocclusionThreshold ?? 0.15,\n\t\t\tmaxMotionPixels: config.maxMotionPixels ?? 64.0,\n\t\t\tscale: config.scale ?? 0.5,\n\t\t\twindowSize: config.windowSize ?? 2,\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport interface ModulateProps {\n\thue?: EffectProp<number>;\n\tbrightness?: EffectProp<number>;\n\tcontrast?: EffectProp<number>;\n\texposure?: EffectProp<number>;\n\tsaturation?: EffectProp<number>;\n\tsepia?: EffectProp<number>;\n}\n\nexport class Modulate extends Effect<ModulateProps, \"Modulate\", \"visual\"> {\n\tpublic readonly op = \"Modulate\" as const;\n\tpublic override readonly domain = \"visual\" as const;\n\n\tpublic declare hue: number;\n\tpublic declare brightness: number;\n\tpublic declare contrast: number;\n\tpublic declare exposure: number;\n\tpublic declare saturation: number;\n\tpublic declare sepia: number;\n\n\tconstructor(config: ModulateProps = {}) {\n\t\tsuper({\n\t\t\thue: config.hue ?? 0,\n\t\t\tbrightness: config.brightness ?? 1.0,\n\t\t\tcontrast: config.contrast ?? 1.0,\n\t\t\texposure: config.exposure ?? 0.0,\n\t\t\tsaturation: config.saturation ?? 1.0,\n\t\t\tsepia: config.sepia ?? 0.0,\n\t\t\t...config,\n\t\t});\n\t}\n}\n\nexport type HandWrittenVisualEffect =\n\t| Levels\n\t| FilmGrain\n\t| CustomEffect\n\t| Curves\n\t| SelectiveColor\n\t| GradientMap\n\t| ShadowsHighlights\n\t| ApplyLUT\n\t| UnsharpMask\n\t| HighPass\n\t| HalftoneScreen\n\t| TileOffset\n\t| MotionBlur\n\t| SSAO\n\t| PBRGlass\n\t| DepthOfField\n\t| Crop\n\t| Vision\n\t| Relight3D\n\t| TemporalDeflicker\n\t| Modulate;\n\nexport type HandWrittenAudioEffect = AudioSignalExtractor;\n\nexport type AnyVisualEffect =\n\t| AnyGeneratedVisualEffect\n\t| HandWrittenVisualEffect;\nexport type AnyAudioEffect = AnyGeneratedAudioEffect | HandWrittenAudioEffect;\nexport type AnyEffect = AnyVisualEffect | AnyAudioEffect;\nexport type EffectOp = AnyEffect[\"op\"];\n\nexport interface EffectConfigMap extends GeneratedEffectConfigMap {\n\tLevels: LevelsProps;\n\tFilmGrain: FilmGrainProps;\n\tAudioSignalExtractor: AudioSignalExtractorProps;\n\tCurves: CurvesProps;\n\tSelectiveColor: SelectiveColorProps;\n\tGradientMap: GradientMapProps;\n\tShadowsHighlights: ShadowsHighlightsProps;\n\tApplyLUT: ApplyLUTProps;\n\tUnsharpMask: UnsharpMaskProps;\n\tHighPass: HighPassProps;\n\tHalftoneScreen: HalftoneScreenProps;\n\tTileOffset: TileOffsetProps;\n\tMotionBlur: MotionBlurProps;\n\tSSAO: SSAOProps;\n\tPBRGlass: PBRGlassProps;\n\tDepthOfField: DepthOfFieldProps;\n\tCrop: CropProps;\n\tVision: VisionProps;\n\tRelight3D: Relight3DProps;\n\tTemporalDeflicker: DeflickerProps;\n\tModulate: ModulateProps;\n}\n\nexport type EffectPropsFor<O extends EffectOp> = O extends keyof EffectConfigMap\n\t? EffectConfigMap[O]\n\t: Record<string, unknown>;\n"],"mappings":"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D,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD;CACD,mBAAmB;EAClB,MAAM,EACL,MAAM;GAAC;GAAY;GAAa;GAAQ;GAAW;GAAY;GAAQ,EACvE;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,GAAG;GACF,KAAK;GACL,KAAK;GACL;EACD;CACD,aAAa;EACZ,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD;CACD,MAAM;EACL,UAAU,EACT,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,aAAa,EAAE;EACf,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,OAAO,EACN,MAAM;GAAC;GAAW;GAAU;GAAO,EACnC;EACD;CACD,kBAAkB;EACjB,cAAc,EACb,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD,gBAAgB;GACf,KAAK;GACL,KAAK;GACL;EACD,aAAa;GACZ,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,cAAc;GACb,KAAK;GACL,KAAK;GACL;EACD,aAAa,EAAE;EACf;CACD,eAAe;EACd,YAAY,EACX,MAAM;GAAC;GAAQ;GAAQ;GAAQ;GAAM,EACrC;EACD,iBAAiB;GAChB,KAAK;GACL,KAAK;GACL;EACD;CACD,iBAAiB,EAChB,YAAY,EACX,MAAM;EAAC;EAAQ;EAAQ;EAAQ;EAAM,EACrC,EACD;CACD,cAAc;EACb,SAAS,EACR,OAAO;GACN,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,cAAc;IACb,KAAK;IACL,KAAK;IACL;GACD,YAAY;IACX,KAAK;IACL,KAAK;IACL;GACD,EACD;EACD,UAAU,EACT,OAAO;GACN,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,cAAc;IACb,KAAK;IACL,KAAK;IACL;GACD,YAAY;IACX,KAAK;IACL,KAAK;IACL;GACD,EACD;EACD,YAAY,EACX,OAAO;GACN,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,cAAc;IACb,KAAK;IACL,KAAK;IACL;GACD,YAAY;IACX,KAAK;IACL,KAAK;IACL;GACD,EACD;EACD,oBAAoB,EAAE;EACtB;CACD,UAAU;EACT,UAAU,EAAE;EACZ,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,kBAAkB;GACjB,KAAK;GACL,KAAK;GACL;EACD,YAAY,EACX,MAAM,CAAC,OAAO,MAAM,EACpB;EACD,sBAAsB,EACrB,MAAM;GAAC;GAAc;GAAc;GAAO,EAC1C;EACD;CACD,SAAS;EACR,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,WAAW,EAAE;EACb,MAAM,EACL,MAAM;GAAC;GAAU;GAAQ;GAAO,EAChC;EACD,WAAW,EAAE;EACb,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD;CACD,WAAW,EACV,QAAQ,EAAE,EACV;CACD,KAAK;EACJ,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD;CACD,UAAU;EACT,WAAW,EAAE;EACb,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD;CACD,iBAAiB;EAChB,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,UAAU,EACT,MAAM;GAAC;GAAO;GAAS;GAAQ;GAAS;GAAY,EACpD;EACD,UAAU,EACT,MAAM;GAAC;GAAO;GAAS;GAAQ;GAAS;GAAY,EACpD;EACD,UAAU,EACT,MAAM;GAAC;GAAS;GAAU;GAAS,EACnC;EACD;CACD,QAAQ;EACP,MAAM,EACL,MAAM;GAAC;GAAS;GAAS;GAAW,EACpC;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,YAAY,EAAE;EACd,MAAM,EAAE;EACR,OAAO,EAAE;EACT;CACD,YAAY;EACX,UAAU,EACT,MAAM,CAAC,iBAAiB,cAAc,EACtC;EACD,cAAc;GACb,KAAK;GACL,KAAK;GACL;EACD;CACD,MAAM;EACL,YAAY,EAAE;EACd,UAAU,EAAE;EACZ,UAAU,EAAE;EACZ,MAAM,EACL,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,UAAU,EACT,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD;CACD,OAAO;EACN,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD;CACD,aAAa;EACZ,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,MAAM,EACL,MAAM,CAAC,aAAa,SAAS,EAC7B;EACD;CACD,cAAc;EACb,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD;CACD,UAAU;EACT,WAAW,EAAE;EACb,gBAAgB;GACf,KAAK;GACL,KAAK;GACL;EACD,eAAe,EACd,MAAM,CAAC,UAAU,SAAS,EAC1B;EACD,aAAa,EACZ,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD;CACD,YAAY;EACX,YAAY,EACX,OAAO;GACN,SAAS,EAAE;GACX,OAAO,EAAE;GACT,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,OAAO;IACN,KAAK;IACL,KAAK;IACL;GACD,UAAU;IACT,KAAK;IACL,KAAK;IACL;GACD,QAAQ;IACP,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,WAAW,EAAE;GACb,EACD;EACD,aAAa,EACZ,OAAO;GACN,SAAS,EAAE;GACX,OAAO,EAAE;GACT,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,OAAO;IACN,KAAK;IACL,KAAK;IACL;GACD,UAAU;IACT,KAAK;IACL,KAAK;IACL;GACD,OAAO;IACN,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,WAAW,EAAE;GACb,EACD;EACD,WAAW,EACV,OAAO;GACN,SAAS,EAAE;GACX,OAAO,EAAE;GACT,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,QAAQ;IACP,KAAK;IACL,KAAK;IACL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KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD;CACD,OAAO;EACN,SAAS,EACR,MAAM;GAAC;GAAW;GAAS;GAAW;GAAQ,EAC9C;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,QAAQ,EAAE;EACV,QAAQ,EAAE;EACV;CACD,OAAO;EACN,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,gBAAgB,EAAE;EAClB,aAAa,EAAE;EACf,iBAAiB,EAAE;EACnB,SAAS,EAAE;EACX;CACD,WAAW;EACV,OAAO,EACN,MAAM,CAAC,OAAO,aAAa,EAC3B;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,eAAe;GACd,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD;CACD,WAAW;EACV,SAAS,EAAE;EACX,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,cAAc;GACb,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,MAAM,EACL,MAAM;GAAC;GAAS;GAAgB;GAAkB,EAClD;EACD;CACD,UAAU;EACT,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,OAAO,EACN,MAAM;GAAC;GAAU;GAAU;GAAU,EACrC;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD;CACD,WAAW;EACV,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,SAAS,EACR,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,QAAQ,EAAE;EACV,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD;CACD,eAAe;EACd,YAAY,EACX,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,YAAY,EACX,MAAM,CAAC,SAAS,QAAQ,EACxB;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,YAAY,EAAE;EACd,UAAU,EAAE;EACZ,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD;CACD,YAAY;EACX,qBAAqB;GACpB,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,cAAc,EACb,MAAM;GAAC;GAAS;GAAa;GAAO;GAAS;GAAO,EACpD;EACD,YAAY,EACX,MAAM;GAAC;GAAa;GAAa;GAAoB,EACrD;EACD;CACD,sBAAsB;EACrB,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,iBAAiB;GAChB,KAAK;GACL,KAAK;GACL;EACD,mBAAmB;GAClB,KAAK;GACL,KAAK;GACL;EACD,cAAc;GACb,KAAK;GACL,KAAK;GACL;EACD,cAAc;GACb,KAAK;GACL,KAAK;GACL;EACD,aAAa;GACZ,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KA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"}