@pixerate/editor 0.93.0 → 0.95.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 (43) hide show
  1. package/THIRD_PARTY_NOTICES.md +3 -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-E2ILRYTJ.js +3695 -0
  5. package/dist/chunk-E2ILRYTJ.js.map +1 -0
  6. package/dist/{chunk-D4ZCU72J.js → chunk-HEW6KDNI.js} +366 -4
  7. package/dist/chunk-HEW6KDNI.js.map +1 -0
  8. package/dist/{chunk-ISDCJHTO.js → chunk-IB53LVGV.js} +238 -285
  9. package/dist/chunk-IB53LVGV.js.map +1 -0
  10. package/dist/chunk-T6H3JDGA.cjs +3695 -0
  11. package/dist/chunk-T6H3JDGA.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 +1252 -588
  15. package/dist/image-editor/index.cjs.map +1 -1
  16. package/dist/image-editor/index.d.cts +164 -34
  17. package/dist/image-editor/index.d.ts +164 -34
  18. package/dist/image-editor/index.js +913 -249
  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 +83 -3
  26. package/dist/raster/index.cjs.map +1 -1
  27. package/dist/raster/index.d.cts +99 -348
  28. package/dist/raster/index.d.ts +99 -348
  29. package/dist/raster/index.js +83 -3
  30. package/dist/{surface-fJhkmNQn.d.cts → surface-CgAiXVI3.d.cts} +23 -11
  31. package/dist/{surface-fJhkmNQn.d.ts → surface-CgAiXVI3.d.ts} +23 -11
  32. package/dist/zlib-B3LIoxF-.d.cts +796 -0
  33. package/dist/zlib-eiTEEj1z.d.ts +796 -0
  34. package/package.json +1 -1
  35. package/skills/pixerate-image-editor/SKILL.md +82 -7
  36. package/dist/chunk-4F3YDIWW.cjs.map +0 -1
  37. package/dist/chunk-D4ZCU72J.js.map +0 -1
  38. package/dist/chunk-H543GD6T.cjs +0 -1696
  39. package/dist/chunk-H543GD6T.cjs.map +0 -1
  40. package/dist/chunk-ISDCJHTO.js.map +0 -1
  41. package/dist/chunk-P5TPUNBZ.js +0 -1696
  42. package/dist/chunk-P5TPUNBZ.js.map +0 -1
  43. package/dist/chunk-ZOOEX3WT.cjs.map +0 -1
@@ -1,9 +1,9 @@
1
- import { P as PixelSurface, T as TiledSurface, B as BlendMode } from '../surface-fJhkmNQn.js';
2
- 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 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-fJhkmNQn.js';
3
- import { RasterLayerBase, RasterMask as RasterMask$1, RasterPixelLayer, GroupBlendMode, LayerLocation as LayerLocation$1, LayerLocks, RasterSources, RasterCompositor, CompositorOptions } from '../raster/index.js';
4
- export { CompositeCallOptions, CompositeStats, DIRECT_GAUSSIAN_MAX_SIGMA, DecodedPng, ZlibError, adler32, base64ToBytes, blendTile, bytesToBase64, changedTiles, decodePng, deflate, deflateRaw, encodePng, findLayer, flattenLayers, gaussianBlur, inflate, inflateRaw, insertLayer, isLayerLocked, isPng, mapLayer, parseDataUrl, pngDataUrl } from '../raster/index.js';
5
- import { BrushSettings, StrokeCoverage, StrokeApply, StrokePoint } from '../paint/index.js';
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.js';
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-eiTEEj1z.js';
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-eiTEEj1z.js';
3
+ import { P as PixelSurface, h as TiledSurface, B as BlendMode } from '../surface-CgAiXVI3.js';
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 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-CgAiXVI3.js';
5
+ import { BrushSettings, MixerSettings, MixerLoad, StrokeCoverage, MixerTarget, MixerStroke, StrokeApply, StrokePoint } from '../paint/index.js';
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.js';
7
7
  import { b as LoadReport, J as JsonObject, f as MigrationStep } from '../migrate-iTlm3a8h.js';
8
8
  import { a as AgentToolProvider, A as AgentTool } from '../registry-D-4fit9C.js';
9
9
  import { b as CaptureSurface } from '../capture-wwNGaW05.js';
@@ -224,6 +224,17 @@ interface SerializedLayerBase {
224
224
  clipped?: boolean;
225
225
  mask?: SerializedRasterMask;
226
226
  locks?: LayerLocks;
227
+ effects?: SerializedLayerEffects;
228
+ }
229
+ /** A layer's effects: the effect list as JSON plus the PSD block they came from (base64). */
230
+ interface SerializedLayerEffects {
231
+ enabled: boolean;
232
+ scale?: number;
233
+ items: LayerEffect[];
234
+ psd?: {
235
+ key: string;
236
+ data: string;
237
+ };
227
238
  }
228
239
  interface SerializedPixelLayer extends SerializedLayerBase {
229
240
  type: 'pixel';
@@ -273,6 +284,8 @@ interface SerializedLayeredImageEditorState {
273
284
  /** Blur migrated from a v1 / v2 document with adjustment layers (runs after the layers). */
274
285
  legacyOutputBlur?: number;
275
286
  selection?: SerializedSelection;
287
+ /** Global light for layer effects (missing = 120°, 30°). */
288
+ globalLight?: GlobalLight;
276
289
  }
277
290
  interface EncodedSurface {
278
291
  url: string;
@@ -285,6 +298,9 @@ interface SerializeContext {
285
298
  /** Adds an asset and returns its id. */
286
299
  addAsset(url: string, hint: string): string;
287
300
  }
301
+ declare function serializeEffects(effects: LayerEffects): SerializedLayerEffects;
302
+ /** Reads stored effects (leniently: broken effects are dropped), or `undefined`. */
303
+ declare function deserializeEffects(raw: unknown): LayerEffects | undefined;
288
304
  declare function serializeLayer(layer: ImageLayer, ctx: SerializeContext): SerializedLayer;
289
305
  /** Serializes a layer tree with inline assets (asset ids are derived from layer ids). */
290
306
  declare function serializeLayers(layers: readonly ImageLayer[]): {
@@ -591,6 +607,10 @@ interface LayerSourcesHost {
591
607
  surfaceOf(layer: PixelLayer): PixelSurface;
592
608
  sourceIsOpaque(): boolean;
593
609
  version(): string;
610
+ /** The document's global light for layer effects. */
611
+ globalLight?(): GlobalLight | undefined;
612
+ /** A document pattern for pattern effects (built-in patterns are found without it). */
613
+ pattern?(id: string): EffectPattern | null;
594
614
  }
595
615
 
596
616
  interface ShapeSelectionOptions {
@@ -1004,6 +1024,24 @@ declare function addLayerFilter(layers: readonly ImageLayer[], id: string, filte
1004
1024
  /** Changes one filter of a pixel layer (`changes` merged and validated). */
1005
1025
  declare function updateLayerFilter(layers: readonly ImageLayer[], id: string, filterId: string, changes: Record<string, unknown>): ImageLayer[];
1006
1026
  declare function removeLayerFilter(layers: readonly ImageLayer[], id: string, filterId: string): ImageLayer[];
1027
+ /** A layer's effects, or an empty, enabled list when it has none. */
1028
+ declare function layerEffectsOf(layer: ImageLayer): LayerEffects;
1029
+ /** Replaces a layer's effects (validated); `null` or an empty list without a PSD block removes them. */
1030
+ declare function setLayerEffects(layers: readonly ImageLayer[], id: string, effects: LayerEffects | null): ImageLayer[];
1031
+ /**
1032
+ * Adds an effect of `kind` (Photoshop's defaults with `params` applied) to a layer's effects, at
1033
+ * `index` in the list (default: the end; the first listed of a kind is on top). Returns the stack
1034
+ * and the new effect.
1035
+ */
1036
+ declare function addLayerEffect(layers: readonly ImageLayer[], id: string, kind: LayerEffectKind, params?: Record<string, unknown>, index?: number): {
1037
+ layers: ImageLayer[];
1038
+ effect: LayerEffect;
1039
+ };
1040
+ /** Changes one effect (only the given fields; nested objects replace whole, `null` removes an optional one). */
1041
+ declare function updateLayerEffect(layers: readonly ImageLayer[], id: string, effectId: string, changes: Record<string, unknown>): ImageLayer[];
1042
+ declare function removeLayerEffect(layers: readonly ImageLayer[], id: string, effectId: string): ImageLayer[];
1043
+ /** Sets the master switch and, when given, Scale Effects (0.01..10, 1 = 100 %). */
1044
+ declare function setLayerEffectsEnabled(layers: readonly ImageLayer[], id: string, enabled: boolean, scale?: number): ImageLayer[];
1007
1045
  /** A blend mode check for tools. */
1008
1046
  declare function parseBlend(value: unknown, allowPassThrough?: boolean): BlendMode | 'pass-through' | undefined;
1009
1047
  /** The union of two rectangles (either may be null). */
@@ -1222,16 +1260,27 @@ interface PaintOptions {
1222
1260
  foreground: string;
1223
1261
  /** `#rrggbb`: what the eraser paints on transparency-locked layers and masks. */
1224
1262
  background: string;
1263
+ /** Mixer Brush options (wet, load, mix, load / clean each stroke, RGB or pigment mixing). */
1264
+ mixer: MixerSettings;
1265
+ /** What the Mixer Brush carries now: its reservoir, how much is left and the picked-up colour. */
1266
+ mixerLoad: MixerLoad;
1225
1267
  }
1268
+ /** Paint tools a stroke can use. */
1269
+ type StrokeTool = 'brush' | 'eraser' | 'mixer';
1226
1270
  /** A stroke: tool, target (default the active layer and target) and brush / colour overrides. */
1227
1271
  interface StrokeInit {
1228
- tool?: 'brush' | 'eraser';
1272
+ tool?: StrokeTool;
1229
1273
  layerId?: string;
1230
1274
  channel?: LayerTarget;
1231
1275
  /** Overrides of the paint options' brush. */
1232
1276
  brush?: Partial<BrushSettings>;
1233
- /** Paint colour (default the foreground). Masks take its grey value. */
1277
+ /**
1278
+ * Paint colour (default the foreground). Masks take its grey value. For the mixer, the colour
1279
+ * the reservoir is loaded with: given, it loads the brush whatever `loadEachStroke` says.
1280
+ */
1234
1281
  color?: string | number[];
1282
+ /** Overrides of the paint options' Mixer Brush settings (tool `mixer`). */
1283
+ mixer?: Partial<MixerSettings>;
1235
1284
  /** Eraser colour on locked transparency / masks (default the background). */
1236
1285
  background?: string | number[];
1237
1286
  /** Kept with the stroke for replays (v1 brushes have no jitter). */
@@ -1255,14 +1304,25 @@ interface PaintStrokeResult {
1255
1304
  /** Document rectangle that changed (null when nothing did). */
1256
1305
  bounds: CropBox | null;
1257
1306
  dabs: number;
1307
+ /** The Mixer Brush's load after the stroke (tool `mixer` only). */
1308
+ mixerLoad?: MixerLoad;
1258
1309
  }
1259
1310
  /** An opaque pre-stroke history snapshot. */
1260
1311
  type HistoryEntryHandle = {
1261
1312
  readonly __historyEntry: unique symbol;
1262
1313
  };
1314
+ /** How a Mixer Brush stroke starts (see `PaintStrokeSession`). */
1315
+ interface MixerStrokeInit {
1316
+ /** Makes the stroke over the session's live pixels. */
1317
+ create(pixels: MixerTarget): MixerStroke;
1318
+ /** Stores the brush load when the stroke ends and returns it (after any clean). */
1319
+ end(load: MixerLoad): MixerLoad;
1320
+ }
1263
1321
  /**
1264
1322
  * A stroke in progress (see `beginStroke`): `push` input points as they arrive, then `end` (one
1265
- * undo step) or `cancel`.
1323
+ * undo step) or `cancel`. Brush and eraser strokes build up a coverage map composited over the
1324
+ * pre-stroke pixels; Mixer Brush strokes paint dab by dab into the live pixels, so each dab picks
1325
+ * up what the dabs before it laid down.
1266
1326
  */
1267
1327
  declare class PaintStrokeSession {
1268
1328
  private readonly controller;
@@ -1271,19 +1331,25 @@ declare class PaintStrokeSession {
1271
1331
  channel: LayerTarget;
1272
1332
  surface: TiledSurface;
1273
1333
  };
1274
- private readonly stroke;
1275
1334
  private readonly apply;
1276
1335
  private readonly before;
1277
1336
  private readonly base;
1278
1337
  private readonly live;
1279
1338
  private readonly touched;
1339
+ private readonly stroke;
1340
+ private readonly mixer;
1341
+ private readonly mixerInit;
1342
+ /** Mixer tiles written since the last update: they get new tile objects so the compositor sees them change. */
1343
+ private readonly fresh;
1280
1344
  private last;
1281
1345
  private closed;
1282
1346
  constructor(controller: ImageEditorController, target: {
1283
1347
  id: string;
1284
1348
  channel: LayerTarget;
1285
1349
  surface: TiledSurface;
1286
- }, stroke: StrokeCoverage, apply: StrokeApply);
1350
+ }, stroke: StrokeCoverage | MixerStrokeInit, apply: StrokeApply);
1351
+ /** The live pixels a mixer stroke reads and writes; base tiles are copied on first write. */
1352
+ private mixerPixels;
1287
1353
  get layerId(): string;
1288
1354
  /** Adds input points (document pixels); the stack shows the stroke so far. */
1289
1355
  push(points: readonly StrokePoint[]): void;
@@ -1530,13 +1596,36 @@ declare class ImageEditorController {
1530
1596
  updateLayerFilter(id: string, filterId: string, changes: Record<string, unknown>, commitToHistory?: boolean): LayerFilter[];
1531
1597
  /** Removes one filter (one undo step). Returns the remaining filters. */
1532
1598
  removeLayerFilter(id: string, filterId: string): LayerFilter[];
1599
+ /** A layer's effects (an empty, enabled list when it has none). */
1600
+ getLayerEffects(id: string): LayerEffects;
1601
+ /**
1602
+ * Adds an effect of `kind` with Photoshop's defaults and `params` applied (one undo step), at
1603
+ * `index` in the layer's effect list (default the end). Returns the new effect and the effects.
1604
+ */
1605
+ addLayerEffect(id: string, kind: LayerEffectKind, params?: Record<string, unknown>, index?: number): {
1606
+ effect: LayerEffect;
1607
+ effects: LayerEffects;
1608
+ };
1609
+ /** Changes one effect (one undo step, or none with `commitToHistory = false` during a drag). Returns the effects. */
1610
+ updateLayerEffect(id: string, effectId: string, changes: Record<string, unknown>, commitToHistory?: boolean): LayerEffects;
1611
+ /** Removes one effect (one undo step). Returns the remaining effects. */
1612
+ removeLayerEffect(id: string, effectId: string): LayerEffects;
1613
+ /** Turns a layer's effects on or off as a whole and, when given, sets Scale Effects (one undo step). */
1614
+ setLayerEffectsEnabled(id: string, enabled: boolean, scale?: number, commitToHistory?: boolean): LayerEffects;
1615
+ /** Replaces a layer's effects (one undo step; `null` removes them). Returns the effects. */
1616
+ setLayerEffects(id: string, effects: LayerEffects | null, commitToHistory?: boolean): LayerEffects;
1617
+ /** The light effects with "use global light" follow. */
1618
+ getGlobalLight(): GlobalLight;
1619
+ /** Sets the global light (one undo step). `angle` -360..360°, `altitude` 0..90°. Returns it. */
1620
+ setGlobalLight(light: Partial<GlobalLight>, commitToHistory?: boolean): GlobalLight;
1533
1621
  /** Composites `layers` (in isolation) over `rect` into a surface, loading depth maps first. */
1534
1622
  private compositeToSurface;
1535
1623
  /** Document bounds a layer can paint into (pixel content, annotations, or the canvas for the rest). */
1536
1624
  private paintBounds;
1537
1625
  /**
1538
1626
  * Merge Down: composites a layer onto the pixel layer directly below it (which keeps its name,
1539
- * opacity and blend; masks, fill and filters are baked), as one undo step. Returns the merged id.
1627
+ * opacity and blend; masks, fill, filters and both layers' effects are baked), as one undo step.
1628
+ * Returns the merged id.
1540
1629
  */
1541
1630
  mergeDown(id: string): Promise<string>;
1542
1631
  /**
@@ -1556,9 +1645,19 @@ declare class ImageEditorController {
1556
1645
  mask?: boolean;
1557
1646
  }): PixelBuffer | null;
1558
1647
  /** Brush settings, colours and tool options of the paint tools (view state, no undo). */
1559
- setPaintOptions(options: Partial<Omit<PaintOptions, 'brush'>> & {
1648
+ setPaintOptions(options: Partial<Omit<PaintOptions, 'brush' | 'mixer' | 'mixerLoad'>> & {
1560
1649
  brush?: Partial<BrushSettings>;
1650
+ mixer?: Partial<MixerSettings>;
1561
1651
  }): PaintOptions;
1652
+ /**
1653
+ * Loads the Mixer Brush's reservoir full with `color` (default the foreground); the picked-up
1654
+ * colour is kept. View state, no undo. Returns the brush load.
1655
+ */
1656
+ loadMixerBrush(color?: string | number[]): MixerLoad;
1657
+ /** Cleans the Mixer Brush: empties the pickup well (the reservoir is kept). Returns the brush load. */
1658
+ cleanMixerBrush(): MixerLoad;
1659
+ /** Empties the Mixer Brush entirely (no reservoir, nothing picked up). Returns the brush load. */
1660
+ emptyMixerBrush(): MixerLoad;
1562
1661
  /** D: black foreground, white background. */
1563
1662
  resetPaintColors(): void;
1564
1663
  /** X: swaps the foreground and background colours. */
@@ -1574,6 +1673,8 @@ declare class ImageEditorController {
1574
1673
  * without recording history.
1575
1674
  */
1576
1675
  beginStroke(init?: StrokeInit): PaintStrokeSession;
1676
+ /** A Mixer Brush stroke's start: the settings, and the load (refilled when asked or set to). */
1677
+ private mixerStroke;
1577
1678
  /** @internal Shows a stroke's live surface (no history). */
1578
1679
  _strokeUpdate(layerId: string, channel: LayerTarget, surface: TiledSurface, rects: CropBox[]): void;
1579
1680
  /** @internal Commits a finished stroke as one undo step (`before` is the pre-stroke state). */
@@ -1582,7 +1683,7 @@ declare class ImageEditorController {
1582
1683
  _captureForStroke(): HistoryEntryHandle;
1583
1684
  /**
1584
1685
  * Paints a whole stroke in one call (agents, replays): `points` in document pixels with optional
1585
- * pressure, through the brush or eraser. One undo step. Returns the layer, channel, the changed
1686
+ * pressure, through the brush, eraser or Mixer Brush. One undo step. Returns the layer, channel, the changed
1586
1687
  * document bounds and the number of dabs.
1587
1688
  */
1588
1689
  paintStroke(init: StrokeInit & {
@@ -2158,7 +2259,7 @@ interface ImageAnnotation extends BaseAnnotation {
2158
2259
  }
2159
2260
  type Annotation = PenAnnotation | RectAnnotation | CircleAnnotation | ArrowAnnotation | LineAnnotation | TextAnnotation | ImageAnnotation;
2160
2261
  type CreateAnnotationPayload = Omit<PenAnnotation, 'id'> | Omit<RectAnnotation, 'id'> | Omit<CircleAnnotation, 'id'> | Omit<ArrowAnnotation, 'id'> | Omit<LineAnnotation, 'id'> | Omit<TextAnnotation, 'id'> | Omit<ImageAnnotation, 'id'>;
2161
- type ImageEditorTool = 'select' | 'crop' | 'pen' | 'rect' | 'circle' | 'arrow' | 'line' | 'text' | 'watermark' | 'move' | 'brush' | 'eraser';
2262
+ type ImageEditorTool = 'select' | 'crop' | 'pen' | 'rect' | 'circle' | 'arrow' | 'line' | 'text' | 'watermark' | 'move' | 'brush' | 'eraser' | 'mixer';
2162
2263
  type ImageEditorFit = 'contain' | 'margin';
2163
2264
  interface ImageEditorState {
2164
2265
  sourceUrl: string | null;
@@ -2208,6 +2309,11 @@ interface ImageEditorState {
2208
2309
  legacyOutputBlur?: number;
2209
2310
  /** Brush settings and foreground / background colours of the paint tools (view state). */
2210
2311
  paint: PaintOptions;
2312
+ /**
2313
+ * The light layer effects use when they follow the global light (Photoshop's Global Light);
2314
+ * missing = angle 120°, altitude 30°. Recorded in undo history and saved in `toJSON()`.
2315
+ */
2316
+ globalLight?: GlobalLight;
2211
2317
  }
2212
2318
  /**
2213
2319
  * A stored editor state in the document-level schema (versions 1 and 2). Documents whose layer
@@ -2504,15 +2610,6 @@ declare function createAdjustmentLayer<K extends AdjustmentKind>(kind: K, option
2504
2610
  declare function normalizeAdjustmentLayer(raw: unknown): AdjustmentLayer | null;
2505
2611
  /** Normalises a stored layer list (drops unknown kinds, de-duplicates ids). */
2506
2612
  declare function normalizeAdjustmentLayers(raw: unknown): AdjustmentLayer[];
2507
- /**
2508
- * Photoshop curve: a natural cubic spline through the points (0..1 in and out; it may overshoot
2509
- * between points, as Photoshop's does), constant outside the first / last point, clamped to
2510
- * 0..1, sampled into a LUT. Fewer than two distinct points: the identity.
2511
- */
2512
- declare function curveLut(points: ReadonlyArray<{
2513
- input: number;
2514
- output: number;
2515
- }>, size?: number): Float32Array;
2516
2613
  /** {@link curveLut} for Curves points in levels (0..255). */
2517
2614
  declare function curveLutFromLevels(points: readonly CurvePoint[]): Float32Array;
2518
2615
  /** A Levels record with values in 0..1 (as `levelsValue` takes them). */
@@ -2858,8 +2955,8 @@ declare function createImageEditTools(controller: ImageEditorController): AgentT
2858
2955
  declare function maskSummary(mask: RasterMask | undefined): Record<string, unknown> | null;
2859
2956
  /**
2860
2957
  * A plain description of a layer (and its children) for agents: ids, types, names, document
2861
- * bounds, visibility, opacity, fill, blend, clipping, locks, mask summary and whether it is
2862
- * active. `boundsOf` gives a pixel layer's document bounds.
2958
+ * bounds, visibility, opacity, fill, blend, clipping, locks, mask and effects summaries and
2959
+ * whether it is active. `boundsOf` gives a pixel layer's document bounds.
2863
2960
  */
2864
2961
  declare function describeLayer(layer: ImageLayer, activeId: string | null, boundsOf: (layer: ImageLayer) => CropBox | null): Record<string, unknown>;
2865
2962
  /**
@@ -2872,6 +2969,15 @@ declare function describeLayer(layer: ImageLayer, activeId: string | null, bound
2872
2969
  */
2873
2970
  declare function createImageLayerTools(controller: ImageEditorController): AgentTool[];
2874
2971
 
2972
+ /** A layer's effects for agents: the master switch, scale, reach and every effect with its settings. */
2973
+ declare function describeLayerEffects(effects: LayerEffects): Record<string, unknown>;
2974
+ /**
2975
+ * Agent tools for layer effects: `list_layer_effects`, `add_layer_effect`, `update_layer_effect`,
2976
+ * `remove_layer_effect`, `set_layer_effects_enabled` and `set_global_light`. Each write validates
2977
+ * every setting first, is one undo step and returns the layer's effects after the change.
2978
+ */
2979
+ declare function createImageEffectTools(controller: ImageEditorController): AgentTool[];
2980
+
2875
2981
  /**
2876
2982
  * Region-based mosaic (pixelation) and box-blur filters for redacting or anonymizing
2877
2983
  * rectangular bounding boxes on an ImageData-like buffer.
@@ -3118,23 +3224,41 @@ declare function layerMenu(controller: ImageEditorController): LayerMenuItem[];
3118
3224
  /** Runs a menu action on the active layer. Resolves to the error message when it was refused. */
3119
3225
  declare function runLayerMenuAction(controller: ImageEditorController, action: LayerMenuAction): Promise<string | null>;
3120
3226
 
3227
+ /** A Mixer Brush load as tool output: hex colours and the amount left. */
3228
+ declare function mixerLoadResult(load: MixerLoad): {
3229
+ reservoir: string | null;
3230
+ amount: number;
3231
+ pickup: string | null;
3232
+ };
3121
3233
  /**
3122
- * Agent tools for painting: `paint_stroke` (brush or eraser along points, on pixels or a mask),
3123
- * `fill_pixels` and `clear_pixels` (Edit › Fill / Clear inside the selection). Each is one undo
3124
- * step and returns the layer, channel and changed bounds.
3234
+ * Agent tools for painting: `paint_stroke` (brush, Mixer Brush or eraser along points, on pixels
3235
+ * or a mask), `fill_pixels` and `clear_pixels` (Edit › Fill / Clear inside the selection), each
3236
+ * one undo step returning the layer, channel and changed bounds; and the Mixer Brush's load:
3237
+ * `get_mixer_brush`, `load_mixer_brush` and `clean_mixer_brush` (view state, no undo).
3125
3238
  */
3126
3239
  declare function createImagePaintTools(controller: ImageEditorController): AgentTool[];
3127
3240
 
3128
3241
  /**
3129
3242
  * The paint tools' view model, shared by the React and Svelte editors: the brush options bar's
3130
- * controls, Photoshop's shortcuts (B, E, V, [ ], Shift+[ ], number keys, D, X) and a pointer
3131
- * gesture that turns pointer events into strokes (Brush, Eraser) or layer moves (Move).
3243
+ * controls, Photoshop's shortcuts (B, Shift+B, E, V, [ ], Shift+[ ], number keys, D, X) and a
3244
+ * pointer gesture that turns pointer events into strokes (Brush, Mixer Brush, Eraser) or layer
3245
+ * moves (Move).
3132
3246
  */
3133
3247
 
3134
3248
  /** Controls of the brush options bar (`hardness`, `opacity`, `flow`, `smoothing` shown in %). */
3135
3249
  declare const BRUSH_OPTION_CONTROLS: readonly (ControlSpec & {
3136
3250
  id: 'size' | 'hardness' | 'opacity' | 'flow' | 'smoothing';
3137
3251
  })[];
3252
+ /** Controls of the Mixer Brush (shown in %, with the brush controls, while the mixer is active). */
3253
+ declare const MIXER_OPTION_CONTROLS: readonly (ControlSpec & {
3254
+ id: 'wet' | 'load' | 'mix';
3255
+ })[];
3256
+ /** The Mixer Brush's mixing models, for its RGB / Pigment toggle. */
3257
+ declare const MIXER_MIXING_OPTIONS: readonly {
3258
+ id: MixerSettings['mixing'];
3259
+ label: string;
3260
+ title: string;
3261
+ }[];
3138
3262
  /** The paint tools in the toolbar. */
3139
3263
  declare const PAINT_TOOLS: readonly [{
3140
3264
  readonly id: "move";
@@ -3144,6 +3268,10 @@ declare const PAINT_TOOLS: readonly [{
3144
3268
  readonly id: "brush";
3145
3269
  readonly label: "Brush";
3146
3270
  readonly shortcut: "B";
3271
+ }, {
3272
+ readonly id: "mixer";
3273
+ readonly label: "Mixer";
3274
+ readonly shortcut: "Shift+B";
3147
3275
  }, {
3148
3276
  readonly id: "eraser";
3149
3277
  readonly label: "Eraser";
@@ -3151,6 +3279,8 @@ declare const PAINT_TOOLS: readonly [{
3151
3279
  }];
3152
3280
  type PaintTool = (typeof PAINT_TOOLS)[number]['id'];
3153
3281
  declare const isPaintTool: (tool: string) => tool is PaintTool;
3282
+ /** `#rrggbb` of an sRGB triple (0..1), e.g. the Mixer Brush's reservoir. */
3283
+ declare function rgbUnitToHex(c: readonly [number, number, number]): string;
3154
3284
  interface ShortcutEvent {
3155
3285
  key: string;
3156
3286
  shiftKey?: boolean;
@@ -3162,7 +3292,7 @@ interface ShortcutEvent {
3162
3292
  }
3163
3293
  /**
3164
3294
  * Applies a paint shortcut. Returns true when it was one (the caller then prevents the default).
3165
- * B / E / V choose the tool; [ and ] change the size, with Shift the hardness by 25 %; 1..9 set the
3295
+ * B / Shift+B (Mixer Brush) / E / V choose the tool; [ and ] change the size, with Shift the hardness by 25 %; 1..9 set the
3166
3296
  * opacity to 10..90 % and 0 to 100 %; D resets the colours to black and white; X swaps them.
3167
3297
  */
3168
3298
  declare function handlePaintShortcut(controller: ImageEditorController, e: ShortcutEvent): boolean;
@@ -3177,7 +3307,7 @@ declare function pointerPressure(e: {
3177
3307
  pressure?: number;
3178
3308
  }): number;
3179
3309
  /**
3180
- * Turns pointer events into strokes (Brush, Eraser on the active layer's target) or layer moves
3310
+ * Turns pointer events into strokes (Brush, Mixer Brush, Eraser on the active layer's target) or layer moves
3181
3311
  * (Move on the active pixel layer). `down` returns an error message when the tool cannot act.
3182
3312
  */
3183
3313
  declare class PaintGesture {
@@ -3360,4 +3490,4 @@ declare function psdBytesFromBase64(data: unknown): Uint8Array;
3360
3490
  */
3361
3491
  declare function createImagePsdTools(controller: ImageEditorController): AgentTool[];
3362
3492
 
3363
- 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 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, 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, createImageLayerTools, createImagePaintTools, createImagePsdTools, createImageSelectionTools, createSelectionMask, curveLut, curveLutFromLevels, curvePointToBox, curveSvgPath, decodeLayerChannel, decodeLayerMask, decodeMergedImage, decodePlanes, decodePngDataUrl, decodeSelectionRle, defaultAdjustmentParams, depthMaskAlpha, depthRasterMask, describeLayer, describeSelection, 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, 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, removeLayerFilter, renderLayeredBase, requireLayer, requireUnlocked, resizePixels, resizeSelection, resolveExternalAssets, resolveMosaicRegionBounds, rgbToGray, rgbToHsl, runLayerMenuAction, sampleLut, sampleToneLut, selectionArea, selectionFromCoverage, selectionFromPixels, selectionModeFromModifiers, selectionOutline, selectionToCoverage, selectionToPixels, selectionValueAt, serializeLayer, serializeLayers, serializeLayersExternal, serializeSelection, setControlPath, setLayerMask, setLayerProperties, shiftCoverage, smoothCoverage, splitOverlayAnnotations, srgb8ToLab, srgbToLinear, sumHistograms, tempTintToXy, temperatureToKelvin, toHex, toneCurve, toneLuts, toneRange, ungroupLayer, unionRect, unprojectCanvasPoint, updateLayerFilter, updateLayerMaskProps, uvToXy, versionedDescriptorBytes, vibranceLinear, vibrancePixel, wbMatrix, whiteBalanceFromSample, whiteBalanceMatrix, withNewIds, writeAdjustmentBlock, writePsd, xyToTempTint, xyToUv };
3493
+ 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, MIXER_MIXING_OPTIONS, MIXER_OPTION_CONTROLS, type MagicWandOptions, type Matrix3, MixerLoad, MixerSettings, MixerStroke, type MixerStrokeInit, MixerTarget, 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, 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, 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, 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, rgbUnitToHex, 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 };