framefields 2.2.0-beta.3 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-1QquqDJs.d.mts → audio-BvYmTu5T.d.mts} +3 -3
- package/dist/{audio-1QquqDJs.d.mts.map → audio-BvYmTu5T.d.mts.map} +1 -1
- package/dist/{audio-BYqbtdH8.mjs → audio-DMUr01vS.mjs} +3 -3
- package/dist/{audio-BYqbtdH8.mjs.map → audio-DMUr01vS.mjs.map} +1 -1
- package/dist/{dist-BLbXEC6V.mjs → dist-CT___nEU.mjs} +3 -5
- package/dist/dist-CT___nEU.mjs.map +1 -0
- package/dist/{dist-DQlYw4eG.mjs → dist-cjxDXQdx.mjs} +49 -48
- package/dist/dist-cjxDXQdx.mjs.map +1 -0
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +34 -34
- package/dist/{effects-DgpPr38s.mjs → effects-C06-AOge.mjs} +2 -2
- package/dist/{effects-DgpPr38s.mjs.map → effects-C06-AOge.mjs.map} +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-DakFEiDw.mjs → fonts-C0UuLQvr.mjs} +2 -2
- package/dist/{fonts-DakFEiDw.mjs.map → fonts-C0UuLQvr.mjs.map} +1 -1
- package/dist/{gpu-AbcLcr1f.mjs → gpu-Du7GpVFW.mjs} +2 -2
- package/dist/{gpu-AbcLcr1f.mjs.map → gpu-Du7GpVFW.mjs.map} +1 -1
- package/dist/{index--1jnkoBj.d.mts → index-B-oUlLoO.d.mts} +7 -1
- package/dist/index-B-oUlLoO.d.mts.map +1 -0
- package/dist/{index-CaZfxDXx.d.mts → index-CdyE1tst.d.mts} +3 -3
- package/dist/{index-CaZfxDXx.d.mts.map → index-CdyE1tst.d.mts.map} +1 -1
- package/dist/{index-YSmPWdZw.d.mts → index-CwbszPDG.d.mts} +4 -4
- package/dist/{index-YSmPWdZw.d.mts.map → index-CwbszPDG.d.mts.map} +1 -1
- package/dist/{index-BqzHDFkU.d.mts → index-D-Iek5sq.d.mts} +3 -3
- package/dist/{index-BqzHDFkU.d.mts.map → index-D-Iek5sq.d.mts.map} +1 -1
- package/dist/{index-D6_KcajH.d.mts → index-DXfp_T-3.d.mts} +2 -2
- package/dist/{index-D6_KcajH.d.mts.map → index-DXfp_T-3.d.mts.map} +1 -1
- package/dist/{index-DgJIBC_N.d.mts → index-XdQPNJnq.d.mts} +3 -3
- package/dist/index-XdQPNJnq.d.mts.map +1 -0
- package/dist/index.d.mts +8 -8
- package/dist/index.mjs +48 -48
- package/dist/preview/index.d.mts +2 -2
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-QjhWe5QE.mjs → preview-M0TsUzC6.mjs} +2 -2
- package/dist/{preview-QjhWe5QE.mjs.map → preview-M0TsUzC6.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/chunk-2SJ4BBMT.mjs +1 -0
- package/dist/preview-engine/{chunk-N4OG2BHX.mjs → chunk-3T4LB4ZH.mjs} +1 -1
- package/dist/preview-engine/{chunk-FJH5A2PV.mjs → chunk-7B5S5D4N.mjs} +1 -1
- package/dist/preview-engine/{chunk-2W4BMOAZ.mjs → chunk-G4K6TLNA.mjs} +1 -1
- package/dist/preview-engine/{chunk-XHDUZY7Y.mjs → chunk-HVCAOHNI.mjs} +1 -1
- package/dist/preview-engine/{chunk-5MSAA3DL.mjs → chunk-KBO6EX3M.mjs} +1 -1
- package/dist/preview-engine/{chunk-AKMCLVJ6.mjs → chunk-LQBDZSQD.mjs} +1 -1
- package/dist/preview-engine/chunk-NIRW77QA.mjs +58 -0
- package/dist/preview-engine/{chunk-MOW55DX2.mjs → chunk-QXCY2ATH.mjs} +1 -1
- package/dist/preview-engine/chunk-XN56POGE.mjs +1 -0
- package/dist/preview-engine/{chunk-3NXJVSZY.mjs → chunk-ZTHWCQ2A.mjs} +2 -2
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/{renderers-UHYNEWQD.mjs → renderers-3SRG77SC.mjs} +1 -1
- package/dist/preview-engine/{renderers-OZYUGZG7.mjs → renderers-VUL4HBX3.mjs} +2 -2
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-Cc_2_YXn.mjs → program-DzknMiY0.mjs} +2 -2
- package/dist/{program-Cc_2_YXn.mjs.map → program-DzknMiY0.mjs.map} +1 -1
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/renderer--IDyGdqT.mjs +5 -0
- package/dist/{renderer-CZ9gHx-4.mjs → renderer-0gY4IQhM.mjs} +2 -2
- package/dist/{renderer-CZ9gHx-4.mjs.map → renderer-0gY4IQhM.mjs.map} +1 -1
- package/dist/renderer-17K4tjid.mjs +5 -0
- package/dist/{renderer-CivH0UuT.mjs → renderer-1vhaKMeg.mjs} +55 -54
- package/dist/{renderer-CivH0UuT.mjs.map → renderer-1vhaKMeg.mjs.map} +1 -1
- package/dist/{renderer-Bfrwo_It.mjs → renderer-57ATc_mQ.mjs} +2 -2
- package/dist/{renderer-Bfrwo_It.mjs.map → renderer-57ATc_mQ.mjs.map} +1 -1
- package/dist/{renderer-CSfLMXN8.mjs → renderer-AF884a7T.mjs} +3 -3
- package/dist/{renderer-CSfLMXN8.mjs.map → renderer-AF884a7T.mjs.map} +1 -1
- package/dist/renderer-Ab9Ttn_m.mjs +5 -0
- package/dist/renderer-B-roDBBo.mjs +5 -0
- package/dist/renderer-B03uwoUX.mjs +5 -0
- package/dist/renderer-B3BI_7YJ.mjs +5 -0
- package/dist/{renderer-B4cnT3ce.mjs → renderer-BC8XOVl5.mjs} +3 -3
- package/dist/{renderer-B4cnT3ce.mjs.map → renderer-BC8XOVl5.mjs.map} +1 -1
- package/dist/renderer-BGD4lQ74.mjs +5 -0
- package/dist/renderer-BHXhYfeC.mjs +5 -0
- package/dist/{renderer-ClWgdN2v.mjs → renderer-BHskWZNG.mjs} +2 -2
- package/dist/{renderer-C4UqxwcT.mjs → renderer-BNqwn0gZ.mjs} +2 -2
- package/dist/{renderer-C4UqxwcT.mjs.map → renderer-BNqwn0gZ.mjs.map} +1 -1
- package/dist/renderer-BRsTIMFa.mjs +5 -0
- package/dist/{renderer-BO-7bYa5.d.mts → renderer-BT-_EoXw.d.mts} +2 -2
- package/dist/{renderer-BO-7bYa5.d.mts.map → renderer-BT-_EoXw.d.mts.map} +1 -1
- package/dist/{renderer-CB87_0vL.mjs → renderer-BbdZ0YHR.mjs} +3 -3
- package/dist/{renderer-CB87_0vL.mjs.map → renderer-BbdZ0YHR.mjs.map} +1 -1
- package/dist/{renderer-sHDPBywo.mjs → renderer-BeIUgp1r.mjs} +2 -2
- package/dist/{renderer-sHDPBywo.mjs.map → renderer-BeIUgp1r.mjs.map} +1 -1
- package/dist/{renderer-FgcNOe1R.mjs → renderer-Beg7FLt2.mjs} +5 -5
- package/dist/{renderer-FgcNOe1R.mjs.map → renderer-Beg7FLt2.mjs.map} +1 -1
- package/dist/{renderer-Cv1wmjhA.mjs → renderer-BerD3T-X.mjs} +2 -2
- package/dist/{renderer-Cv1wmjhA.mjs.map → renderer-BerD3T-X.mjs.map} +1 -1
- package/dist/{renderer-CK0u3Psf.mjs → renderer-BiwIh_w4.mjs} +3 -3
- package/dist/{renderer-CK0u3Psf.mjs.map → renderer-BiwIh_w4.mjs.map} +1 -1
- package/dist/renderer-BjMTtYZw.mjs +5 -0
- package/dist/{renderer-dwTzrQ2G.mjs → renderer-BmGPTWwV.mjs} +3 -3
- package/dist/{renderer-dwTzrQ2G.mjs.map → renderer-BmGPTWwV.mjs.map} +1 -1
- package/dist/{renderer-DfSRmz7q.mjs → renderer-Bn2eQE-t.mjs} +3 -3
- package/dist/{renderer-DfSRmz7q.mjs.map → renderer-Bn2eQE-t.mjs.map} +1 -1
- package/dist/renderer-BoCh3Yts.mjs +5 -0
- package/dist/renderer-BqPbR8c4.mjs +5 -0
- package/dist/{renderer-BPMywsr4.mjs → renderer-Br6KyRO_.mjs} +3 -3
- package/dist/{renderer-BPMywsr4.mjs.map → renderer-Br6KyRO_.mjs.map} +1 -1
- package/dist/{renderer-DU3216cx.mjs → renderer-BteUC_7n.mjs} +3 -3
- package/dist/{renderer-DU3216cx.mjs.map → renderer-BteUC_7n.mjs.map} +1 -1
- package/dist/{renderer-DwCg5pXn.mjs → renderer-Bvx56GR6.mjs} +2 -2
- package/dist/{renderer-DwCg5pXn.mjs.map → renderer-Bvx56GR6.mjs.map} +1 -1
- package/dist/{renderer-4GYrnTfw.mjs → renderer-BzDjy1_x.mjs} +2 -2
- package/dist/{renderer-4GYrnTfw.mjs.map → renderer-BzDjy1_x.mjs.map} +1 -1
- package/dist/renderer-C4Da2I1-.mjs +5 -0
- package/dist/{renderer-CD38wGmN.mjs → renderer-C6md3msE.mjs} +2 -2
- package/dist/{renderer-CD38wGmN.mjs.map → renderer-C6md3msE.mjs.map} +1 -1
- package/dist/{renderer-CHkqgIOL.mjs → renderer-C8uKdelk.mjs} +2 -2
- package/dist/{renderer-CHkqgIOL.mjs.map → renderer-C8uKdelk.mjs.map} +1 -1
- package/dist/renderer-C93X6dgl.mjs +5 -0
- package/dist/{renderer-CciB_sav.mjs → renderer-CJB9nU1x.mjs} +3 -3
- package/dist/{renderer-CciB_sav.mjs.map → renderer-CJB9nU1x.mjs.map} +1 -1
- package/dist/renderer-CMAwFfGx.mjs +6 -0
- package/dist/{renderer-CPW9o3Lc.mjs → renderer-CMT4QcpV.mjs} +3 -3
- package/dist/{renderer-CPW9o3Lc.mjs.map → renderer-CMT4QcpV.mjs.map} +1 -1
- package/dist/renderer-CRXeSuX2.mjs +5 -0
- package/dist/renderer-CSp6WYBN.mjs +5 -0
- package/dist/renderer-CUXX7HTL.mjs +5 -0
- package/dist/renderer-CUgThpka.mjs +5 -0
- package/dist/{renderer-BKd2nRnO.mjs → renderer-CWBHVCvA.mjs} +2 -2
- package/dist/{renderer-BKd2nRnO.mjs.map → renderer-CWBHVCvA.mjs.map} +1 -1
- package/dist/{renderer-B5PFBOjv.mjs → renderer-Cce2fgpX.mjs} +3 -3
- package/dist/{renderer-B5PFBOjv.mjs.map → renderer-Cce2fgpX.mjs.map} +1 -1
- package/dist/renderer-CeVtufiT.mjs +5 -0
- package/dist/{renderer-egZPy7vq.mjs → renderer-CebB0v1y.mjs} +2 -2
- package/dist/{renderer-egZPy7vq.mjs.map → renderer-CebB0v1y.mjs.map} +1 -1
- package/dist/renderer-CespkZUk.mjs +5 -0
- package/dist/{renderer-Dyh8c41v.mjs → renderer-CeyAgJnw.mjs} +2 -2
- package/dist/{renderer-CGZqCmf2.mjs → renderer-CrABA3lB.mjs} +2 -2
- package/dist/{renderer-CGZqCmf2.mjs.map → renderer-CrABA3lB.mjs.map} +1 -1
- package/dist/{renderer-DU6i7shO.mjs → renderer-CuVPo-wP.mjs} +2 -2
- package/dist/{renderer-DU6i7shO.mjs.map → renderer-CuVPo-wP.mjs.map} +1 -1
- package/dist/{renderer-DEQ09sg7.mjs → renderer-CursFKUf.mjs} +2 -2
- package/dist/{renderer-DEQ09sg7.mjs.map → renderer-CursFKUf.mjs.map} +1 -1
- package/dist/{renderer-DT3QVVht.mjs → renderer-D-vRKssW.mjs} +2 -2
- package/dist/{renderer-DT3QVVht.mjs.map → renderer-D-vRKssW.mjs.map} +1 -1
- package/dist/{renderer-DqhZTIiC.mjs → renderer-D1Cm21eq.mjs} +2 -2
- package/dist/{renderer-DqhZTIiC.mjs.map → renderer-D1Cm21eq.mjs.map} +1 -1
- package/dist/renderer-D1l47xhL.mjs +5 -0
- package/dist/{renderer-PbJk25JW.mjs → renderer-D8thCpS7.mjs} +3 -3
- package/dist/{renderer-PbJk25JW.mjs.map → renderer-D8thCpS7.mjs.map} +1 -1
- package/dist/{renderer-BNcsS03m.mjs → renderer-DD8napek.mjs} +2 -2
- package/dist/{renderer-BNcsS03m.mjs.map → renderer-DD8napek.mjs.map} +1 -1
- package/dist/renderer-DDuG18J8.mjs +5 -0
- package/dist/{renderer-gwV6hyYm.mjs → renderer-DEuIwr-t.mjs} +2 -2
- package/dist/{renderer-gwV6hyYm.mjs.map → renderer-DEuIwr-t.mjs.map} +1 -1
- package/dist/renderer-DFhrFSMn.mjs +5 -0
- package/dist/{renderer-DlqDnh-8.mjs → renderer-DHGTzype.mjs} +2 -2
- package/dist/{renderer-DlqDnh-8.mjs.map → renderer-DHGTzype.mjs.map} +1 -1
- package/dist/{renderer-DkGODUgE.mjs → renderer-DJfFc-XW.mjs} +3 -3
- package/dist/{renderer-DkGODUgE.mjs.map → renderer-DJfFc-XW.mjs.map} +1 -1
- package/dist/renderer-DO48vQ7Y.mjs +5 -0
- package/dist/renderer-DTC39B_n.mjs +5 -0
- package/dist/{renderer-L7UTxwZT.mjs → renderer-DXqIslFk.mjs} +2 -2
- package/dist/{renderer-L7UTxwZT.mjs.map → renderer-DXqIslFk.mjs.map} +1 -1
- package/dist/{renderer-C2eBC0FB.mjs → renderer-DZXbgVMK.mjs} +3 -3
- package/dist/{renderer-C2eBC0FB.mjs.map → renderer-DZXbgVMK.mjs.map} +1 -1
- package/dist/{renderer-Cxh7j423.mjs → renderer-Db3JIF1K.mjs} +3 -3
- package/dist/{renderer-Cxh7j423.mjs.map → renderer-Db3JIF1K.mjs.map} +1 -1
- package/dist/renderer-DbyU3hNF.mjs +5 -0
- package/dist/renderer-DftVpmfu.mjs +5 -0
- package/dist/renderer-Dj5jm63K.mjs +5 -0
- package/dist/renderer-Dju57ZaF.mjs +5 -0
- package/dist/renderer-Dn8TQCw7.mjs +5 -0
- package/dist/{renderer-C6u-XrH-.mjs → renderer-DpW_LxLO.mjs} +3 -3
- package/dist/{renderer-C6u-XrH-.mjs.map → renderer-DpW_LxLO.mjs.map} +1 -1
- package/dist/{renderer-CSoyJ8GH.mjs → renderer-DqdhsSwS.mjs} +2 -2
- package/dist/{renderer-CSoyJ8GH.mjs.map → renderer-DqdhsSwS.mjs.map} +1 -1
- package/dist/{renderer-2DjggBBS.mjs → renderer-DtgMsjyL.mjs} +2 -2
- package/dist/{renderer-2DjggBBS.mjs.map → renderer-DtgMsjyL.mjs.map} +1 -1
- package/dist/{renderer-DppnY7RT.mjs → renderer-DupsdRIw.mjs} +3 -3
- package/dist/{renderer-DppnY7RT.mjs.map → renderer-DupsdRIw.mjs.map} +1 -1
- package/dist/{renderer-BN0CzoG_.mjs → renderer-DvFaC_-7.mjs} +2 -2
- package/dist/{renderer-BN0CzoG_.mjs.map → renderer-DvFaC_-7.mjs.map} +1 -1
- package/dist/renderer-ETF46K0D.mjs +5 -0
- package/dist/{renderer-dj3f8cMg.mjs → renderer-EemDpvv3.mjs} +3 -3
- package/dist/{renderer-dj3f8cMg.mjs.map → renderer-EemDpvv3.mjs.map} +1 -1
- package/dist/{renderer-n2kYIGtb.mjs → renderer-KnCcN_Nz.mjs} +2 -2
- package/dist/{renderer-n2kYIGtb.mjs.map → renderer-KnCcN_Nz.mjs.map} +1 -1
- package/dist/{renderer-scbJx-Dx.mjs → renderer-PKQNH21k.mjs} +2 -2
- package/dist/{renderer-CO4theVJ.mjs → renderer-YbaCzPcG.mjs} +2 -2
- package/dist/{renderer-BhxQzrHF.mjs → renderer-aArb4RwJ.mjs} +2 -2
- package/dist/{renderer-BhxQzrHF.mjs.map → renderer-aArb4RwJ.mjs.map} +1 -1
- package/dist/renderer-azYzWGC3.mjs +5 -0
- package/dist/renderer-dxNoRW59.mjs +5 -0
- package/dist/renderer-fdfelx_I.mjs +5 -0
- package/dist/{renderer-BEzUirF0.mjs → renderer-id8TbKBY.mjs} +2 -2
- package/dist/{renderer-BEzUirF0.mjs.map → renderer-id8TbKBY.mjs.map} +1 -1
- package/dist/{renderer-Dnm_SVy6.mjs → renderer-jYxN4mHn.mjs} +3 -3
- package/dist/{renderer-Dnm_SVy6.mjs.map → renderer-jYxN4mHn.mjs.map} +1 -1
- package/dist/{renderer-lXmtdrdI.mjs → renderer-jqByPgkD.mjs} +2 -2
- package/dist/{renderer-lXmtdrdI.mjs.map → renderer-jqByPgkD.mjs.map} +1 -1
- package/dist/{renderer-DRpIQFAK.mjs → renderer-p_C_T9Kn.mjs} +2 -2
- package/dist/{renderer-DRpIQFAK.mjs.map → renderer-p_C_T9Kn.mjs.map} +1 -1
- package/dist/renderer-snwEKwMw.mjs +5 -0
- package/dist/{renderer-D0enmulV.mjs → renderer-u8ynJtAC.mjs} +2 -2
- package/dist/{renderer-D0enmulV.mjs.map → renderer-u8ynJtAC.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-B8HIr3kj.mjs → renderers-CP8CFWDs-BA-4l6By.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-B8HIr3kj.mjs.map → renderers-CP8CFWDs-BA-4l6By.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +4 -4
- package/package.json +58 -58
- package/dist/dist-BLbXEC6V.mjs.map +0 -1
- package/dist/dist-DQlYw4eG.mjs.map +0 -1
- package/dist/index--1jnkoBj.d.mts.map +0 -1
- package/dist/index-DgJIBC_N.d.mts.map +0 -1
- package/dist/preview-engine/chunk-4VOHF3FF.mjs +0 -1
- package/dist/preview-engine/chunk-ATLWPS6N.mjs +0 -1
- package/dist/preview-engine/chunk-HYBAPT6I.mjs +0 -1
- package/dist/preview-engine/chunk-XETMNJVV.mjs +0 -58
- package/dist/renderer-9ETXaINw.mjs +0 -5
- package/dist/renderer-B3MVDN_e.mjs +0 -5
- package/dist/renderer-B6iUuWcx.mjs +0 -6
- package/dist/renderer-B8IdU-7S.mjs +0 -5
- package/dist/renderer-BEGJCxuL.mjs +0 -5
- package/dist/renderer-BLAkNFx7.mjs +0 -5
- package/dist/renderer-BVNhv2ft.mjs +0 -5
- package/dist/renderer-BaXTEIe0.mjs +0 -5
- package/dist/renderer-BjeA7s36.mjs +0 -5
- package/dist/renderer-BtGNxEay.mjs +0 -5
- package/dist/renderer-BvZg2RJG.mjs +0 -5
- package/dist/renderer-CLW6tUUn.mjs +0 -5
- package/dist/renderer-CS-ojgJk.mjs +0 -5
- package/dist/renderer-CUQtKECw.mjs +0 -5
- package/dist/renderer-CV-l8wMq.mjs +0 -5
- package/dist/renderer-CV7_ALA5.mjs +0 -5
- package/dist/renderer-CVR6T6Lp.mjs +0 -5
- package/dist/renderer-CtUF95UW.mjs +0 -5
- package/dist/renderer-D8ymQoTB.mjs +0 -5
- package/dist/renderer-D9x3UE1Y.mjs +0 -5
- package/dist/renderer-DAEXqa2Q.mjs +0 -5
- package/dist/renderer-DDhU9Goq.mjs +0 -5
- package/dist/renderer-DcCKath2.mjs +0 -5
- package/dist/renderer-DiBphLzn.mjs +0 -5
- package/dist/renderer-Diq9Z7gZ.mjs +0 -5
- package/dist/renderer-DjZiO7iA.mjs +0 -5
- package/dist/renderer-Dtj6o-74.mjs +0 -5
- package/dist/renderer-Duaam6bJ.mjs +0 -5
- package/dist/renderer-FHqZe3K1.mjs +0 -5
- package/dist/renderer-FTKfOejk.mjs +0 -5
- package/dist/renderer-LmbkN82X.mjs +0 -5
- package/dist/renderer-SDspl6p-.mjs +0 -5
- package/dist/renderer-SWVUDypd.mjs +0 -5
- package/dist/renderer-WhpTBwDM.mjs +0 -5
- package/dist/renderer-WrpQEVdv.mjs +0 -5
- package/dist/renderer-r4ney0FZ.mjs +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects-DgpPr38s.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\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\tCornerPin: {\n\t\tpoints: {},\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\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\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\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\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\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],\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\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\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 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<AudioCompressorProps> {\n\tpublic readonly op = \"AudioCompressor\";\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> {\n\tpublic readonly op = \"AudioDelay\";\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> {\n\tpublic readonly op = \"AudioFade\";\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<AudioNoiseGateProps> {\n\tpublic readonly op = \"AudioNoiseGate\";\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<AudioParametricEqProps> {\n\tpublic readonly op = \"AudioParametricEq\";\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<AudioReverbProps> {\n\tpublic readonly op = \"AudioReverb\";\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> {\n\tpublic readonly op = \"Blur\";\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<CameraParallax3DProps> {\n\tpublic readonly op = \"CameraParallax3D\";\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<ChannelMergerProps> {\n\tpublic readonly op = \"ChannelMerger\";\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<ChannelSplitterProps> {\n\tpublic readonly op = \"ChannelSplitter\";\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<ColorBalanceProps> {\n\tpublic readonly op = \"ColorBalance\";\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> {\n\tpublic readonly op = \"ColorKey\";\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 CornerPinProps {\n\tpoints?: CornerPinPointsItem[];\n}\n\nconst cornerPinDefaults: CornerPinProps = {};\n\nexport class CornerPin extends Effect<CornerPinProps> {\n\tpublic readonly op = \"CornerPin\";\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 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<DisplacementMapProps> {\n\tpublic readonly op = \"DisplacementMap\";\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 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<ExtractLUTProps> {\n\tpublic readonly op = \"ExtractLUT\";\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> {\n\tpublic readonly op = \"Flip\";\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 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> {\n\tpublic readonly op = \"KenBurns\";\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<LayerStyleProps> {\n\tpublic readonly op = \"LayerStyle\";\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> {\n\tpublic readonly op = \"Liquify\";\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> {\n\tpublic readonly op = \"MaskMath\";\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> {\n\tpublic readonly op = \"MeshWarp\";\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<NoiseGeneratorProps> {\n\tpublic readonly op = \"NoiseGenerator\";\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 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> {\n\tpublic readonly op = \"Paint\";\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 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> {\n\tpublic readonly op = \"PatchHeal\";\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 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/**\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<ProceduralVFXProps> {\n\tpublic readonly op = \"ProceduralVFX\";\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\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<RefineEdgeProps> {\n\tpublic readonly op = \"RefineEdge\";\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<RefractionCaustics3DProps> {\n\tpublic readonly op = \"RefractionCaustics3D\";\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<ResizerScalerProps> {\n\tpublic readonly op = \"ResizerScaler\";\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 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> {\n\tpublic readonly op = \"Rotate\";\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<StereoPanningProps> {\n\tpublic readonly op = \"StereoPanning\";\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 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> {\n\tpublic readonly op = \"Vignette\";\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\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\tCornerPin,\n\ttype CornerPinProps,\n\tDisplacementMap,\n\ttype DisplacementMapProps,\n\tExtractLUT,\n\ttype ExtractLUTProps,\n\tFlip,\n\ttype FlipProps,\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\tPaint,\n\ttype PaintProps,\n\tPatchHeal,\n\ttype PatchHealProps,\n\tProceduralVFX,\n\ttype ProceduralVFXProps,\n\tRefineEdge,\n\ttype RefineEdgeProps,\n\tRefractionCaustics3D,\n\ttype RefractionCaustics3DProps,\n\tResizerScaler,\n\ttype ResizerScalerProps,\n\tRotate,\n\ttype RotateProps,\n\tStereoPanning,\n\ttype StereoPanningProps,\n\tVignette,\n\ttype VignetteProps,\n} from \"./classes.js\";\n\n/** `Effect.<factory>(config)` helpers, one per generated effect class. */\nexport const effectFactories = {\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\tcornerPin: (config?: CornerPinProps) => new CornerPin(config),\n\tdisplacementMap: (config?: DisplacementMapProps) =>\n\t\tnew DisplacementMap(config),\n\textractLUT: (config?: ExtractLUTProps) => new ExtractLUT(config),\n\tflip: (config?: FlipProps) => new Flip(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\tpaint: (config?: PaintProps) => new Paint(config),\n\tpatchHeal: (config?: PatchHealProps) => new PatchHeal(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\trotate: (config?: RotateProps) => new Rotate(config),\n\tstereoPanning: (config?: StereoPanningProps) => new StereoPanning(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\";\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> {\n\tpublic readonly op = \"Levels\";\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> {\n\tpublic readonly op = \"FilmGrain\";\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<Record<string, unknown>> {\n\tpublic readonly op: string;\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<AudioSignalExtractorProps> {\n\tpublic readonly op = \"AudioSignalExtractor\";\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> {\n\tpublic readonly op = \"Curves\";\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<SelectiveColorProps> {\n\tpublic readonly op = \"SelectiveColor\";\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<GradientMapProps> {\n\tpublic readonly op = \"GradientMap\";\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<ShadowsHighlightsProps> {\n\tpublic readonly op = \"ShadowsHighlights\";\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> {\n\tpublic readonly op = \"ApplyLUT\";\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<UnsharpMaskProps> {\n\tpublic readonly op = \"UnsharpMask\";\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> {\n\tpublic readonly op = \"HighPass\";\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<HalftoneScreenProps> {\n\tpublic readonly op = \"HalftoneScreen\";\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<TileOffsetProps> {\n\tpublic readonly op = \"TileOffset\";\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<MotionBlurProps> {\n\tpublic readonly op = \"MotionBlur\";\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> {\n\tpublic readonly op = \"SSAO\";\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> {\n\tpublic readonly op = \"PBRGlass\";\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<DepthOfFieldProps> {\n\tpublic readonly op = \"DepthOfField\";\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> {\n\tpublic readonly op = \"Crop\";\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> {\n\tpublic readonly op = \"Vision\";\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> {\n\tpublic readonly op = \"Relight3D\";\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<DeflickerProps> {\n\tpublic readonly op = \"TemporalDeflicker\";\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> {\n\tpublic readonly op = \"Modulate\";\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"],"mappings":";;;;AAaA,SAAS,IAAI,MAAkC;AAC9C,QAAO,OAAO,YAAY,cAAc,QAAQ,MAAM,QAAQ;;;AAI/D,SAAS,WAAoB;CAC5B,MAAM,OAAO,IAAI,2BAA2B;AAC5C,QAAO,SAAS,OAAO,SAAS;;AAGjC,SAAS,gBAAyB;AACjC,QAAO,UAAU,IAAI,IAAI,WAAW,KAAK;;AAG1C,MAAM,2BAAW,IAAI,KAAa;AAElC,SAAS,OAAO,SAAuB;AACtC,KAAI,UAAU,CAAE,OAAM,IAAI,MAAM,QAAQ;AACxC,KAAI,SAAS,IAAI,QAAQ,CAAE;AAC3B,UAAS,IAAI,QAAQ;AACrB,SAAQ,KAAK,iBAAiB,UAAU;;AAGzC,SAAS,cAAc,OAAkD;AACxE,KAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,KAAI,MAAM,QAAQ,MAAM,IAAI,SAAS,MAAM,CAAE,QAAO;CACpD,MAAM,QAAQ,OAAO,eAAe,MAAM;AAC1C,QAAO,UAAU,OAAO,aAAa,UAAU;;;AAIhD,SAAS,SAAS,GAAW,GAAmB;CAC/C,MAAM,MAAM,MAAM,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAG,GAAG,GAAG,MAAM,EAAE;AAC7D,MAAK,IAAI,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;EACnC,IAAI,OAAO,IAAI;AACf,MAAI,KAAK;AACT,OAAK,IAAI,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;GACnC,MAAM,UAAU,IAAI;AACpB,OAAI,KAAK,KAAK,IACb,IAAI,KAAK,GACT,IAAI,IAAI,KAAK,GACb,QAAQ,EAAE,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,GACpC;AACD,UAAO;;;AAGT,QAAO,IAAI,EAAE;;AAGd,SAAS,QAAQ,KAAa,OAAkC;CAC/D,IAAI;CACJ,IAAI,YAAY,OAAO;CACvB,MAAM,QAAQ,IAAI,aAAa;AAC/B,MAAK,MAAM,aAAa,OAAO;EAC9B,MAAM,iBAAiB,UAAU,aAAa;EAC9C,MAAM,QACL,eAAe,SAAS,MAAM,IAAI,MAAM,SAAS,eAAe,GAC7D,IACA,SAAS,OAAO,eAAe;AACnC,MAAI,QAAQ,WAAW;AACtB,eAAY;AACZ,UAAO;;;AAIT,QADc,QAAQ,aAAa,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,SAAS,EAAE,CAAC,GAEtE,kBAAkB,KAAK,MACvB,iBAAiB,MAAM,KAAK,KAAK,CAAC;;AAGtC,SAAS,WAAW,MAAc,OAAgB,MAAsB;AACvE,KAAI,OAAO,UAAU,UAAU;EAC9B,MAAM,EAAE,KAAK,QAAQ;AAGrB,MAFc,QAAQ,UAAa,QAAQ,OAC7B,QAAQ,UAAa,QAAQ,OACrB,OAAO,MAAM,MAAM,EAAE;GAC1C,MAAM,QACL,QAAQ,UAAa,QAAQ,SAC1B,GAAG,IAAI,MAAM,QACb,QAAQ,SACP,KAAK,QACL,KAAK;AACV,UACC,OAAO,MAAM,MAAM,GAChB,GAAG,KAAK,WACR,GAAG,KAAK,KAAK,MAAM,cAAc,QACpC;;AAEF;;AAED,KACC,KAAK,SACJ,OAAO,UAAU,YAAY,OAAO,UAAU,cAC/C,CAAC,KAAK,KAAK,SAAS,MAAM,CAE1B,QACC,GAAG,KAAK,KAAK,KAAK,UAAU,MAAM,CAAC,iBAAiB,KAAK,KACvD,KAAK,MAAM,KAAK,UAAU,EAAE,CAAC,CAC7B,KAAK,KAAK,GACZ;;AAIH,SAAS,WACR,MACA,QACA,MACO;CACP,MAAM,QAAQ,OAAO,KAAK,KAAK;AAC/B,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,EAAE;AAClD,MAAI,UAAU,OAAW;EACzB,MAAM,WAAW,KAAK;AACtB,MAAI,CAAC,UAAU;AACd,UAAO,GAAG,KAAK,kBAAkB,IAAI,IAAI,QAAQ,KAAK,MAAM,GAAG;AAC/D;;AAID,MAAI,SAAS,MAAM,IAAI,OAAO,UAAU,WAAY;AACpD,MAAI,SAAS,SAAS,cAAc,MAAM,CACzC,YAAW,GAAG,KAAK,GAAG,OAAO,OAAO,SAAS,MAAM;MAEnD,YAAW,GAAG,KAAK,GAAG,OAAO,OAAO,SAAS;;;AAKhD,SAAS,aAAgB,OAAa;AACrC,QAAO,OAAO,UAAU,YAAY,UAAU,OAC3C,gBAAgB,MAAM,GACtB;;;;;;;;;;;;;;AAeJ,SAAgB,aACf,IACA,UACA,QACA,MACI;CACJ,MAAM,WAAW;AACjB,KAAI,eAAe,CAAE,YAAW,IAAI,UAAU,KAAK;CAEnD,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,CAClD,QAAO,OAAO,aAAa,MAAM;AAElC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,EAAE;AACpD,MAAI,UAAU,OAAW;EACzB,MAAM,OAAO,OAAO;AACpB,SAAO,OACN,cAAc,KAAK,IAAI,cAAc,MAAM,GACxC;GACA,GAAG;GACH,GAAG,OAAO,YACT,OAAO,QAAQ,MAAM,CAAC,QAAQ,GAAG,OAAO,MAAM,OAAU,CACxD;GACD,GACA;;AAEL,QAAO;;;;;;ACjLR,MAAa,aAAa;CACzB,iBAAiB;EAChB,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD;CACD,YAAY;EACX,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD,KAAK;GACJ,KAAK;GACL,KAAK;GACL;EACD,UAAU,EAAE;EACZ;CACD,WAAW;EACV,gBAAgB;GACf,KAAK;GACL,KAAK;GACL;EACD,iBAAiB;GAChB,KAAK;GACL,KAAK;GACL;EACD,aAAa,EACZ,MAAM;GAAC;GAAU;GAAe;GAAS,EACzC;EACD,cAAc,EACb,MAAM;GAAC;GAAU;GAAe;GAAS,EACzC;EACD;CACD,gBAAgB;EACf,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,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,WAAW,EACV,QAAQ,EAAE,EACV;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,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,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;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;GACD,WAAW,EAAE;GACb,EACD;EACD,QAAQ,EACP,OAAO;GACN,SAAS,EAAE;GACX,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,UAAU,EACT,MAAM;IAAC;IAAU;IAAU;IAAU,EACrC;GACD,OAAO,EAAE;GACT,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,WAAW,EAAE;GACb,EACD;EACD,aAAa,EACZ,OAAO;GACN,SAAS,EAAE;GACX,OAAO,EACN,MAAM;IAAC;IAAc;IAAc;IAAU;IAAe,EAC5D;GACD,WAAW,EACV,MAAM;IAAC;IAAU;IAAc;IAAa,EAC5C;GACD,OAAO;IACN,KAAK;IACL,KAAK;IACL;GACD,WAAW,EACV,MAAM,CAAC,MAAM,OAAO,EACpB;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,QAAQ;IACP,KAAK;IACL,KAAK;IACL;GACD,OAAO;IACN,KAAK;IACL,KAAK;IACL;GACD,UAAU;IACT,KAAK;IACL,KAAK;IACL;GACD,gBAAgB,EAAE;GAClB,kBAAkB;IACjB,KAAK;IACL,KAAK;IACL;GACD,aAAa,EAAE;GACf,eAAe;IACd,KAAK;IACL,KAAK;IACL;GACD,EACD;EACD,cAAc,EACb,OAAO;GACN,SAAS,EAAE;GACX,OAAO,EAAE;GACT,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,WAAW,EAAE;GACb,EACD;EACD,yBAAyB,EAAE;EAC3B,4BAA4B,EAAE;EAC9B,0BAA0B,EAAE;EAC5B,wBAAwB,EAAE;EAC1B,2BAA2B,EAAE;EAC7B,0BAA0B,EAAE;EAC5B,6BAA6B,EAAE;EAC/B,0BAA0B,EAAE;EAC5B,yBAAyB,EAAE;EAC3B,4BAA4B,EAAE;EAC9B,uBAAuB,EAAE;EACzB,yBAAyB,EAAE;EAC3B,0BAA0B,EAAE;EAC5B,uBAAuB,EAAE;EACzB,yBAAyB,EAAE;EAC3B,0BAA0B,EAAE;EAC5B,oBAAoB,EAAE;EACtB,uBAAuB,EAAE;EACzB,0BAA0B,EAAE;EAC5B,yBAAyB,EAAE;EAC3B,2BAA2B,EAAE;EAC7B,0BAA0B,EAAE;EAC5B,6BAA6B,EAAE;EAC/B,qCAAqC,EAAE;EACvC,kCAAkC,EAAE;EACpC,6BAA6B,EAAE;EAC/B;CACD,SAAS,EACR,YAAY,EAAE,EACd;CACD,UAAU;EACT,WAAW,EACV,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,UAAU,EACT,MAAM;GAAC;GAAS;GAAa;GAAO;GAAS;GAAO,EACpD;EACD,UAAU,EACT,MAAM;GAAC;GAAS;GAAa;GAAO;GAAS;GAAO,EACpD;EACD,UAAU,EAAE;EACZ,cAAc,EAAE;EAChB,cAAc,EACb,MAAM;GAAC;GAAkB;GAAgB;GAAa;GAAiB,EACvE;EACD;CACD,UAAU;EACT,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,QAAQ,EAAE;EACV;CACD,gBAAgB;EACf,WAAW,EACV,MAAM;GAAC;GAAU;GAAW;GAAU,EACtC;EACD,YAAY,EACX,MAAM,CAAC,SAAS,QAAQ,EACxB;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,aAAa;GACZ,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,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,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,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,eAAe;EACd,YAAY,EACX,MAAM;GACL;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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"}
|
|
1
|
+
{"version":3,"file":"effects-C06-AOge.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\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\tCornerPin: {\n\t\tpoints: {},\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\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\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\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\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\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],\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\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\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 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<AudioCompressorProps> {\n\tpublic readonly op = \"AudioCompressor\";\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> {\n\tpublic readonly op = \"AudioDelay\";\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> {\n\tpublic readonly op = \"AudioFade\";\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<AudioNoiseGateProps> {\n\tpublic readonly op = \"AudioNoiseGate\";\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<AudioParametricEqProps> {\n\tpublic readonly op = \"AudioParametricEq\";\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<AudioReverbProps> {\n\tpublic readonly op = \"AudioReverb\";\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> {\n\tpublic readonly op = \"Blur\";\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<CameraParallax3DProps> {\n\tpublic readonly op = \"CameraParallax3D\";\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<ChannelMergerProps> {\n\tpublic readonly op = \"ChannelMerger\";\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<ChannelSplitterProps> {\n\tpublic readonly op = \"ChannelSplitter\";\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<ColorBalanceProps> {\n\tpublic readonly op = \"ColorBalance\";\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> {\n\tpublic readonly op = \"ColorKey\";\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 CornerPinProps {\n\tpoints?: CornerPinPointsItem[];\n}\n\nconst cornerPinDefaults: CornerPinProps = {};\n\nexport class CornerPin extends Effect<CornerPinProps> {\n\tpublic readonly op = \"CornerPin\";\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 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<DisplacementMapProps> {\n\tpublic readonly op = \"DisplacementMap\";\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 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<ExtractLUTProps> {\n\tpublic readonly op = \"ExtractLUT\";\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> {\n\tpublic readonly op = \"Flip\";\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 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> {\n\tpublic readonly op = \"KenBurns\";\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<LayerStyleProps> {\n\tpublic readonly op = \"LayerStyle\";\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> {\n\tpublic readonly op = \"Liquify\";\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> {\n\tpublic readonly op = \"MaskMath\";\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> {\n\tpublic readonly op = \"MeshWarp\";\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<NoiseGeneratorProps> {\n\tpublic readonly op = \"NoiseGenerator\";\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 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> {\n\tpublic readonly op = \"Paint\";\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 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> {\n\tpublic readonly op = \"PatchHeal\";\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 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/**\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<ProceduralVFXProps> {\n\tpublic readonly op = \"ProceduralVFX\";\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\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<RefineEdgeProps> {\n\tpublic readonly op = \"RefineEdge\";\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<RefractionCaustics3DProps> {\n\tpublic readonly op = \"RefractionCaustics3D\";\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<ResizerScalerProps> {\n\tpublic readonly op = \"ResizerScaler\";\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 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> {\n\tpublic readonly op = \"Rotate\";\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<StereoPanningProps> {\n\tpublic readonly op = \"StereoPanning\";\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 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> {\n\tpublic readonly op = \"Vignette\";\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\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\tCornerPin,\n\ttype CornerPinProps,\n\tDisplacementMap,\n\ttype DisplacementMapProps,\n\tExtractLUT,\n\ttype ExtractLUTProps,\n\tFlip,\n\ttype FlipProps,\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\tPaint,\n\ttype PaintProps,\n\tPatchHeal,\n\ttype PatchHealProps,\n\tProceduralVFX,\n\ttype ProceduralVFXProps,\n\tRefineEdge,\n\ttype RefineEdgeProps,\n\tRefractionCaustics3D,\n\ttype RefractionCaustics3DProps,\n\tResizerScaler,\n\ttype ResizerScalerProps,\n\tRotate,\n\ttype RotateProps,\n\tStereoPanning,\n\ttype StereoPanningProps,\n\tVignette,\n\ttype VignetteProps,\n} from \"./classes.js\";\n\n/** `Effect.<factory>(config)` helpers, one per generated effect class. */\nexport const effectFactories = {\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\tcornerPin: (config?: CornerPinProps) => new CornerPin(config),\n\tdisplacementMap: (config?: DisplacementMapProps) =>\n\t\tnew DisplacementMap(config),\n\textractLUT: (config?: ExtractLUTProps) => new ExtractLUT(config),\n\tflip: (config?: FlipProps) => new Flip(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\tpaint: (config?: PaintProps) => new Paint(config),\n\tpatchHeal: (config?: PatchHealProps) => new PatchHeal(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\trotate: (config?: RotateProps) => new Rotate(config),\n\tstereoPanning: (config?: StereoPanningProps) => new StereoPanning(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\";\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> {\n\tpublic readonly op = \"Levels\";\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> {\n\tpublic readonly op = \"FilmGrain\";\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<Record<string, unknown>> {\n\tpublic readonly op: string;\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<AudioSignalExtractorProps> {\n\tpublic readonly op = \"AudioSignalExtractor\";\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> {\n\tpublic readonly op = \"Curves\";\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<SelectiveColorProps> {\n\tpublic readonly op = \"SelectiveColor\";\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<GradientMapProps> {\n\tpublic readonly op = \"GradientMap\";\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<ShadowsHighlightsProps> {\n\tpublic readonly op = \"ShadowsHighlights\";\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> {\n\tpublic readonly op = \"ApplyLUT\";\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<UnsharpMaskProps> {\n\tpublic readonly op = \"UnsharpMask\";\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> {\n\tpublic readonly op = \"HighPass\";\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<HalftoneScreenProps> {\n\tpublic readonly op = \"HalftoneScreen\";\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<TileOffsetProps> {\n\tpublic readonly op = \"TileOffset\";\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<MotionBlurProps> {\n\tpublic readonly op = \"MotionBlur\";\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> {\n\tpublic readonly op = \"SSAO\";\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> {\n\tpublic readonly op = \"PBRGlass\";\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<DepthOfFieldProps> {\n\tpublic readonly op = \"DepthOfField\";\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> {\n\tpublic readonly op = \"Crop\";\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> {\n\tpublic readonly op = \"Vision\";\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> {\n\tpublic readonly op = \"Relight3D\";\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<DeflickerProps> {\n\tpublic readonly op = \"TemporalDeflicker\";\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> {\n\tpublic readonly op = \"Modulate\";\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"],"mappings":"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ACvE;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,WAAW,EACV,QAAQ,EAAE,EACV;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,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,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;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;GACD,WAAW,EAAE;GACb,EACD;EACD,QAAQ,EACP,OAAO;GACN,SAAS,EAAE;GACX,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,UAAU,EACT,MAAM;IAAC;IAAU;IAAU;IAAU,EACrC;GACD,OAAO,EAAE;GACT,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,WAAW,EAAE;GACb,EACD;EACD,aAAa,EACZ,OAAO;GACN,SAAS,EAAE;GACX,OAAO,EACN,MAAM;IAAC;IAAc;IAAc;IAAU;IAAe,EAC5D;GACD,WAAW,EACV,MAAM;IAAC;IAAU;IAAc;IAAa,EAC5C;GACD,OAAO;IACN,KAAK;IACL,KAAK;IACL;GACD,WAAW,EACV,MAAM,CAAC,MAAM,OAAO,EACpB;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,QAAQ;IACP,KAAK;IACL,KAAK;IACL;GACD,OAAO;IACN,KAAK;IACL,KAAK;IACL;GACD,UAAU;IACT,KAAK;IACL,KAAK;IACL;GACD,gBAAgB,EAAE;GAClB,kBAAkB;IACjB,KAAK;IACL,KAAK;IACL;GACD,aAAa,EAAE;GACf,eAAe;IACd,KAAK;IACL,KAAK;IACL;GACD,EACD;EACD,cAAc,EACb,OAAO;GACN,SAAS,EAAE;GACX,OAAO,EAAE;GACT,SAAS;IACR,KAAK;IACL,KAAK;IACL;GACD,WAAW,EAAE;GACb,EACD;EACD,yBAAyB,EAAE;EAC3B,4BAA4B,EAAE;EAC9B,0BAA0B,EAAE;EAC5B,wBAAwB,EAAE;EAC1B,2BAA2B,EAAE;EAC7B,0BAA0B,EAAE;EAC5B,6BAA6B,EAAE;EAC/B,0BAA0B,EAAE;EAC5B,yBAAyB,EAAE;EAC3B,4BAA4B,EAAE;EAC9B,uBAAuB,EAAE;EACzB,yBAAyB,EAAE;EAC3B,0BAA0B,EAAE;EAC5B,uBAAuB,EAAE;EACzB,yBAAyB,EAAE;EAC3B,0BAA0B,EAAE;EAC5B,oBAAoB,EAAE;EACtB,uBAAuB,EAAE;EACzB,0BAA0B,EAAE;EAC5B,yBAAyB,EAAE;EAC3B,2BAA2B,EAAE;EAC7B,0BAA0B,EAAE;EAC5B,6BAA6B,EAAE;EAC/B,qCAAqC,EAAE;EACvC,kCAAkC,EAAE;EACpC,6BAA6B,EAAE;EAC/B;CACD,SAAS,EACR,YAAY,EAAE,EACd;CACD,UAAU;EACT,WAAW,EACV,MAAM;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,WAAW;GACV,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,UAAU;GACT,KAAK;GACL,KAAK;GACL;EACD,UAAU,EACT,MAAM;GAAC;GAAS;GAAa;GAAO;GAAS;GAAO,EACpD;EACD,UAAU,EACT,MAAM;GAAC;GAAS;GAAa;GAAO;GAAS;GAAO,EACpD;EACD,UAAU,EAAE;EACZ,cAAc,EAAE;EAChB,cAAc,EACb,MAAM;GAAC;GAAkB;GAAgB;GAAa;GAAiB,EACvE;EACD;CACD,UAAU;EACT,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,MAAM;GACL,KAAK;GACL,KAAK;GACL;EACD,QAAQ,EAAE;EACV;CACD,gBAAgB;EACf,WAAW,EACV,MAAM;GAAC;GAAU;GAAW;GAAU,EACtC;EACD,YAAY,EACX,MAAM,CAAC,SAAS,QAAQ,EACxB;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,QAAQ;GACP,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,KAAK;GACL,KAAK;GACL;EACD,SAAS;GACR,KAAK;GACL,KAAK;GACL;EACD,aAAa;GACZ,KAAK;GACL,KAAK;GACL;EACD,YAAY;GACX,KAAK;GACL,KAAK;GACL;EACD,OAAO;GACN,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,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,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,eAAe;EACd,YAAY,EACX,MAAM;GACL;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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"}
|