@beeintel/batch-image 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/FONT-LICENSE.txt +93 -0
  2. package/README.md +181 -2
  3. package/dist/assets/11st-D7qGO5e4.webp +0 -0
  4. package/dist/assets/UPNG-CPfdwFSy.js +2298 -0
  5. package/dist/assets/adjust-card-B63b81iV.webp +0 -0
  6. package/dist/assets/adjust-final.worker-C2JbTvv5.js +6945 -0
  7. package/dist/assets/amazon-CjTtpZTq.webp +0 -0
  8. package/dist/assets/ascii_art-B4UGbtGs.webp +0 -0
  9. package/dist/assets/auction-j26eVUQO.webp +0 -0
  10. package/dist/assets/background-DGdZUdkL.webp +0 -0
  11. package/dist/assets/background-card-wK7DRpvM.png +0 -0
  12. package/dist/assets/body-CUFdRg8w.webp +0 -0
  13. package/dist/assets/bounded-cutout.worker-BZR6mbaI.js +9615 -0
  14. package/dist/assets/brand-mark-card-cFUeDeO2.webp +0 -0
  15. package/dist/assets/buyma-dAxYNjow.webp +0 -0
  16. package/dist/assets/codec.worker-7W6hmsm6.js +7349 -0
  17. package/dist/assets/contour_lines-C_CqrgV1.webp +0 -0
  18. package/dist/assets/creema-B1tWyCPx.webp +0 -0
  19. package/dist/assets/crop-final.worker-Owin7TvX.js +7035 -0
  20. package/dist/assets/cutout-CzMvV5An.webp +0 -0
  21. package/dist/assets/cutout-card-CN4gNFBz.png +0 -0
  22. package/dist/assets/cutout.worker-DyH6Prbn.js +3894 -0
  23. package/dist/assets/depop-CkVC5Fn1.webp +0 -0
  24. package/dist/assets/dewrinkle-kFzP6LqD.webp +0 -0
  25. package/dist/assets/dither-CcxmO2e6.webp +0 -0
  26. package/dist/assets/douyin-CP_HwBDF.webp +0 -0
  27. package/dist/assets/download.worker-DnGSB6P_.js +17779 -0
  28. package/dist/assets/duotone-Cdg_3fQf.webp +0 -0
  29. package/dist/assets/ebay-CxLfrRAf.webp +0 -0
  30. package/dist/assets/edit-Cv-txfZm.webp +0 -0
  31. package/dist/assets/effect.worker-qu1eCcII.js +9227 -0
  32. package/dist/assets/engraving-BENh1O2O.webp +0 -0
  33. package/dist/assets/etsy-CSvz9GpY.webp +0 -0
  34. package/dist/assets/expand-C60VE9nK.webp +0 -0
  35. package/dist/assets/facebook-Ca2nJJiQ.webp +0 -0
  36. package/dist/assets/film_stock-Bqauwcq4.webp +0 -0
  37. package/dist/assets/final.worker-BnzJ3N5C.js +7035 -0
  38. package/dist/assets/final.worker-Csc1zoYS.js +7054 -0
  39. package/dist/assets/final.worker-DzBFT9xk.js +6922 -0
  40. package/dist/assets/final.worker-XpgKnlaz.js +7217 -0
  41. package/dist/assets/flatlay-CPiVmlAa.webp +0 -0
  42. package/dist/assets/flatlay-fold-B-CRYy87.webp +0 -0
  43. package/dist/assets/flatlay-open-Dzas8okC.webp +0 -0
  44. package/dist/assets/g-market-DXuYK_JH.webp +0 -0
  45. package/dist/assets/ghost-BCEAx_Zx.webp +0 -0
  46. package/dist/assets/ghost-front-WFgA4sUo.webp +0 -0
  47. package/dist/assets/ghost-three-quarter-Rt8cXj34.webp +0 -0
  48. package/dist/assets/gif-CObOIITx.js +303 -0
  49. package/dist/assets/glass_tiles-3IXP-Hmg.webp +0 -0
  50. package/dist/assets/glitch_art-D1i3qben.webp +0 -0
  51. package/dist/assets/glitch_blur-C4q_9zyq.webp +0 -0
  52. package/dist/assets/glow-Bv9EHBU5.webp +0 -0
  53. package/dist/assets/gradient_map-BR-UVYMP.webp +0 -0
  54. package/dist/assets/halftone-CWdKu2_6.webp +0 -0
  55. package/dist/assets/holo_sticker-BQDikLg2.webp +0 -0
  56. package/dist/assets/idus-7diqRNPs.webp +0 -0
  57. package/dist/assets/imagetracer.worker-CgunQTPG.js +7096 -0
  58. package/dist/assets/instagram-Bf0IVidT.webp +0 -0
  59. package/dist/assets/kakao-talk-Df79L_Mv.webp +0 -0
  60. package/dist/assets/kaleidoscope-BxqMZuWo.webp +0 -0
  61. package/dist/assets/karrot-BXFPhDwt.webp +0 -0
  62. package/dist/assets/kaufland-BDDy6e0C.webp +0 -0
  63. package/dist/assets/lazada-ConR4e1O.webp +0 -0
  64. package/dist/assets/lens_flare-DgyiAv_j.webp +0 -0
  65. package/dist/assets/light_leak-kUdpoFuC.webp +0 -0
  66. package/dist/assets/line-Dr1j___B.webp +0 -0
  67. package/dist/assets/linkedin-4s_9Wh03.webp +0 -0
  68. package/dist/assets/lo_fi-DSdl3yY_.webp +0 -0
  69. package/dist/assets/logo-preparation.worker-D9oa7SME.js +420 -0
  70. package/dist/assets/mercado-libre-C8CskEiS.webp +0 -0
  71. package/dist/assets/mercari-jp-DHj7nz4O.webp +0 -0
  72. package/dist/assets/metadata.worker-B_9_BgN1.js +6456 -0
  73. package/dist/assets/mirror_collage-JtSKCeSh.webp +0 -0
  74. package/dist/assets/model-BbeF-fsf.webp +0 -0
  75. package/dist/assets/model-BjWhieit.webp +0 -0
  76. package/dist/assets/momo-BWXO_8Df.webp +0 -0
  77. package/dist/assets/motion_blur-B8YUHeSg.webp +0 -0
  78. package/dist/assets/naver-xQKL8lWg.webp +0 -0
  79. package/dist/assets/nuvemshop-DPt6rnA-.webp +0 -0
  80. package/dist/assets/olx-B87gp-Il.webp +0 -0
  81. package/dist/assets/orient-card-Da0ii6mX.webp +0 -0
  82. package/dist/assets/orient-final.worker-CdF5Y5zD.js +6909 -0
  83. package/dist/assets/orientation-preview.worker-B7uFzz3J.js +6865 -0
  84. package/dist/assets/ort.bundle.min-CreFV8V1.js +9311 -0
  85. package/dist/assets/ort.webgpu.bundle.min-CAudaHZO.js +9311 -0
  86. package/dist/assets/otto-market-DWZyNKJn.webp +0 -0
  87. package/dist/assets/paper_texture-CXphyIrs.webp +0 -0
  88. package/dist/assets/pinterest-ByZqih2J.webp +0 -0
  89. package/dist/assets/polish-DFy6LNG7.webp +0 -0
  90. package/dist/assets/poshmark-DnZi2vA1.webp +0 -0
  91. package/dist/assets/posterize-SpLVGq1s.webp +0 -0
  92. package/dist/assets/preview.worker-DcrCKKWl.js +380 -0
  93. package/dist/assets/qoo10-C1pq81Jx.webp +0 -0
  94. package/dist/assets/rakuten-ulYog1hL.webp +0 -0
  95. package/dist/assets/recolor-mBX7vdFT.webp +0 -0
  96. package/dist/assets/resize-DVEAl0Um.webp +0 -0
  97. package/dist/assets/runtime-0663b902fb3937883a34.wasm +0 -0
  98. package/dist/assets/runtime-355a5c80c7bfdf8737de.mjs +2817 -0
  99. package/dist/assets/runtime-49871f5a4409519797e1.wasm +0 -0
  100. package/dist/assets/runtime-74cf72f9a2b7befc115a.mjs +2817 -0
  101. package/dist/assets/shadow-card-DTZEH60r.png +0 -0
  102. package/dist/assets/shopee-Bxfei6sj.webp +0 -0
  103. package/dist/assets/shopify-wVaBafcF.webp +0 -0
  104. package/dist/assets/shopline-DMoaJ7Bh.webp +0 -0
  105. package/dist/assets/sparkle-CD5GSGip.webp +0 -0
  106. package/dist/assets/ssg-DQoFx5u5.webp +0 -0
  107. package/dist/assets/staging-CIc8pQJ6.webp +0 -0
  108. package/dist/assets/standard-cutout.worker-BYLzdpR-.js +1261 -0
  109. package/dist/assets/text-DQW2mBGp.webp +0 -0
  110. package/dist/assets/textured_glass-D2coxp7n.webp +0 -0
  111. package/dist/assets/tga-VGxWDes0.js +752 -0
  112. package/dist/assets/tilt_shift-BKs46yeX.webp +0 -0
  113. package/dist/assets/transformers.web-DB57cIO5.js +28891 -0
  114. package/dist/assets/tritone-CcR4qizk.webp +0 -0
  115. package/dist/assets/upscale-BrLadyUk.webp +0 -0
  116. package/dist/assets/upscale-creative-DnZnQufJ.webp +0 -0
  117. package/dist/assets/upscale-crisp-Ckdmbsnn.webp +0 -0
  118. package/dist/assets/vinted-1QDsxvC6.webp +0 -0
  119. package/dist/assets/watercolor-CV67zYNE.webp +0 -0
  120. package/dist/assets/watermark-CpPrxaT5.webp +0 -0
  121. package/dist/assets/wave_distortion-CV5jVfK4.webp +0 -0
  122. package/dist/assets/whatsapp-CWJxqzR6.webp +0 -0
  123. package/dist/assets/worker-DfrCFP3O.js +55 -0
  124. package/dist/assets/xerox_noise-CbbHY1S1.webp +0 -0
  125. package/dist/assets/youtube-DS12d5mi.webp +0 -0
  126. package/dist/assets/zalando-CenfWOwz.webp +0 -0
  127. package/dist/browser-adapter.d.ts +4 -0
  128. package/dist/browser-cutout-capability.d.ts +4 -0
  129. package/dist/browser-cutout-resources.d.ts +3 -0
  130. package/dist/browser-local-capabilities.d.ts +5 -0
  131. package/dist/capabilities.d.ts +18 -0
  132. package/dist/chunks/AdjustToolPanel-B6dtlFlj.js +195 -0
  133. package/dist/chunks/BackgroundToolPanel-C3Rr9d4S.js +41 -0
  134. package/dist/chunks/BatchMaterials-DDoJTaS5.js +806 -0
  135. package/dist/chunks/BatchModeChoices-DeBARgvY.js +111 -0
  136. package/dist/chunks/BatchOutputColorPicker-D7WIDS4_.js +75 -0
  137. package/dist/chunks/BatchReferenceFields-Cr5WgFRJ.js +316 -0
  138. package/dist/chunks/BeautifyToolPanel-DDZXDQKM.js +215 -0
  139. package/dist/chunks/BrandMarkToolPanel-vKobk_R3.js +1179 -0
  140. package/dist/chunks/ContentTrimControl-BKCJEst5.js +297 -0
  141. package/dist/chunks/CropToolPanel-C_sW5tWL.js +218 -0
  142. package/dist/chunks/CutoutToolPanel-B7ObmiWd.js +73 -0
  143. package/dist/chunks/DisclosureToolPanel-F3ccFJIF.js +76 -0
  144. package/dist/chunks/ExpandToolPanel-BKjj5UJA.js +67 -0
  145. package/dist/chunks/ImageEffectsToolPanel-CsDIBpT6.js +966 -0
  146. package/dist/chunks/IpAuditToolPanel-CduDfFh-.js +96 -0
  147. package/dist/chunks/ListingToolPanel-8pJ2_zvI.js +783 -0
  148. package/dist/chunks/MaterialSelectionPlate-CW7HaS6v.js +30 -0
  149. package/dist/chunks/MetadataToolPanel-C8XJOamN.js +104 -0
  150. package/dist/chunks/OrientToolPanel-C1AzQchm.js +161 -0
  151. package/dist/chunks/PluginActionFooter.vue_vue_type_script_setup_true_lang-BGe419qz.js +102 -0
  152. package/dist/chunks/ResizeToolPanel-DWikcj2G.js +1178 -0
  153. package/dist/chunks/RetouchToolPanel-B4eQKk2W.js +350 -0
  154. package/dist/chunks/ShadowToolPanel-Bbj76hQd.js +254 -0
  155. package/dist/chunks/SvgExportToolPanel-BRxpzd7q.js +219 -0
  156. package/dist/chunks/TranslationToolPanel-Bxv8U2WY.js +125 -0
  157. package/dist/chunks/UpscaleToolPanel-BRIgpszs.js +127 -0
  158. package/dist/chunks/engine-D-T-1RSx.js +69 -0
  159. package/dist/chunks/entry-CboOSe2r.js +42945 -0
  160. package/dist/chunks/gpu-CScw5MNG.js +231 -0
  161. package/dist/chunks/hosted-resources-COzZ7nZY.js +8196 -0
  162. package/dist/chunks/loader-circle-CylCgDqP.js +16 -0
  163. package/dist/chunks/motionFeatures-D67ghPG1.js +4405 -0
  164. package/dist/chunks/search-BwsDnulU.js +18 -0
  165. package/dist/chunks/standard-cutout-vPpP6xBc.js +45 -0
  166. package/dist/chunks/static-logo-2F9ORZWc.js +34 -0
  167. package/dist/config.d.ts +66 -0
  168. package/dist/contracts.d.ts +272 -0
  169. package/dist/index.d.ts +23 -0
  170. package/dist/index.js +13 -0
  171. package/dist/node/catalog.mjs +45 -0
  172. package/dist/node/cli.mjs +11 -0
  173. package/dist/node/index.d.mts +20 -0
  174. package/dist/node/index.mjs +2 -0
  175. package/dist/node/prepare.mjs +114 -0
  176. package/dist/node/vite.mjs +46 -0
  177. package/dist/processing.d.ts +1 -0
  178. package/dist/processing.js +12105 -0
  179. package/dist/remote-contracts.d.ts +114 -0
  180. package/dist/resource-contracts.d.ts +40 -0
  181. package/dist/resources/cutout/9ae2e5375a34fa413530954dc20d085d175faffc86108c13619220d0557f80bf.json +1 -0
  182. package/dist/resources/cutout/f119dabecc64bc436d3d08425dde96ec2598fd40541eba97d8d53a4e8bbdcaea.json +1 -0
  183. package/dist/resources/cutout/resources.json +195 -0
  184. package/dist/resources/cutout/sources.json +294 -0
  185. package/dist/resources.json +1191 -0
  186. package/dist/service-contracts.d.ts +43 -0
  187. package/dist/slots.d.ts +21 -0
  188. package/dist/style.css +1 -0
  189. package/dist/types/batch/api.d.ts +89 -0
  190. package/dist/types/batch/cutout-output.d.ts +2 -0
  191. package/dist/types/batch/features/background/engine.d.mts +12 -0
  192. package/dist/types/batch/features/basic-edit/contracts.d.ts +87 -0
  193. package/dist/types/batch/features/basic-edit/engine.d.mts +96 -0
  194. package/dist/types/batch/features/brand-mark/contracts.d.ts +84 -0
  195. package/dist/types/batch/features/brand-mark/engine.d.mts +68 -0
  196. package/dist/types/batch/features/export-compression/contracts.d.ts +44 -0
  197. package/dist/types/batch/features/export-compression/gifenc.d.ts +33 -0
  198. package/dist/types/batch/features/export-compression/plan.d.ts +45 -0
  199. package/dist/types/batch/features/export-compression/presentation.d.ts +70 -0
  200. package/dist/types/batch/features/export-compression/upng.d.ts +6 -0
  201. package/dist/types/batch/features/final-image/resize.d.mts +15 -0
  202. package/dist/types/batch/features/image-effects/contracts.d.ts +58 -0
  203. package/dist/types/batch/features/image-effects/gpu-pixel-runtime.d.ts +15 -0
  204. package/dist/types/batch/features/image-effects/photo-audit.d.ts +21 -0
  205. package/dist/types/batch/features/image-effects/photo-v7-cpu.d.ts +9 -0
  206. package/dist/types/batch/features/image-effects/profiles-v4.d.ts +157 -0
  207. package/dist/types/batch/features/image-effects/profiles-v5.d.ts +20 -0
  208. package/dist/types/batch/features/image-effects/profiles-v6.d.ts +14 -0
  209. package/dist/types/batch/features/image-effects/profiles-v7.d.ts +53 -0
  210. package/dist/types/batch/features/image-effects/profiles-v8.d.ts +113 -0
  211. package/dist/types/batch/features/image-effects/profiles-v9.d.ts +20 -0
  212. package/dist/types/batch/features/image-translation/params.d.ts +257 -0
  213. package/dist/types/batch/features/listing-remake/transport.d.ts +21 -0
  214. package/dist/types/batch/features/metadata/bytes.d.mts +13 -0
  215. package/dist/types/batch/features/metadata/containers.d.mts +20 -0
  216. package/dist/types/batch/features/metadata/declaration.d.mts +5 -0
  217. package/dist/types/batch/features/metadata/engine.d.mts +9 -0
  218. package/dist/types/batch/features/metadata/exchange.d.mts +48 -0
  219. package/dist/types/batch/features/shadow/contracts.d.ts +43 -0
  220. package/dist/types/batch/features/shadow/engine.d.mts +33 -0
  221. package/dist/types/batch/features/svg-export/download-contract.d.ts +33 -0
  222. package/dist/types/batch/features/svg-export/download-prepare.d.ts +2 -0
  223. package/dist/types/batch/features/svg-export/download.d.ts +7 -0
  224. package/dist/types/batch/features/svg-export/imagetracer.d.ts +6 -0
  225. package/dist/types/batch/features/svg-export/optimizer.d.ts +2 -0
  226. package/dist/types/batch/ids.d.ts +1 -0
  227. package/dist/types/batch/model.d.ts +317 -0
  228. package/dist/types/batch/public/config.d.ts +66 -0
  229. package/dist/types/batch/public/contracts.d.ts +272 -0
  230. package/dist/types/batch/public/remote-contracts.d.ts +114 -0
  231. package/dist/types/batch/public/resource-contracts.d.ts +40 -0
  232. package/dist/types/batch/public/service-contracts.d.ts +43 -0
  233. package/dist/types/batch/queue.d.ts +34 -0
  234. package/dist/types/batch/receipts.d.ts +85 -0
  235. package/dist/types/batch/retention.d.ts +13 -0
  236. package/dist/types/onnxruntime-web.d.ts +5 -0
  237. package/dist/types/plugins/cutout/core/hosted-resources.d.ts +11 -0
  238. package/dist/types/processing.d.ts +18 -0
  239. package/dist/types/shared/svg-security.d.mts +4 -0
  240. package/dist/types/workspace-worker.d.ts +2 -0
  241. package/package.json +91 -3
@@ -0,0 +1,58 @@
1
+ import type { PaperTextureV9Request } from './profiles-v9';
2
+ import { type V8ImageEffectParams } from './profiles-v8';
3
+ import type { XeroxNoiseV6Request } from './profiles-v6';
4
+ import type { XeroxNoiseV7Request, V7ImageEffectParams } from './profiles-v7';
5
+ import type { PhotoProcessingAudit } from './photo-audit';
6
+ import type { HoloStickerV5Request } from './profiles-v5';
7
+ import { type V4ImageEffectParams } from './profiles-v4';
8
+ export declare const LEGACY_IMAGE_EFFECT_IDS: readonly ["holo_sticker", "halftone", "duotone", "glitch_art", "motion_blur", "xerox_noise", "textured_glass", "glitch_blur", "lo_fi", "posterize", "ascii_art"];
9
+ export declare const IMAGE_EFFECT_IDS: readonly ["holo_sticker", "halftone", "duotone", "glitch_art", "motion_blur", "xerox_noise", "textured_glass", "glitch_blur", "lo_fi", "posterize", "ascii_art", "light_leak", "engraving", "sparkle", "glow", "lens_flare", "tilt_shift", "paper_texture", "glass_tiles", "watercolor", "dither", "contour_lines", "film_stock", "gradient_map", "tritone", "kaleidoscope", "mirror_collage", "wave_distortion"];
10
+ export type LegacyImageEffectId = (typeof LEGACY_IMAGE_EFFECT_IDS)[number];
11
+ export type ImageEffectId = (typeof IMAGE_EFFECT_IDS)[number];
12
+ export type ImageEffectVersion = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
13
+ export type ImageEffectOutputKind = 'image' | 'svg';
14
+ export type ImageEffectStage = 'decode' | 'process' | 'encode';
15
+ export type ImageEffectProgress = Readonly<{
16
+ stage: ImageEffectStage;
17
+ completed: number;
18
+ total?: number;
19
+ }>;
20
+ export type ImageEffectResult = Readonly<{
21
+ blob: Blob;
22
+ mime: 'image/png' | 'image/jpeg' | 'image/webp' | 'image/svg+xml';
23
+ width: number;
24
+ height: number;
25
+ alpha: boolean;
26
+ outputKind: ImageEffectOutputKind;
27
+ inputSha256: string;
28
+ outputSha256: string;
29
+ stages: readonly ImageEffectProgress[];
30
+ processingAudit?: PhotoProcessingAudit;
31
+ }>;
32
+ export type ImageEffectsDraft = Readonly<{
33
+ effectId: ImageEffectId;
34
+ effectVersion?: ImageEffectVersion;
35
+ params: Record<string, unknown>;
36
+ }>;
37
+ export type ImageEffectParams = XeroxNoiseV7Request | PaperTextureV9Request | V8ImageEffectParams | V7ImageEffectParams | XeroxNoiseV6Request | HoloStickerV5Request | V4ImageEffectParams | Readonly<{
38
+ schemaVersion: 1;
39
+ effectVersion: '1' | '2' | '3';
40
+ execution: 'browser';
41
+ effectId: LegacyImageEffectId;
42
+ params: Readonly<Record<string, unknown>>;
43
+ }>;
44
+ export type LegacyImageEffectParams = Exclude<ImageEffectParams, V4ImageEffectParams | HoloStickerV5Request | XeroxNoiseV6Request | XeroxNoiseV7Request | V7ImageEffectParams | V8ImageEffectParams | PaperTextureV9Request>;
45
+ export declare const V1_EFFECT_IDS: readonly ImageEffectId[];
46
+ export declare const V2_EFFECT_IDS: readonly ImageEffectId[];
47
+ export declare function effectVersion(id: ImageEffectId): ImageEffectVersion;
48
+ export declare function isLegacyImageEffectId(value: unknown): value is LegacyImageEffectId;
49
+ export declare function isImageEffectId(value: unknown): value is ImageEffectId;
50
+ export type ImageEffectCapability = Readonly<{
51
+ effectId: ImageEffectId;
52
+ effectVersion: ImageEffectVersion;
53
+ execution: 'browser-image-effects';
54
+ outputKind: ImageEffectOutputKind;
55
+ mime: 'image/png' | 'image/svg+xml';
56
+ geometry: 'preserve';
57
+ alpha: 'preserve' | 'resample' | 'cell-opacity' | 'sticker';
58
+ }>;
@@ -0,0 +1,15 @@
1
+ import { type PhotoPixels } from "./photo-v7-cpu";
2
+ export declare const PHOTO_GPU_FALLBACK_REASONS: readonly ["no-api", "no-adapter", "initialization", "compilation", "device-lost", "limits", "execution", "timeout"];
3
+ export type GpuFallbackReason = (typeof PHOTO_GPU_FALLBACK_REASONS)[number];
4
+ export declare class PhotoGpuError extends Error {
5
+ readonly reason: GpuFallbackReason;
6
+ constructor(reason: GpuFallbackReason);
7
+ }
8
+ export type PhotoGpuOptions = Readonly<{
9
+ fault?: GpuFallbackReason;
10
+ gpuTimeoutMs?: number;
11
+ }>;
12
+ export declare function runGpuPixels(source: PhotoPixels, dispatch: Readonly<{
13
+ shader: string;
14
+ params: () => Float32Array;
15
+ }>, options?: PhotoGpuOptions): Promise<PhotoPixels>;
@@ -0,0 +1,21 @@
1
+ import { type GpuFallbackReason } from "./gpu-pixel-runtime";
2
+ export type VersionPhotoProcessingAudit<A extends "photo-v7.1" | "photo-v8.1" | "photo-v9.1"> = Readonly<{
3
+ algorithm: A;
4
+ width: number;
5
+ height: number;
6
+ injected: boolean;
7
+ } & ({
8
+ backend: "webgpu";
9
+ } | {
10
+ backend: "cpu";
11
+ selection: "forced";
12
+ } | {
13
+ backend: "cpu";
14
+ selection: "fallback";
15
+ fallbackReason: GpuFallbackReason;
16
+ })>;
17
+ export type PhotoV7Audit = VersionPhotoProcessingAudit<"photo-v7.1">;
18
+ export type PhotoV8Audit = VersionPhotoProcessingAudit<"photo-v8.1">;
19
+ export type PhotoV9Audit = VersionPhotoProcessingAudit<"photo-v9.1">;
20
+ export type PhotoProcessingAudit = PhotoV7Audit | PhotoV8Audit | PhotoV9Audit;
21
+ export declare function isPhotoProcessingAuditFor(version: "7" | "8" | "9", value: unknown): value is PhotoProcessingAudit;
@@ -0,0 +1,9 @@
1
+ import type { V7ImageEffectParams } from './profiles-v7';
2
+ export type PhotoPixels = Readonly<{
3
+ data: Uint8ClampedArray;
4
+ width: number;
5
+ height: number;
6
+ }>;
7
+ export declare function validatePhotoPixels(source: PhotoPixels): void;
8
+ export declare function photoV7Uniforms(source: PhotoPixels, request: V7ImageEffectParams): Float32Array;
9
+ export declare function renderPhotoV7Cpu(source: PhotoPixels, request: V7ImageEffectParams): PhotoPixels;
@@ -0,0 +1,157 @@
1
+ export declare const V4_EFFECT_IDS: readonly ["holo_sticker", "motion_blur", "halftone", "duotone"];
2
+ export type V4EffectId = (typeof V4_EFFECT_IDS)[number];
3
+ declare const ramps: readonly [{
4
+ readonly id: "fire";
5
+ readonly colors: readonly ["#000000", "#b41414", "#ffdc32", "#ffffff"];
6
+ }, {
7
+ readonly id: "ocean";
8
+ readonly colors: readonly ["#071b40", "#125ec0", "#22c8db", "#e6fbff"];
9
+ }, {
10
+ readonly id: "viridis";
11
+ readonly colors: readonly ["#440154", "#3b528b", "#21918c", "#5ec962", "#fde725"];
12
+ }, {
13
+ readonly id: "plasma";
14
+ readonly colors: readonly ["#0d0887", "#7e03a8", "#cc4778", "#f89540", "#f0f921"];
15
+ }, {
16
+ readonly id: "sunset";
17
+ readonly colors: readonly ["#25124d", "#b83c75", "#ff9a62", "#ffe9a8"];
18
+ }, {
19
+ readonly id: "forest";
20
+ readonly colors: readonly ["#082b25", "#287c4b", "#9bc86b", "#eff9bc"];
21
+ }, {
22
+ readonly id: "lavender";
23
+ readonly colors: readonly ["#251c48", "#7561ae", "#c7a4dd", "#f7eafa"];
24
+ }, {
25
+ readonly id: "rose";
26
+ readonly colors: readonly ["#39172a", "#a03562", "#eb8caa", "#ffe6df"];
27
+ }, {
28
+ readonly id: "amber";
29
+ readonly colors: readonly ["#291a0b", "#946018", "#e5b64c", "#fff1bd"];
30
+ }, {
31
+ readonly id: "ice";
32
+ readonly colors: readonly ["#122c46", "#447f9f", "#a3dbe3", "#f1ffff"];
33
+ }, {
34
+ readonly id: "mono";
35
+ readonly colors: readonly ["#000000", "#ffffff"];
36
+ }, {
37
+ readonly id: "sepia";
38
+ readonly colors: readonly ["#24170f", "#806044", "#c3a67d", "#f6ecd3"];
39
+ }];
40
+ export type PaletteId = (typeof ramps)[number]['id'];
41
+ export declare const DUOTONE_PALETTES: readonly Readonly<{
42
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
43
+ id: "fire";
44
+ } | {
45
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
46
+ id: "ocean";
47
+ } | {
48
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
49
+ id: "viridis";
50
+ } | {
51
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
52
+ id: "plasma";
53
+ } | {
54
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
55
+ id: "sunset";
56
+ } | {
57
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
58
+ id: "forest";
59
+ } | {
60
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
61
+ id: "lavender";
62
+ } | {
63
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
64
+ id: "rose";
65
+ } | {
66
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
67
+ id: "amber";
68
+ } | {
69
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
70
+ id: "ice";
71
+ } | {
72
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
73
+ id: "mono";
74
+ } | {
75
+ colors: readonly ("#000000" | "#b41414" | "#ffdc32" | "#ffffff" | "#071b40" | "#125ec0" | "#22c8db" | "#e6fbff" | "#440154" | "#3b528b" | "#21918c" | "#5ec962" | "#fde725" | "#0d0887" | "#7e03a8" | "#cc4778" | "#f89540" | "#f0f921" | "#25124d" | "#b83c75" | "#ff9a62" | "#ffe9a8" | "#082b25" | "#287c4b" | "#9bc86b" | "#eff9bc" | "#251c48" | "#7561ae" | "#c7a4dd" | "#f7eafa" | "#39172a" | "#a03562" | "#eb8caa" | "#ffe6df" | "#291a0b" | "#946018" | "#e5b64c" | "#fff1bd" | "#122c46" | "#447f9f" | "#a3dbe3" | "#f1ffff" | "#24170f" | "#806044" | "#c3a67d" | "#f6ecd3")[];
76
+ id: "sepia";
77
+ }>[];
78
+ export type HoloStickerV4Params = Readonly<{
79
+ holoIntensity: number;
80
+ holoDensity: number;
81
+ borderSize: number;
82
+ topRightPeel: boolean;
83
+ edgeMaterial: 'holographic' | 'white';
84
+ }>;
85
+ export type MotionBlurV4Params = Readonly<{
86
+ blurType: 'linear';
87
+ strength: number;
88
+ direction: number;
89
+ } | {
90
+ blurType: 'radial' | 'zoom';
91
+ strength: number;
92
+ }>;
93
+ export type HalftoneV4Params = Readonly<{
94
+ dotSize: number;
95
+ inkAmount: number;
96
+ softness: number;
97
+ }>;
98
+ export type DuotoneV4Params = Readonly<{
99
+ preset: PaletteId;
100
+ intensity: number;
101
+ } | {
102
+ preset: 'custom';
103
+ intensity: number;
104
+ shadowColor: string;
105
+ highlightColor: string;
106
+ }>;
107
+ export type V4ParamsById = {
108
+ holo_sticker: HoloStickerV4Params;
109
+ motion_blur: MotionBlurV4Params;
110
+ halftone: HalftoneV4Params;
111
+ duotone: DuotoneV4Params;
112
+ };
113
+ export type V4ImageEffectParams = {
114
+ [K in V4EffectId]: Readonly<{
115
+ schemaVersion: 1;
116
+ effectVersion: '4';
117
+ execution: 'browser';
118
+ effectId: K;
119
+ params: V4ParamsById[K];
120
+ }>;
121
+ }[V4EffectId];
122
+ export type EffectControl = Readonly<{
123
+ key: string;
124
+ kind: 'number' | 'color' | 'select' | 'boolean' | 'palette' | 'material';
125
+ min?: number;
126
+ max?: number;
127
+ step?: number;
128
+ unit?: string;
129
+ options?: readonly string[];
130
+ }>;
131
+ export declare const V4_DEFAULTS: {
132
+ holo_sticker: {
133
+ holoIntensity: number;
134
+ holoDensity: number;
135
+ borderSize: number;
136
+ topRightPeel: true;
137
+ edgeMaterial: "holographic";
138
+ };
139
+ motion_blur: {
140
+ blurType: "linear";
141
+ strength: number;
142
+ direction: number;
143
+ };
144
+ halftone: {
145
+ dotSize: number;
146
+ inkAmount: number;
147
+ softness: number;
148
+ };
149
+ duotone: {
150
+ preset: "ocean";
151
+ intensity: number;
152
+ };
153
+ };
154
+ export declare function isV4EffectId(id: unknown): id is V4EffectId;
155
+ export declare function v4Controls(id: V4EffectId, params: Readonly<Record<string, unknown>>): readonly EffectControl[];
156
+ export declare function parseV4Params(id: V4EffectId, input: Readonly<Record<string, unknown>>): V4ImageEffectParams;
157
+ export {};
@@ -0,0 +1,20 @@
1
+ import { type EffectControl, type HoloStickerV4Params } from './profiles-v4';
2
+ type CommonHoloParams = Omit<HoloStickerV4Params, 'edgeMaterial'>;
3
+ export type HoloStickerV5Params = Readonly<CommonHoloParams & ({
4
+ edgeMaterial: 'holographic' | 'white';
5
+ } | {
6
+ edgeMaterial: 'custom';
7
+ edgeColor: string;
8
+ })>;
9
+ export type HoloStickerV5Request = Readonly<{
10
+ schemaVersion: 1;
11
+ effectVersion: '5';
12
+ execution: 'browser';
13
+ effectId: 'holo_sticker';
14
+ params: HoloStickerV5Params;
15
+ }>;
16
+ export declare const HOLO_STICKER_V5_CUSTOM_COLOR = "#b8a2dc";
17
+ export declare const HOLO_STICKER_V5_DEFAULTS: HoloStickerV5Params;
18
+ export declare function holoStickerV5Controls(params: Readonly<Record<string, unknown>>): readonly EffectControl[];
19
+ export declare function parseHoloStickerV5Params(input: Readonly<Record<string, unknown>>): HoloStickerV5Request;
20
+ export {};
@@ -0,0 +1,14 @@
1
+ export type XeroxNoiseV6Params = Readonly<{
2
+ threshold: number;
3
+ noise: number;
4
+ ink: number;
5
+ }>;
6
+ export type XeroxNoiseV6Request = Readonly<{
7
+ schemaVersion: 1;
8
+ effectVersion: '6';
9
+ execution: 'browser';
10
+ effectId: 'xerox_noise';
11
+ params: XeroxNoiseV6Params;
12
+ }>;
13
+ export declare const XEROX_NOISE_V6_DEFAULTS: XeroxNoiseV6Params;
14
+ export declare function parseXeroxNoiseV6Params(input: Readonly<Record<string, unknown>>): XeroxNoiseV6Request;
@@ -0,0 +1,53 @@
1
+ import { type XeroxNoiseV6Params } from './profiles-v6';
2
+ import type { EffectControl } from './profiles-v4';
3
+ export declare const XEROX_STYLES: readonly ["clear", "standard", "repeated"];
4
+ export type XeroxStyle = (typeof XEROX_STYLES)[number];
5
+ export type XeroxNoiseV7Params = Readonly<XeroxNoiseV6Params & {
6
+ style: XeroxStyle;
7
+ }>;
8
+ export declare const XEROX_NOISE_V7_DEFAULTS: XeroxNoiseV7Params;
9
+ export type XeroxNoiseV7Request = Readonly<{
10
+ schemaVersion: 1;
11
+ effectVersion: '7';
12
+ execution: 'browser';
13
+ effectId: 'xerox_noise';
14
+ params: XeroxNoiseV7Params;
15
+ }>;
16
+ export declare function parseXeroxNoiseV7Params(input: Readonly<Record<string, unknown>>): XeroxNoiseV7Request;
17
+ export declare const V7_EFFECT_IDS: readonly ["textured_glass", "light_leak", "engraving"];
18
+ export type V7EffectId = (typeof V7_EFFECT_IDS)[number];
19
+ export type V7ParamsById = {
20
+ textured_glass: Readonly<{
21
+ pattern: 'fluted' | 'waves';
22
+ angle: number;
23
+ density: number;
24
+ refraction: number;
25
+ highlight: number;
26
+ }>;
27
+ light_leak: Readonly<{
28
+ position: 'left' | 'right' | 'top' | 'bottom';
29
+ spread: number;
30
+ intensity: number;
31
+ color: string;
32
+ }>;
33
+ engraving: Readonly<{
34
+ density: number;
35
+ angle: number;
36
+ contrast: number;
37
+ inkColor: string;
38
+ paperColor: string;
39
+ }>;
40
+ };
41
+ export type V7ImageEffectParams = {
42
+ [K in V7EffectId]: Readonly<{
43
+ schemaVersion: 1;
44
+ effectVersion: '7';
45
+ execution: 'browser';
46
+ effectId: K;
47
+ params: V7ParamsById[K];
48
+ }>;
49
+ }[V7EffectId];
50
+ export declare const V7_DEFAULTS: Readonly<V7ParamsById>;
51
+ export declare function isV7EffectId(value: unknown): value is V7EffectId;
52
+ export declare function v7Controls(id: V7EffectId, _params?: V7ParamsById[V7EffectId]): EffectControl[];
53
+ export declare function parseV7Params(id: V7EffectId, input: Readonly<Record<string, unknown>>): V7ImageEffectParams;
@@ -0,0 +1,113 @@
1
+ import type { EffectControl } from "./profiles-v4";
2
+ export declare const V8_EFFECT_IDS: readonly ["sparkle", "glow", "lens_flare", "tilt_shift", "paper_texture", "glass_tiles", "watercolor", "dither", "contour_lines", "film_stock", "gradient_map", "tritone", "kaleidoscope", "mirror_collage", "wave_distortion"];
3
+ export type V8EffectId = (typeof V8_EFFECT_IDS)[number];
4
+ export type V8ParamsById = {
5
+ sparkle: Readonly<{
6
+ spacing: number;
7
+ size: number;
8
+ strength: number;
9
+ threshold: number;
10
+ seed: number;
11
+ }>;
12
+ glow: Readonly<{
13
+ radius: number;
14
+ strength: number;
15
+ threshold: number;
16
+ }>;
17
+ lens_flare: Readonly<{
18
+ lightX: number;
19
+ lightY: number;
20
+ size: number;
21
+ strength: number;
22
+ color: string;
23
+ }>;
24
+ tilt_shift: Readonly<{
25
+ center: number;
26
+ width: number;
27
+ angle: number;
28
+ falloff: number;
29
+ strength: number;
30
+ }>;
31
+ paper_texture: Readonly<{
32
+ roughness: number;
33
+ scale: number;
34
+ strength: number;
35
+ seed: number;
36
+ }>;
37
+ glass_tiles: Readonly<{
38
+ count: number;
39
+ refraction: number;
40
+ angle: number;
41
+ highlight: number;
42
+ }>;
43
+ watercolor: Readonly<{
44
+ brushSize: number;
45
+ bleed: number;
46
+ strength: number;
47
+ paper: number;
48
+ seed: number;
49
+ }>;
50
+ dither: Readonly<{
51
+ pattern: "bayer4" | "bayer8";
52
+ cellSize: number;
53
+ threshold: number;
54
+ inkColor: string;
55
+ paperColor: string;
56
+ }>;
57
+ contour_lines: Readonly<{
58
+ levels: number;
59
+ lineWidth: number;
60
+ strength: number;
61
+ inkColor: string;
62
+ }>;
63
+ film_stock: Readonly<{
64
+ preset: "warm" | "cool" | "faded";
65
+ strength: number;
66
+ grain: number;
67
+ fade: number;
68
+ seed: number;
69
+ }>;
70
+ gradient_map: Readonly<{
71
+ shadowColor: string;
72
+ midColor: string;
73
+ highlightColor: string;
74
+ strength: number;
75
+ }>;
76
+ tritone: Readonly<{
77
+ shadowColor: string;
78
+ midColor: string;
79
+ highlightColor: string;
80
+ balance: number;
81
+ softness: number;
82
+ }>;
83
+ kaleidoscope: Readonly<{
84
+ segments: number;
85
+ rotation: number;
86
+ zoom: number;
87
+ }>;
88
+ mirror_collage: Readonly<{
89
+ mode: "horizontal" | "vertical" | "quad";
90
+ centerX: number;
91
+ centerY: number;
92
+ }>;
93
+ wave_distortion: Readonly<{
94
+ mode: "sine" | "ripple";
95
+ amplitude: number;
96
+ frequency: number;
97
+ angle: number;
98
+ }>;
99
+ };
100
+ export type V8ImageEffectParams = {
101
+ [K in V8EffectId]: Readonly<{
102
+ schemaVersion: 1;
103
+ effectVersion: "8";
104
+ execution: "browser";
105
+ effectId: K;
106
+ params: V8ParamsById[K];
107
+ }>;
108
+ }[V8EffectId];
109
+ export declare const V8_DEFAULTS: Readonly<V8ParamsById>;
110
+ export declare function isV8EffectId(value: unknown): value is V8EffectId;
111
+ export declare function v8Controls(id: V8EffectId): EffectControl[];
112
+ export declare function parseV8Params(id: V8EffectId, raw: Readonly<Record<string, unknown>>): V8ImageEffectParams;
113
+ export declare const V8_ALPHA_POLICY: Readonly<Record<V8EffectId, "preserve" | "resample">>;
@@ -0,0 +1,20 @@
1
+ import { type V8ParamsById } from './profiles-v8';
2
+ export type PaperTextureV9Params = V8ParamsById['paper_texture'];
3
+ export type PaperTextureV9Request = Readonly<{
4
+ schemaVersion: 1;
5
+ effectVersion: '9';
6
+ execution: 'browser';
7
+ effectId: 'paper_texture';
8
+ params: PaperTextureV9Params;
9
+ }>;
10
+ export declare const PAPER_TEXTURE_V9_DEFAULTS: PaperTextureV9Params;
11
+ export declare const paperTextureV9Controls: () => Readonly<{
12
+ key: string;
13
+ kind: "number" | "color" | "select" | "boolean" | "palette" | "material";
14
+ min?: number;
15
+ max?: number;
16
+ step?: number;
17
+ unit?: string;
18
+ options?: readonly string[];
19
+ }>[];
20
+ export declare function parsePaperTextureV9Params(raw: Readonly<Record<string, unknown>>): PaperTextureV9Request;