@pixerate/editor 0.94.0 → 0.96.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 (41) hide show
  1. package/THIRD_PARTY_NOTICES.md +2 -0
  2. package/dist/{chunk-ZOOEX3WT.cjs → chunk-CRMAXIUV.cjs} +369 -7
  3. package/dist/chunk-CRMAXIUV.cjs.map +1 -0
  4. package/dist/{chunk-D4ZCU72J.js → chunk-HEW6KDNI.js} +366 -4
  5. package/dist/chunk-HEW6KDNI.js.map +1 -0
  6. package/dist/{chunk-ISDCJHTO.js → chunk-IB53LVGV.js} +238 -285
  7. package/dist/chunk-IB53LVGV.js.map +1 -0
  8. package/dist/{chunk-747CGOT2.js → chunk-KFTQ2PKP.js} +29 -2
  9. package/dist/chunk-KFTQ2PKP.js.map +1 -0
  10. package/dist/{chunk-73L6TROJ.cjs → chunk-T422YCHR.cjs} +71 -44
  11. package/dist/chunk-T422YCHR.cjs.map +1 -0
  12. package/dist/{chunk-4F3YDIWW.cjs → chunk-ZZOTHJ4K.cjs} +264 -311
  13. package/dist/chunk-ZZOTHJ4K.cjs.map +1 -0
  14. package/dist/image-editor/index.cjs +1832 -632
  15. package/dist/image-editor/index.cjs.map +1 -1
  16. package/dist/image-editor/index.d.cts +179 -22
  17. package/dist/image-editor/index.d.ts +179 -22
  18. package/dist/image-editor/index.js +1463 -263
  19. package/dist/image-editor/index.js.map +1 -1
  20. package/dist/paint/index.cjs +22 -3
  21. package/dist/paint/index.cjs.map +1 -1
  22. package/dist/paint/index.d.cts +117 -2
  23. package/dist/paint/index.d.ts +117 -2
  24. package/dist/paint/index.js +32 -13
  25. package/dist/raster/index.cjs +7 -3
  26. package/dist/raster/index.cjs.map +1 -1
  27. package/dist/raster/index.d.cts +796 -5
  28. package/dist/raster/index.d.ts +796 -5
  29. package/dist/raster/index.js +6 -2
  30. package/dist/{surface-CuBg2c6k.d.cts → surface-DIA-XatS.d.cts} +23 -11
  31. package/dist/{surface-CuBg2c6k.d.ts → surface-DIA-XatS.d.ts} +23 -11
  32. package/package.json +1 -1
  33. package/skills/pixerate-image-editor/SKILL.md +39 -6
  34. package/dist/chunk-4F3YDIWW.cjs.map +0 -1
  35. package/dist/chunk-73L6TROJ.cjs.map +0 -1
  36. package/dist/chunk-747CGOT2.js.map +0 -1
  37. package/dist/chunk-D4ZCU72J.js.map +0 -1
  38. package/dist/chunk-ISDCJHTO.js.map +0 -1
  39. package/dist/chunk-ZOOEX3WT.cjs.map +0 -1
  40. package/dist/zlib-BJ6U7LuB.d.cts +0 -795
  41. package/dist/zlib-BjQkpMFi.d.ts +0 -795
@@ -1,9 +1,9 @@
1
- import { X as RasterLayerBase, Y as RasterMask$1, _ as RasterPixelLayer, z as GroupBlendMode, M as LayerLocation$1, N as LayerLocks, L as LayerEffect, G as GlobalLight, a as LayerEffects, $ as RasterSources, U as RasterCompositor, l as CompositorOptions, t as EffectPattern, K as LayerEffectKind } from '../zlib-BJ6U7LuB.cjs';
2
- export { i as CompositeCallOptions, j as CompositeStats, o as DIRECT_GAUSSIAN_MAX_SIGMA, p as DecodedPng, a3 as ZlibError, a4 as adler32, a5 as base64ToBytes, a6 as blendTile, a9 as bytesToBase64, aa as changedTiles, ab as curveLut, ac as decodePng, af as deflate, ag as deflateRaw, am as encodePng, an as findLayer, ao as flattenLayers, ap as gaussianBlur, as as inflate, at as inflateRaw, au as insertLayer, aw as isLayerLocked, ax as isPng, aA as mapLayer, aE as parseDataUrl, aG as pngDataUrl } from '../zlib-BJ6U7LuB.cjs';
3
- import { P as PixelSurface, h as TiledSurface, B as BlendMode } from '../surface-CuBg2c6k.cjs';
4
- export { a as BLEND_MODES, b as BlendModeInfo, M as MaskSurface, R as RasterRect, c as Rgb, d as Rgba, S as SurfaceDraft, T as TILE, e as TILE_SHIFT, f as Tile, g as TileKey, i as blendChannel, j as blendImageData, k as blendLum, l as blendPixel, m as blendRgb, n as canvasCompositeOperation, o as collectTiles, p as contentBounds, q as emptySurface, r as fillRect, s as finishTile, t as isBlendMode, u as isSeparableBlendMode, v as normalizeBlendMode, w as packRgba, x as readPixel, y as readRegion, z as setLum, A as solidSurface, C as surfaceBytes, D as surfaceFromPixels, E as surfacesEqual, F as tileCoord, G as tileKey, H as tileRect, I as tilesInRect, J as translateSurface, K as uniformTile, L as writeRegion } from '../surface-CuBg2c6k.cjs';
5
- import { BrushSettings, StrokeCoverage, StrokeApply, StrokePoint } from '../paint/index.cjs';
6
- export { CoverageMap, DEFAULT_BRUSH, Dab, DabWalker, MAX_BRUSH_SIZE, PIGMENT_BANDS, PIGMENT_LAMBDA_MIN, PIGMENT_LAMBDA_STEP, PIGMENT_WAVELENGTHS, Pigment, PigmentOptions, PigmentRgb, applyStrokeToTile, coverageTileCoord, createPigment, createPigmentTools, dabCoverage, dabRect, lerpPigment, lerpPigmentInto, mixPigments, normalizeBrush, rasterizeDab, reflectanceToRgb, rgbToReflectance, setPigmentColor, smoothPoints, tipFalloff, tipReach, tipShape, walkDabs } from '../paint/index.cjs';
1
+ import { RasterLayerBase, RasterMask as RasterMask$1, RasterPixelLayer, GroupBlendMode, LayerLocation as LayerLocation$1, LayerLocks, LayerEffect, GlobalLight, LayerEffects, EffectPattern, RasterSources, RasterCompositor, CompositorOptions, LayerEffectKind } from '../raster/index.cjs';
2
+ export { BevelContour, BevelEmbossEffect, BevelStyle, BevelTechnique, BevelTexture, ColorOverlayEffect, CompositeCallOptions, CompositeStats, ContourPoint, DEFAULT_GLOBAL_LIGHT, DIRECT_GAUSSIAN_MAX_SIGMA, DecodedPng, DropShadowEffect, EffectContour, EffectFill, EffectGradient, EffectPatternRef, EffectRect, GlowTechnique, GradientColorStop, GradientOpacityStop, GradientOverlayEffect, GradientStyle, InnerGlowEffect, InnerShadowEffect, LAYER_EFFECT_KINDS, LayerEffectError, MAX_EFFECT_REACH, OuterGlowEffect, PatternOverlayEffect, PatternPlacement, PatternTile, SatinEffect, StrokeEffect, StrokePosition, ZlibError, adler32, base64ToBytes, blendTile, builtinPattern, builtinPatternIds, bytesToBase64, changedTiles, curveLut, decodePng, defaultEffectGradient, defaultLayerEffect, deflate, deflateRaw, effectColorHex, effectReach, effectsFingerprint, effectsMargin, effectsScale, encodePng, findLayer, flattenLayers, gaussianBlur, hasActiveEffects, hashNoise, inflate, inflateRaw, insertLayer, isLayerEffectKind, isLayerLocked, isPng, layerEffectFields, layerEffectLabel, mapLayer, mergeLayerEffect, newEffectId, normalizeLayerEffects, parseDataUrl, parseEffectColor, pngDataUrl, renderLayerEffects, scaleLayerEffect, validateEffectGradient, validateLayerEffect, validateLayerEffects } from '../raster/index.cjs';
3
+ import { P as PixelSurface, T as TiledSurface, B as BlendMode } from '../surface-DIA-XatS.cjs';
4
+ export { a as BLEND_MODES, b as BlendModeInfo, M as MaskSurface, R as RasterRect, c as Rgb, d as Rgba, S as SurfaceDraft, e as TILE, f as TILE_SHIFT, g as Tile, h as TileKey, i as blendChannel, j as blendImageData, k as blendLum, l as blendPixel, m as blendRgb, n as canvasCompositeOperation, o as collectTiles, p as contentBounds, q as emptySurface, r as fillRect, s as finishTile, t as isBlendMode, u as isSeparableBlendMode, v as mixPigment8, w as mixPigmentRgb, x as normalizeBlendMode, y as packRgba, z as readPixel, A as readRegion, C as setLum, D as solidSurface, E as surfaceBytes, F as surfaceFromPixels, G as surfacesEqual, H as tileCoord, I as tileKey, J as tileRect, K as tilesInRect, L as translateSurface, N as uniformTile, O as writeRegion } from '../surface-DIA-XatS.cjs';
5
+ import { BrushSettings, MixerSettings, MixerLoad, StrokeCoverage, MixerTarget, MixerStroke, StrokeApply, StrokePoint } from '../paint/index.cjs';
6
+ export { CoverageMap, DEFAULT_BRUSH, DEFAULT_MIXER, Dab, DabWalker, EMPTY_MIXER_LOAD, MAX_BRUSH_SIZE, MIXER_DRAIN, MIXER_PICKUP_RATE, MIXING_MODELS, MixingModel, PIGMENT_BANDS, PIGMENT_LAMBDA_MIN, PIGMENT_LAMBDA_STEP, PIGMENT_WAVELENGTHS, Pigment, PigmentOptions, PigmentRgb, applyStrokeToTile, cleanMixer, coverageTileCoord, createPigment, createPigmentTools, dabCoverage, dabRect, lerpPigment, lerpPigmentInto, loadMixer, mixPigments, normalizeBrush, normalizeMixer, rasterizeDab, reflectanceToRgb, rgbToReflectance, setPigmentColor, smoothPoints, tipFalloff, tipReach, tipShape, walkDabs } from '../paint/index.cjs';
7
7
  import { b as LoadReport, J as JsonObject, f as MigrationStep } from '../migrate-iTlm3a8h.cjs';
8
8
  import { a as AgentToolProvider, A as AgentTool } from '../registry-BqA1AZt0.cjs';
9
9
  import { b as CaptureSurface } from '../capture-DFEMFmVt.cjs';
@@ -286,7 +286,17 @@ interface SerializedLayeredImageEditorState {
286
286
  selection?: SerializedSelection;
287
287
  /** Global light for layer effects (missing = 120°, 30°). */
288
288
  globalLight?: GlobalLight;
289
+ /** The document's patterns for pattern effects, each an RGBA PNG data URL. */
290
+ patterns?: SerializedPattern[];
289
291
  }
292
+ interface SerializedPattern {
293
+ id: string;
294
+ name: string;
295
+ png: string;
296
+ }
297
+ declare function serializePatterns(patterns: readonly EffectPattern[]): SerializedPattern[];
298
+ /** Reads stored patterns, skipping (and reporting in `problems`) any that cannot be decoded. */
299
+ declare function deserializePatterns(raw: unknown, problems?: string[]): EffectPattern[];
290
300
  interface EncodedSurface {
291
301
  url: string;
292
302
  x: number;
@@ -1174,6 +1184,10 @@ interface PsdImportResult {
1174
1184
  summary: PsdLayerSummary[];
1175
1185
  /** Pixels per inch, when the file says. */
1176
1186
  resolution?: number;
1187
+ /** The patterns embedded in the file (`Patt` / `Pat2` / `Pat3`), which pattern effects use. */
1188
+ patterns: EffectPattern[];
1189
+ /** The global light (image resources 1037 and 1049), when the file has one. */
1190
+ globalLight?: GlobalLight;
1177
1191
  info: {
1178
1192
  psb: boolean;
1179
1193
  depth: number;
@@ -1260,16 +1274,27 @@ interface PaintOptions {
1260
1274
  foreground: string;
1261
1275
  /** `#rrggbb`: what the eraser paints on transparency-locked layers and masks. */
1262
1276
  background: string;
1277
+ /** Mixer Brush options (wet, load, mix, load / clean each stroke, RGB or pigment mixing). */
1278
+ mixer: MixerSettings;
1279
+ /** What the Mixer Brush carries now: its reservoir, how much is left and the picked-up colour. */
1280
+ mixerLoad: MixerLoad;
1263
1281
  }
1282
+ /** Paint tools a stroke can use. */
1283
+ type StrokeTool = 'brush' | 'eraser' | 'mixer';
1264
1284
  /** A stroke: tool, target (default the active layer and target) and brush / colour overrides. */
1265
1285
  interface StrokeInit {
1266
- tool?: 'brush' | 'eraser';
1286
+ tool?: StrokeTool;
1267
1287
  layerId?: string;
1268
1288
  channel?: LayerTarget;
1269
1289
  /** Overrides of the paint options' brush. */
1270
1290
  brush?: Partial<BrushSettings>;
1271
- /** Paint colour (default the foreground). Masks take its grey value. */
1291
+ /**
1292
+ * Paint colour (default the foreground). Masks take its grey value. For the mixer, the colour
1293
+ * the reservoir is loaded with: given, it loads the brush whatever `loadEachStroke` says.
1294
+ */
1272
1295
  color?: string | number[];
1296
+ /** Overrides of the paint options' Mixer Brush settings (tool `mixer`). */
1297
+ mixer?: Partial<MixerSettings>;
1273
1298
  /** Eraser colour on locked transparency / masks (default the background). */
1274
1299
  background?: string | number[];
1275
1300
  /** Kept with the stroke for replays (v1 brushes have no jitter). */
@@ -1293,14 +1318,25 @@ interface PaintStrokeResult {
1293
1318
  /** Document rectangle that changed (null when nothing did). */
1294
1319
  bounds: CropBox | null;
1295
1320
  dabs: number;
1321
+ /** The Mixer Brush's load after the stroke (tool `mixer` only). */
1322
+ mixerLoad?: MixerLoad;
1296
1323
  }
1297
1324
  /** An opaque pre-stroke history snapshot. */
1298
1325
  type HistoryEntryHandle = {
1299
1326
  readonly __historyEntry: unique symbol;
1300
1327
  };
1328
+ /** How a Mixer Brush stroke starts (see `PaintStrokeSession`). */
1329
+ interface MixerStrokeInit {
1330
+ /** Makes the stroke over the session's live pixels. */
1331
+ create(pixels: MixerTarget): MixerStroke;
1332
+ /** Stores the brush load when the stroke ends and returns it (after any clean). */
1333
+ end(load: MixerLoad): MixerLoad;
1334
+ }
1301
1335
  /**
1302
1336
  * A stroke in progress (see `beginStroke`): `push` input points as they arrive, then `end` (one
1303
- * undo step) or `cancel`.
1337
+ * undo step) or `cancel`. Brush and eraser strokes build up a coverage map composited over the
1338
+ * pre-stroke pixels; Mixer Brush strokes paint dab by dab into the live pixels, so each dab picks
1339
+ * up what the dabs before it laid down.
1304
1340
  */
1305
1341
  declare class PaintStrokeSession {
1306
1342
  private readonly controller;
@@ -1309,19 +1345,25 @@ declare class PaintStrokeSession {
1309
1345
  channel: LayerTarget;
1310
1346
  surface: TiledSurface;
1311
1347
  };
1312
- private readonly stroke;
1313
1348
  private readonly apply;
1314
1349
  private readonly before;
1315
1350
  private readonly base;
1316
1351
  private readonly live;
1317
1352
  private readonly touched;
1353
+ private readonly stroke;
1354
+ private readonly mixer;
1355
+ private readonly mixerInit;
1356
+ /** Mixer tiles written since the last update: they get new tile objects so the compositor sees them change. */
1357
+ private readonly fresh;
1318
1358
  private last;
1319
1359
  private closed;
1320
1360
  constructor(controller: ImageEditorController, target: {
1321
1361
  id: string;
1322
1362
  channel: LayerTarget;
1323
1363
  surface: TiledSurface;
1324
- }, stroke: StrokeCoverage, apply: StrokeApply);
1364
+ }, stroke: StrokeCoverage | MixerStrokeInit, apply: StrokeApply);
1365
+ /** The live pixels a mixer stroke reads and writes; base tiles are copied on first write. */
1366
+ private mixerPixels;
1325
1367
  get layerId(): string;
1326
1368
  /** Adds input points (document pixels); the stack shows the stroke so far. */
1327
1369
  push(points: readonly StrokePoint[]): void;
@@ -1586,6 +1628,11 @@ declare class ImageEditorController {
1586
1628
  setLayerEffectsEnabled(id: string, enabled: boolean, scale?: number, commitToHistory?: boolean): LayerEffects;
1587
1629
  /** Replaces a layer's effects (one undo step; `null` removes them). Returns the effects. */
1588
1630
  setLayerEffects(id: string, effects: LayerEffects | null, commitToHistory?: boolean): LayerEffects;
1631
+ private patternIds;
1632
+ /** Changes whenever the document's pattern list is replaced (the compositor then drops its caches). */
1633
+ private patternsVersion;
1634
+ /** The document's patterns (from an opened PSD), besides the built-in ones. */
1635
+ getDocumentPatterns(): EffectPattern[];
1589
1636
  /** The light effects with "use global light" follow. */
1590
1637
  getGlobalLight(): GlobalLight;
1591
1638
  /** Sets the global light (one undo step). `angle` -360..360°, `altitude` 0..90°. Returns it. */
@@ -1617,9 +1664,19 @@ declare class ImageEditorController {
1617
1664
  mask?: boolean;
1618
1665
  }): PixelBuffer | null;
1619
1666
  /** Brush settings, colours and tool options of the paint tools (view state, no undo). */
1620
- setPaintOptions(options: Partial<Omit<PaintOptions, 'brush'>> & {
1667
+ setPaintOptions(options: Partial<Omit<PaintOptions, 'brush' | 'mixer' | 'mixerLoad'>> & {
1621
1668
  brush?: Partial<BrushSettings>;
1669
+ mixer?: Partial<MixerSettings>;
1622
1670
  }): PaintOptions;
1671
+ /**
1672
+ * Loads the Mixer Brush's reservoir full with `color` (default the foreground); the picked-up
1673
+ * colour is kept. View state, no undo. Returns the brush load.
1674
+ */
1675
+ loadMixerBrush(color?: string | number[]): MixerLoad;
1676
+ /** Cleans the Mixer Brush: empties the pickup well (the reservoir is kept). Returns the brush load. */
1677
+ cleanMixerBrush(): MixerLoad;
1678
+ /** Empties the Mixer Brush entirely (no reservoir, nothing picked up). Returns the brush load. */
1679
+ emptyMixerBrush(): MixerLoad;
1623
1680
  /** D: black foreground, white background. */
1624
1681
  resetPaintColors(): void;
1625
1682
  /** X: swaps the foreground and background colours. */
@@ -1635,6 +1692,8 @@ declare class ImageEditorController {
1635
1692
  * without recording history.
1636
1693
  */
1637
1694
  beginStroke(init?: StrokeInit): PaintStrokeSession;
1695
+ /** A Mixer Brush stroke's start: the settings, and the load (refilled when asked or set to). */
1696
+ private mixerStroke;
1638
1697
  /** @internal Shows a stroke's live surface (no history). */
1639
1698
  _strokeUpdate(layerId: string, channel: LayerTarget, surface: TiledSurface, rects: CropBox[]): void;
1640
1699
  /** @internal Commits a finished stroke as one undo step (`before` is the pre-stroke state). */
@@ -1643,7 +1702,7 @@ declare class ImageEditorController {
1643
1702
  _captureForStroke(): HistoryEntryHandle;
1644
1703
  /**
1645
1704
  * Paints a whole stroke in one call (agents, replays): `points` in document pixels with optional
1646
- * pressure, through the brush or eraser. One undo step. Returns the layer, channel, the changed
1705
+ * pressure, through the brush, eraser or Mixer Brush. One undo step. Returns the layer, channel, the changed
1647
1706
  * document bounds and the number of dabs.
1648
1707
  */
1649
1708
  paintStroke(init: StrokeInit & {
@@ -2219,7 +2278,7 @@ interface ImageAnnotation extends BaseAnnotation {
2219
2278
  }
2220
2279
  type Annotation = PenAnnotation | RectAnnotation | CircleAnnotation | ArrowAnnotation | LineAnnotation | TextAnnotation | ImageAnnotation;
2221
2280
  type CreateAnnotationPayload = Omit<PenAnnotation, 'id'> | Omit<RectAnnotation, 'id'> | Omit<CircleAnnotation, 'id'> | Omit<ArrowAnnotation, 'id'> | Omit<LineAnnotation, 'id'> | Omit<TextAnnotation, 'id'> | Omit<ImageAnnotation, 'id'>;
2222
- type ImageEditorTool = 'select' | 'crop' | 'pen' | 'rect' | 'circle' | 'arrow' | 'line' | 'text' | 'watermark' | 'move' | 'brush' | 'eraser';
2281
+ type ImageEditorTool = 'select' | 'crop' | 'pen' | 'rect' | 'circle' | 'arrow' | 'line' | 'text' | 'watermark' | 'move' | 'brush' | 'eraser' | 'mixer';
2223
2282
  type ImageEditorFit = 'contain' | 'margin';
2224
2283
  interface ImageEditorState {
2225
2284
  sourceUrl: string | null;
@@ -2274,6 +2333,11 @@ interface ImageEditorState {
2274
2333
  * missing = angle 120°, altitude 30°. Recorded in undo history and saved in `toJSON()`.
2275
2334
  */
2276
2335
  globalLight?: GlobalLight;
2336
+ /**
2337
+ * The document's patterns (from an opened PSD), which pattern effects use by id besides the
2338
+ * built-in ones. Recorded in undo history and saved in `toJSON()`.
2339
+ */
2340
+ patterns?: EffectPattern[];
2277
2341
  }
2278
2342
  /**
2279
2343
  * A stored editor state in the document-level schema (versions 1 and 2). Documents whose layer
@@ -3184,23 +3248,41 @@ declare function layerMenu(controller: ImageEditorController): LayerMenuItem[];
3184
3248
  /** Runs a menu action on the active layer. Resolves to the error message when it was refused. */
3185
3249
  declare function runLayerMenuAction(controller: ImageEditorController, action: LayerMenuAction): Promise<string | null>;
3186
3250
 
3251
+ /** A Mixer Brush load as tool output: hex colours and the amount left. */
3252
+ declare function mixerLoadResult(load: MixerLoad): {
3253
+ reservoir: string | null;
3254
+ amount: number;
3255
+ pickup: string | null;
3256
+ };
3187
3257
  /**
3188
- * Agent tools for painting: `paint_stroke` (brush or eraser along points, on pixels or a mask),
3189
- * `fill_pixels` and `clear_pixels` (Edit › Fill / Clear inside the selection). Each is one undo
3190
- * step and returns the layer, channel and changed bounds.
3258
+ * Agent tools for painting: `paint_stroke` (brush, Mixer Brush or eraser along points, on pixels
3259
+ * or a mask), `fill_pixels` and `clear_pixels` (Edit › Fill / Clear inside the selection), each
3260
+ * one undo step returning the layer, channel and changed bounds; and the Mixer Brush's load:
3261
+ * `get_mixer_brush`, `load_mixer_brush` and `clean_mixer_brush` (view state, no undo).
3191
3262
  */
3192
3263
  declare function createImagePaintTools(controller: ImageEditorController): AgentTool[];
3193
3264
 
3194
3265
  /**
3195
3266
  * The paint tools' view model, shared by the React and Svelte editors: the brush options bar's
3196
- * controls, Photoshop's shortcuts (B, E, V, [ ], Shift+[ ], number keys, D, X) and a pointer
3197
- * gesture that turns pointer events into strokes (Brush, Eraser) or layer moves (Move).
3267
+ * controls, Photoshop's shortcuts (B, Shift+B, E, V, [ ], Shift+[ ], number keys, D, X) and a
3268
+ * pointer gesture that turns pointer events into strokes (Brush, Mixer Brush, Eraser) or layer
3269
+ * moves (Move).
3198
3270
  */
3199
3271
 
3200
3272
  /** Controls of the brush options bar (`hardness`, `opacity`, `flow`, `smoothing` shown in %). */
3201
3273
  declare const BRUSH_OPTION_CONTROLS: readonly (ControlSpec & {
3202
3274
  id: 'size' | 'hardness' | 'opacity' | 'flow' | 'smoothing';
3203
3275
  })[];
3276
+ /** Controls of the Mixer Brush (shown in %, with the brush controls, while the mixer is active). */
3277
+ declare const MIXER_OPTION_CONTROLS: readonly (ControlSpec & {
3278
+ id: 'wet' | 'load' | 'mix';
3279
+ })[];
3280
+ /** The Mixer Brush's mixing models, for its RGB / Pigment toggle. */
3281
+ declare const MIXER_MIXING_OPTIONS: readonly {
3282
+ id: MixerSettings['mixing'];
3283
+ label: string;
3284
+ title: string;
3285
+ }[];
3204
3286
  /** The paint tools in the toolbar. */
3205
3287
  declare const PAINT_TOOLS: readonly [{
3206
3288
  readonly id: "move";
@@ -3210,6 +3292,10 @@ declare const PAINT_TOOLS: readonly [{
3210
3292
  readonly id: "brush";
3211
3293
  readonly label: "Brush";
3212
3294
  readonly shortcut: "B";
3295
+ }, {
3296
+ readonly id: "mixer";
3297
+ readonly label: "Mixer";
3298
+ readonly shortcut: "Shift+B";
3213
3299
  }, {
3214
3300
  readonly id: "eraser";
3215
3301
  readonly label: "Eraser";
@@ -3217,6 +3303,8 @@ declare const PAINT_TOOLS: readonly [{
3217
3303
  }];
3218
3304
  type PaintTool = (typeof PAINT_TOOLS)[number]['id'];
3219
3305
  declare const isPaintTool: (tool: string) => tool is PaintTool;
3306
+ /** `#rrggbb` of an sRGB triple (0..1), e.g. the Mixer Brush's reservoir. */
3307
+ declare function rgbUnitToHex(c: readonly [number, number, number]): string;
3220
3308
  interface ShortcutEvent {
3221
3309
  key: string;
3222
3310
  shiftKey?: boolean;
@@ -3228,7 +3316,7 @@ interface ShortcutEvent {
3228
3316
  }
3229
3317
  /**
3230
3318
  * Applies a paint shortcut. Returns true when it was one (the caller then prevents the default).
3231
- * B / E / V choose the tool; [ and ] change the size, with Shift the hardness by 25 %; 1..9 set the
3319
+ * B / Shift+B (Mixer Brush) / E / V choose the tool; [ and ] change the size, with Shift the hardness by 25 %; 1..9 set the
3232
3320
  * opacity to 10..90 % and 0 to 100 %; D resets the colours to black and white; X swaps them.
3233
3321
  */
3234
3322
  declare function handlePaintShortcut(controller: ImageEditorController, e: ShortcutEvent): boolean;
@@ -3243,7 +3331,7 @@ declare function pointerPressure(e: {
3243
3331
  pressure?: number;
3244
3332
  }): number;
3245
3333
  /**
3246
- * Turns pointer events into strokes (Brush, Eraser on the active layer's target) or layer moves
3334
+ * Turns pointer events into strokes (Brush, Mixer Brush, Eraser on the active layer's target) or layer moves
3247
3335
  * (Move on the active pixel layer). `down` returns an error message when the tool cannot act.
3248
3336
  */
3249
3337
  declare class PaintGesture {
@@ -3391,16 +3479,85 @@ interface PsdExportInput {
3391
3479
  merged: ArrayLike<number>;
3392
3480
  /** Pixels per inch (default 72). */
3393
3481
  resolution?: number;
3482
+ /** The document's patterns; those the effects use are embedded (built-in ones too). */
3483
+ patterns?: readonly EffectPattern[];
3484
+ /** Written as image resources 1037 and 1049. */
3485
+ globalLight?: GlobalLight;
3394
3486
  }
3395
3487
  interface PsdExportResult {
3396
3488
  bytes: Uint8Array;
3397
3489
  psb: boolean;
3398
3490
  /** Layer records written (group folders and dividers included). */
3399
3491
  records: number;
3492
+ /** One sentence per loss, naming the layers. */
3493
+ warnings: string[];
3400
3494
  }
3401
3495
  /** Writes the prepared stack as PSD (or PSB) bytes. */
3402
3496
  declare function exportPsd(input: PsdExportInput): PsdExportResult;
3403
3497
 
3498
+ interface ParsedLayerEffects {
3499
+ effects: LayerEffects;
3500
+ /** What could not be held exactly (empty when the mapping is exact). */
3501
+ notes: string[];
3502
+ }
3503
+ /**
3504
+ * Parses `lfx2` / `lfxs` / `lmfx` block data (u32 version 0, then a versioned descriptor).
3505
+ * Effects marked `present: false` are left out. Returns `null` when the data is not a descriptor.
3506
+ */
3507
+ declare function parseLfx2(data: Uint8Array): ParsedLayerEffects | null;
3508
+ /**
3509
+ * Writes effects as `lfx2` block data, Scale Effects baked into the sizes (Photoshop's `Scl ` is
3510
+ * written as 100 %). Several instances of one kind go into its multi key
3511
+ * (`dropShadowMulti`, `frameFXMulti` …); kinds without one keep only the first instance.
3512
+ * Returns the data and how many instances had to be left out.
3513
+ */
3514
+ declare function writeLfx2(effects: LayerEffects): {
3515
+ data: Uint8Array;
3516
+ dropped: number;
3517
+ };
3518
+ /** Parses legacy `lrFX` effects: drop / inner shadows, outer / inner glows and solid fill. Bevels are skipped. */
3519
+ declare function parseLrfx(data: Uint8Array): ParsedLayerEffects | null;
3520
+
3521
+ /**
3522
+ * Patterns: the global `Patt` / `Pat2` / `Pat3` tagged blocks (8 / 16 / 32-bit documents), which
3523
+ * pattern overlays, pattern strokes and bevel textures refer to by id.
3524
+ *
3525
+ * ```text
3526
+ * pattern := version u32 (1), image mode u32, height u16, width u16,
3527
+ * name (Unicode string), unique id (Pascal string, unpadded),
3528
+ * [indexed: 768-byte palette], virtual memory array list
3529
+ * VMA list := version u32 (3), length u32, rect (top, left, bottom, right i32),
3530
+ * channel count u32, then count + 2 arrays (user mask, sheet mask)
3531
+ * array := written u32 (0 = absent), length u32 (0 = absent), depth u32, rect,
3532
+ * depth u16, compression u8 (0 raw, 1 PackBits), data
3533
+ * ```
3534
+ *
3535
+ * Each pattern in a block is prefixed by its u32 length and padded to 4 bytes. Photoshop writes
3536
+ * the channel count as 24 and marks only the real channels as written; the first written arrays
3537
+ * are the colour channels and the next one is transparency.
3538
+ */
3539
+
3540
+ /** Pattern block keys, by document depth. */
3541
+ declare const PATTERN_BLOCK_KEYS: string[];
3542
+ /** One pattern tile as stored: planar samples. */
3543
+ interface PsdPattern {
3544
+ mode: number;
3545
+ width: number;
3546
+ height: number;
3547
+ name: string;
3548
+ id: string;
3549
+ palette?: Uint8Array;
3550
+ depth: number;
3551
+ channels: Uint8Array[];
3552
+ alpha?: Uint8Array;
3553
+ }
3554
+ /** The patterns of a `Patt` / `Pat2` / `Pat3` block. Throws `PsdError` on malformed data. */
3555
+ declare function parsePatternBlock(data: Uint8Array): PsdPattern[];
3556
+ /** A stored pattern as straight 8-bit sRGB RGBA, for rendering. */
3557
+ declare function psdPatternToEffectPattern(p: PsdPattern): EffectPattern;
3558
+ /** Writes 8-bit RGB(A) patterns as `Patt` block data (PackBits channels, transparency in the user mask slot). */
3559
+ declare function writePatternBlock(patterns: readonly EffectPattern[]): Uint8Array;
3560
+
3404
3561
  /** Framework-free helpers behind the PSD buttons of the React and Svelte layer panels. */
3405
3562
 
3406
3563
  /** Types the file pickers accept. */
@@ -3426,4 +3583,4 @@ declare function psdBytesFromBase64(data: unknown): Uint8Array;
3426
3583
  */
3427
3584
  declare function createImagePsdTools(controller: ImageEditorController): AgentTool[];
3428
3585
 
3429
- export { ADJUSTMENT_KEYS, ADJUSTMENT_KINDS, ADJUSTMENT_LAYER_CONTROLS, ADJUSTMENT_LAYER_OPACITY_CONTROL, ADJUSTMENT_LUT_SIZE, type AIResultOptions, AS_SHOT_KELVIN, type AdjustmentKind, type AdjustmentKindInfo, type AdjustmentLayer, type AdjustmentLayerBase, type AdjustmentLayerInit, type AdjustmentLayerMask, type AdjustmentLayerNode, type AdjustmentLayerOf, type AdjustmentLayerUpdate, type AdjustmentParamsMap, type Annotation, type AnnotationLayer, type AnnotationPlacement, type AnnotationType, type ArrowAnnotation, type AspectRatio, BACKGROUND_LAYER_ID, BACKGROUND_LAYER_NAME, BLUR_FILTER_ID, BRUSH_OPTION_CONTROLS, type BaseAnnotation, type BlackWhiteParams, BlendMode, type BlurFilter, BrushSettings, type Chromaticity, type CircleAnnotation, type ColorBalanceParams, type ColorBalanceTone, type ColorDistance, type ColorRangeOptions, type ColorRangeSample, CompositorOptions, type CompositorSources, type ControlSection, type ControlSpec, type ControlTrack, type CreateAnnotationPayload, type CropBox, type CropHandle, type CurvePoint, type CurvesParams, D50, D65, DEFAULT_ADJUSTMENTS, DEFAULT_DEPTH_MASK, DEFAULT_REFINE_EDGE_PARAMS, DEFAULT_SELECTION_TOOL_OPTIONS, DEFAULT_TRANSFORM, DEVELOP_FILTER_ID, type DepthMaskOptions, type DescValue, type Descriptor, type DeserializeContext, type DevelopFilter, type DevelopSettings, type DropZone, EMPTY_DISTANCE, type ExportOptions, type FillOptions, GUIDED_FILTER_EPS, type GestureModifiers, type GroupLayer, HISTOGRAM_BINS, HUE_RANGE_LABELS, type HistogramChannel, type HistoryEntryHandle, type HueRange, type HueSaturationParams, IDENTITY_MATRIX3, IMAGE_ADJUSTMENT_CONTROLS, IMAGE_EDITOR_SCHEMA_VERSION, IMAGE_EDITOR_STATE_VERSION, type ImageAdjustments, type ImageAnnotation, type ImageDimensions, type ImageEditorAIHooks, type ImageEditorAssetStore, ImageEditorController, type ImageEditorDocumentLoad, type ImageEditorFit, type ImageEditorOptions, ImageEditorRenderer, type ImageEditorState, type ImageEditorTool, type ImageEditorToolProviderOptions, type ImageHistogram, type ImageLayer, type ImageLayerType, type ImagePoint, type ImageProcessVersion, type ImageProjection, type ImageTransform, type InpaintHook, type InpaintOptions, type InvertParams, LATEST_PROCESS_VERSION, LAYERED_SCHEMA_VERSION, LEGACY_PROCESS_VERSION, LUMA_709, type LayerBase, type LayerBlendMode, LayerCompositor, type LayerFilter, type LayerFilterKind, type LayerLocation, LayerLocks, type LayerMaskProps, type LayerMenuAction, type LayerMenuItem, LayerOperationError, type LayerPanelRow, type LayerPlacement, type LayerProperties, type LayerSourcesHost, type LayerStack, type LayerTarget, type LegacyParts, type LegacySerializedImageEditorState, type LegacyViewResult, type LevelsChannel, type LevelsParams, type LineAnnotation, MAX_KELVIN, MIN_KELVIN, MIRED_PER_TEMPERATURE_UNIT, type MagicWandOptions, type Matrix3, type MosaicImageDataLike, type MosaicRegion, PAINT_TOOLS, PSD_BLEND_KEYS, PSD_FILE_ACCEPT, PaintGesture, type PaintOptions, type PaintPointerSample, type PaintStrokeResult, PaintStrokeSession, type PaintTool, type ParsedAdjustment, type PenAnnotation, type PhotoFilterParams, type PixelBuffer, type PixelLayer, type PixelLayerInit, type PixelOp, PixelSurface, type PlaneLayout, type PosterizeParams, type PsdChannel, PsdError, type PsdExportInput, type PsdExportResult, type PsdFile, type PsdHeader, type PsdImportOptions, type PsdImportResult, type PsdLayerMask, type PsdLayerRecord, type PsdLayerSummary, type PsdRect, type PsdResource, type PsdTaggedBlock, type PsdTreeNode, type QuickMaskStyle, REFINE_EDGE_CONTROLS, type RasterMask, type RectAnnotation, type ReferenceItem, type RefineEdgeControl, type RefineEdgeParams, type RemoveBackgroundHook, type RemoveBackgroundOptions, type RenderOptions, type RouteInput, SELECTION_MODES, SELECTION_MODE_LABELS, SELECTION_MODIFY_OPS, SELECTION_TOOLS, SUPPORTED_ADJUSTMENT_KEYS, type SampleOptions, type SelectionChannel, type SelectionCommandOptions, SelectionGesture, type SelectionMask, type SelectionMode, type SelectionModifyOp, type SelectionToolKind, type SelectionToolOptions, type SerializeContext, type SerializedAdjustmentLayer, type SerializedAnnotationLayer, type SerializedGroupLayer, type SerializedImageEditorState, type SerializedLayer, type SerializedLayerEffects, type SerializedLayeredImageEditorState, type SerializedPixelLayer, type SerializedRasterMask, type SerializedSelection, type ShapeSelectionOptions, type ShortcutEvent, StrokeApply, StrokeCoverage, type StrokeInit, StrokePoint, TINT_SCALE, TONE_LUT_SIZE, TONE_RANGE_PRESETS, type TextAnnotation, type ThresholdParams, TiledSurface, type ToneRangePreset, type UnitLevels, VIBRANCE_GREY, type VibranceParams, type ViewportMetrics, XYZ_D50_TO_SRGB, activeAdjustmentLayers, addLayerEffect, addLayerFilter, addToHistogram, adjustmentKindLabel, adjustmentLayersKey, adjustmentNodeAsLayer, adjustmentNodeFromLegacy, annotationLayerFor, annotationLayerName, applyAdjustmentLayers, applyAdjustments, applyBoxBlur, applyDepthMask, applyImageProjectionToContext, applyLegacyAdjustments, applyMatrix3, applyOutputStage, applyProcess2Adjustments, applyRegionBlur, applyRegionMosaic, backgroundLayer, baseProjection, blackWhiteGray, blurFilter, borderCoverage, boxMean, boxToCurvePoint, bradfordAdaptation, buildLayerMaskPlanes, buildToneLut, calculateCropDrag, canvasToImagePoint, clampControlValue, clampCropToImage, colorBalanceChannel, colorRange, combineSelections, compileAdjustmentLayer, computeHistogram, computeSelectionBounds, contractCoverage, controlPosition, controlTrackBackground, coverageToByte, coveringRect, createAdjustmentLayer, createImageCaptureSurface, createImageEditTools, createImageEditorToolProvider, createImageEffectTools, createImageLayerTools, createImagePaintTools, createImagePsdTools, createImageSelectionTools, createSelectionMask, curveLutFromLevels, curvePointToBox, curveSvgPath, decodeLayerChannel, decodeLayerMask, decodeMergedImage, decodePlanes, decodePngDataUrl, decodeSelectionRle, defaultAdjustmentParams, depthMaskAlpha, depthRasterMask, describeLayer, describeLayerEffects, describeSelection, deserializeEffects, deserializeLayer, deserializeLayers, deserializeSelection, developFilter, developFromAdjustments, developTarget, distanceTransform, downloadPsd, dropPlacement, dropZone, duplicateLayer, edgeWidth, ellipsePoints, ellipseSelection, emptyHistogram, encodeRle, encodeSelectionRle, encodeSurface, evaluateAdjustmentLayers, expandCoverage, exportPsd, featherCoverage, findAdjustmentControl, findLayerControl, formatControlValue, fullSelection, getAnnotationBounds, getControlPath, getCropCursor, getRotatedSize, getViewportMetrics, getViewportProjection, globalImageCache, greyMorphology, groupLayers, guidePlanes, guidedFilterColor, handlePaintShortcut, hasResampledLegacyMask, hashMaskContent, hexToRgb, histogramPath, hitTestAnnotation, hitTestCrop, hitTestCurvePoint, hslToRgb, hueRange, hueRangeTables, hueRangeWeight, hueSaturation, identityCurve, identityLevels, imageEditorStateMigrations, imageToCanvasPoint, importPsd, insertCurvePoint, invertMatrix3, invertSelection, isActiveFilter, isAdjustmentKind, isDefaultDepthMask, isLegacyShape, isPaintTool, isQuarterTurn, isQuarterTurnSwapped, isSelectionEmpty, isSelectionMode, isSpatialFilter, kelvinToTemperature, layerBadge, layerEffectsOf, layerLabel, layerMaskCoverage, layerMaskFromSelection, layerMaskKey, layerMenu, layerName, layerPanelRows, layerTree, layerTypeLabel, layersFromLegacy, legacyAdjustmentLayer, legacyMaskOf, legacyView, levelsValue, linearSrgbToXy, linearToSrgb, loadImageEditorDocument, magicWand, mapCropHandle, maskSummary, migrateSerializedImageEditorState, migrateToLayeredState, modifySelection, moveCurvePoint, moveLayer, mulMatrix3, needsLegacyBase, neutralHueRange, newLayerId, normalizeAdjustmentLayer, normalizeAdjustmentLayers, normalizeAngle, normalizeFilter, normalizeLayerMask, normalizeProcessVersion, normalizeRect, normalizeRefineEdgeParams, normalizeStoredAdjustments, offsetLayer, openPsdFile, parseAdjustmentBlock, parseBlend, parseColor, parseSelectionMode, parseVersionedDescriptor, photoFilterMatrix, pixelLayerBounds, pixelLayers, placeLayer, pointerPressure, polygonCoverage, polygonSelection, posterizeValue, projectImagePoint, projectImageRect, projectMaskCoverage, projectQuarterTurn, psdBytesFromBase64, psdFileName, psdToLayers, quickMaskPixels, rangeLightness, rasterMaskFromLegacy, readAdjustmentControls, readPsd, rectSelection, refineCoverage, refineEdgeHalo, refineSelection, removeAlpha, removeCurvePoint, removeLayer, removeLayerEffect, removeLayerFilter, renderLayeredBase, requireLayer, requireUnlocked, resizePixels, resizeSelection, resolveExternalAssets, resolveMosaicRegionBounds, rgbToGray, rgbToHsl, runLayerMenuAction, sampleLut, sampleToneLut, selectionArea, selectionFromCoverage, selectionFromPixels, selectionModeFromModifiers, selectionOutline, selectionToCoverage, selectionToPixels, selectionValueAt, serializeEffects, serializeLayer, serializeLayers, serializeLayersExternal, serializeSelection, setControlPath, setLayerEffects, setLayerEffectsEnabled, setLayerMask, setLayerProperties, shiftCoverage, smoothCoverage, splitOverlayAnnotations, srgb8ToLab, srgbToLinear, sumHistograms, tempTintToXy, temperatureToKelvin, toHex, toneCurve, toneLuts, toneRange, ungroupLayer, unionRect, unprojectCanvasPoint, updateLayerEffect, updateLayerFilter, updateLayerMaskProps, uvToXy, versionedDescriptorBytes, vibranceLinear, vibrancePixel, wbMatrix, whiteBalanceFromSample, whiteBalanceMatrix, withNewIds, writeAdjustmentBlock, writePsd, xyToTempTint, xyToUv };
3586
+ export { ADJUSTMENT_KEYS, ADJUSTMENT_KINDS, ADJUSTMENT_LAYER_CONTROLS, ADJUSTMENT_LAYER_OPACITY_CONTROL, ADJUSTMENT_LUT_SIZE, type AIResultOptions, AS_SHOT_KELVIN, type AdjustmentKind, type AdjustmentKindInfo, type AdjustmentLayer, type AdjustmentLayerBase, type AdjustmentLayerInit, type AdjustmentLayerMask, type AdjustmentLayerNode, type AdjustmentLayerOf, type AdjustmentLayerUpdate, type AdjustmentParamsMap, type Annotation, type AnnotationLayer, type AnnotationPlacement, type AnnotationType, type ArrowAnnotation, type AspectRatio, BACKGROUND_LAYER_ID, BACKGROUND_LAYER_NAME, BLUR_FILTER_ID, BRUSH_OPTION_CONTROLS, type BaseAnnotation, type BlackWhiteParams, BlendMode, type BlurFilter, BrushSettings, type Chromaticity, type CircleAnnotation, type ColorBalanceParams, type ColorBalanceTone, type ColorDistance, type ColorRangeOptions, type ColorRangeSample, CompositorOptions, type CompositorSources, type ControlSection, type ControlSpec, type ControlTrack, type CreateAnnotationPayload, type CropBox, type CropHandle, type CurvePoint, type CurvesParams, D50, D65, DEFAULT_ADJUSTMENTS, DEFAULT_DEPTH_MASK, DEFAULT_REFINE_EDGE_PARAMS, DEFAULT_SELECTION_TOOL_OPTIONS, DEFAULT_TRANSFORM, DEVELOP_FILTER_ID, type DepthMaskOptions, type DescValue, type Descriptor, type DeserializeContext, type DevelopFilter, type DevelopSettings, type DropZone, EMPTY_DISTANCE, EffectPattern, type ExportOptions, type FillOptions, GUIDED_FILTER_EPS, type GestureModifiers, GlobalLight, type GroupLayer, HISTOGRAM_BINS, HUE_RANGE_LABELS, type HistogramChannel, type HistoryEntryHandle, type HueRange, type HueSaturationParams, IDENTITY_MATRIX3, IMAGE_ADJUSTMENT_CONTROLS, IMAGE_EDITOR_SCHEMA_VERSION, IMAGE_EDITOR_STATE_VERSION, type ImageAdjustments, type ImageAnnotation, type ImageDimensions, type ImageEditorAIHooks, type ImageEditorAssetStore, ImageEditorController, type ImageEditorDocumentLoad, type ImageEditorFit, type ImageEditorOptions, ImageEditorRenderer, type ImageEditorState, type ImageEditorTool, type ImageEditorToolProviderOptions, type ImageHistogram, type ImageLayer, type ImageLayerType, type ImagePoint, type ImageProcessVersion, type ImageProjection, type ImageTransform, type InpaintHook, type InpaintOptions, type InvertParams, LATEST_PROCESS_VERSION, LAYERED_SCHEMA_VERSION, LEGACY_PROCESS_VERSION, LUMA_709, type LayerBase, type LayerBlendMode, LayerCompositor, LayerEffect, LayerEffectKind, LayerEffects, type LayerFilter, type LayerFilterKind, type LayerLocation, LayerLocks, type LayerMaskProps, type LayerMenuAction, type LayerMenuItem, LayerOperationError, type LayerPanelRow, type LayerPlacement, type LayerProperties, type LayerSourcesHost, type LayerStack, type LayerTarget, type LegacyParts, type LegacySerializedImageEditorState, type LegacyViewResult, type LevelsChannel, type LevelsParams, type LineAnnotation, MAX_KELVIN, MIN_KELVIN, MIRED_PER_TEMPERATURE_UNIT, MIXER_MIXING_OPTIONS, MIXER_OPTION_CONTROLS, type MagicWandOptions, type Matrix3, MixerLoad, MixerSettings, MixerStroke, type MixerStrokeInit, MixerTarget, type MosaicImageDataLike, type MosaicRegion, PAINT_TOOLS, PATTERN_BLOCK_KEYS, PSD_BLEND_KEYS, PSD_FILE_ACCEPT, PaintGesture, type PaintOptions, type PaintPointerSample, type PaintStrokeResult, PaintStrokeSession, type PaintTool, type ParsedAdjustment, type ParsedLayerEffects, type PenAnnotation, type PhotoFilterParams, type PixelBuffer, type PixelLayer, type PixelLayerInit, type PixelOp, PixelSurface, type PlaneLayout, type PosterizeParams, type PsdChannel, PsdError, type PsdExportInput, type PsdExportResult, type PsdFile, type PsdHeader, type PsdImportOptions, type PsdImportResult, type PsdLayerMask, type PsdLayerRecord, type PsdLayerSummary, type PsdPattern, type PsdRect, type PsdResource, type PsdTaggedBlock, type PsdTreeNode, type QuickMaskStyle, REFINE_EDGE_CONTROLS, type RasterMask, type RectAnnotation, type ReferenceItem, type RefineEdgeControl, type RefineEdgeParams, type RemoveBackgroundHook, type RemoveBackgroundOptions, type RenderOptions, type RouteInput, SELECTION_MODES, SELECTION_MODE_LABELS, SELECTION_MODIFY_OPS, SELECTION_TOOLS, SUPPORTED_ADJUSTMENT_KEYS, type SampleOptions, type SelectionChannel, type SelectionCommandOptions, SelectionGesture, type SelectionMask, type SelectionMode, type SelectionModifyOp, type SelectionToolKind, type SelectionToolOptions, type SerializeContext, type SerializedAdjustmentLayer, type SerializedAnnotationLayer, type SerializedGroupLayer, type SerializedImageEditorState, type SerializedLayer, type SerializedLayerEffects, type SerializedLayeredImageEditorState, type SerializedPattern, type SerializedPixelLayer, type SerializedRasterMask, type SerializedSelection, type ShapeSelectionOptions, type ShortcutEvent, StrokeApply, StrokeCoverage, type StrokeInit, StrokePoint, type StrokeTool, TINT_SCALE, TONE_LUT_SIZE, TONE_RANGE_PRESETS, type TextAnnotation, type ThresholdParams, TiledSurface, type ToneRangePreset, type UnitLevels, VIBRANCE_GREY, type VibranceParams, type ViewportMetrics, XYZ_D50_TO_SRGB, activeAdjustmentLayers, addLayerEffect, addLayerFilter, addToHistogram, adjustmentKindLabel, adjustmentLayersKey, adjustmentNodeAsLayer, adjustmentNodeFromLegacy, annotationLayerFor, annotationLayerName, applyAdjustmentLayers, applyAdjustments, applyBoxBlur, applyDepthMask, applyImageProjectionToContext, applyLegacyAdjustments, applyMatrix3, applyOutputStage, applyProcess2Adjustments, applyRegionBlur, applyRegionMosaic, backgroundLayer, baseProjection, blackWhiteGray, blurFilter, borderCoverage, boxMean, boxToCurvePoint, bradfordAdaptation, buildLayerMaskPlanes, buildToneLut, calculateCropDrag, canvasToImagePoint, clampControlValue, clampCropToImage, colorBalanceChannel, colorRange, combineSelections, compileAdjustmentLayer, computeHistogram, computeSelectionBounds, contractCoverage, controlPosition, controlTrackBackground, coverageToByte, coveringRect, createAdjustmentLayer, createImageCaptureSurface, createImageEditTools, createImageEditorToolProvider, createImageEffectTools, createImageLayerTools, createImagePaintTools, createImagePsdTools, createImageSelectionTools, createSelectionMask, curveLutFromLevels, curvePointToBox, curveSvgPath, decodeLayerChannel, decodeLayerMask, decodeMergedImage, decodePlanes, decodePngDataUrl, decodeSelectionRle, defaultAdjustmentParams, depthMaskAlpha, depthRasterMask, describeLayer, describeLayerEffects, describeSelection, deserializeEffects, deserializeLayer, deserializeLayers, deserializePatterns, deserializeSelection, developFilter, developFromAdjustments, developTarget, distanceTransform, downloadPsd, dropPlacement, dropZone, duplicateLayer, edgeWidth, ellipsePoints, ellipseSelection, emptyHistogram, encodeRle, encodeSelectionRle, encodeSurface, evaluateAdjustmentLayers, expandCoverage, exportPsd, featherCoverage, findAdjustmentControl, findLayerControl, formatControlValue, fullSelection, getAnnotationBounds, getControlPath, getCropCursor, getRotatedSize, getViewportMetrics, getViewportProjection, globalImageCache, greyMorphology, groupLayers, guidePlanes, guidedFilterColor, handlePaintShortcut, hasResampledLegacyMask, hashMaskContent, hexToRgb, histogramPath, hitTestAnnotation, hitTestCrop, hitTestCurvePoint, hslToRgb, hueRange, hueRangeTables, hueRangeWeight, hueSaturation, identityCurve, identityLevels, imageEditorStateMigrations, imageToCanvasPoint, importPsd, insertCurvePoint, invertMatrix3, invertSelection, isActiveFilter, isAdjustmentKind, isDefaultDepthMask, isLegacyShape, isPaintTool, isQuarterTurn, isQuarterTurnSwapped, isSelectionEmpty, isSelectionMode, isSpatialFilter, kelvinToTemperature, layerBadge, layerEffectsOf, layerLabel, layerMaskCoverage, layerMaskFromSelection, layerMaskKey, layerMenu, layerName, layerPanelRows, layerTree, layerTypeLabel, layersFromLegacy, legacyAdjustmentLayer, legacyMaskOf, legacyView, levelsValue, linearSrgbToXy, linearToSrgb, loadImageEditorDocument, magicWand, mapCropHandle, maskSummary, migrateSerializedImageEditorState, migrateToLayeredState, mixerLoadResult, modifySelection, moveCurvePoint, moveLayer, mulMatrix3, needsLegacyBase, neutralHueRange, newLayerId, normalizeAdjustmentLayer, normalizeAdjustmentLayers, normalizeAngle, normalizeFilter, normalizeLayerMask, normalizeProcessVersion, normalizeRect, normalizeRefineEdgeParams, normalizeStoredAdjustments, offsetLayer, openPsdFile, parseAdjustmentBlock, parseBlend, parseColor, parseLfx2, parseLrfx, parsePatternBlock, parseSelectionMode, parseVersionedDescriptor, photoFilterMatrix, pixelLayerBounds, pixelLayers, placeLayer, pointerPressure, polygonCoverage, polygonSelection, posterizeValue, projectImagePoint, projectImageRect, projectMaskCoverage, projectQuarterTurn, psdBytesFromBase64, psdFileName, psdPatternToEffectPattern, psdToLayers, quickMaskPixels, rangeLightness, rasterMaskFromLegacy, readAdjustmentControls, readPsd, rectSelection, refineCoverage, refineEdgeHalo, refineSelection, removeAlpha, removeCurvePoint, removeLayer, removeLayerEffect, removeLayerFilter, renderLayeredBase, requireLayer, requireUnlocked, resizePixels, resizeSelection, resolveExternalAssets, resolveMosaicRegionBounds, rgbToGray, rgbToHsl, rgbUnitToHex, runLayerMenuAction, sampleLut, sampleToneLut, selectionArea, selectionFromCoverage, selectionFromPixels, selectionModeFromModifiers, selectionOutline, selectionToCoverage, selectionToPixels, selectionValueAt, serializeEffects, serializeLayer, serializeLayers, serializeLayersExternal, serializePatterns, serializeSelection, setControlPath, setLayerEffects, setLayerEffectsEnabled, setLayerMask, setLayerProperties, shiftCoverage, smoothCoverage, splitOverlayAnnotations, srgb8ToLab, srgbToLinear, sumHistograms, tempTintToXy, temperatureToKelvin, toHex, toneCurve, toneLuts, toneRange, ungroupLayer, unionRect, unprojectCanvasPoint, updateLayerEffect, updateLayerFilter, updateLayerMaskProps, uvToXy, versionedDescriptorBytes, vibranceLinear, vibrancePixel, wbMatrix, whiteBalanceFromSample, whiteBalanceMatrix, withNewIds, writeAdjustmentBlock, writeLfx2, writePatternBlock, writePsd, xyToTempTint, xyToUv };