@pixerate/editor 0.96.0 → 0.98.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 (52) hide show
  1. package/THIRD_PARTY_NOTICES.md +4 -2
  2. package/dist/animation-editor/index.cjs +55 -53
  3. package/dist/animation-editor/index.cjs.map +1 -1
  4. package/dist/animation-editor/index.d.cts +3 -2
  5. package/dist/animation-editor/index.d.ts +3 -2
  6. package/dist/animation-editor/index.js +11 -9
  7. package/dist/animation-editor/index.js.map +1 -1
  8. package/dist/chunk-DWGZUSES.cjs +694 -0
  9. package/dist/chunk-DWGZUSES.cjs.map +1 -0
  10. package/dist/chunk-GX332W2C.js +181 -0
  11. package/dist/chunk-GX332W2C.js.map +1 -0
  12. package/dist/{chunk-7MD7C6XQ.cjs → chunk-JF5PXN7W.cjs} +96 -744
  13. package/dist/chunk-JF5PXN7W.cjs.map +1 -0
  14. package/dist/chunk-KKREERP2.js +694 -0
  15. package/dist/chunk-KKREERP2.js.map +1 -0
  16. package/dist/chunk-MUUXNRU4.cjs +181 -0
  17. package/dist/chunk-MUUXNRU4.cjs.map +1 -0
  18. package/dist/{chunk-KFTQ2PKP.js → chunk-WIR377F6.js} +1001 -61
  19. package/dist/chunk-WIR377F6.js.map +1 -0
  20. package/dist/{chunk-T422YCHR.cjs → chunk-WT6ZAWJP.cjs} +1023 -83
  21. package/dist/chunk-WT6ZAWJP.cjs.map +1 -0
  22. package/dist/{chunk-4JLB2USO.js → chunk-YGZNGDIT.js} +45 -693
  23. package/dist/chunk-YGZNGDIT.js.map +1 -0
  24. package/dist/image-editor/index.cjs +1519 -360
  25. package/dist/image-editor/index.cjs.map +1 -1
  26. package/dist/image-editor/index.d.cts +378 -5
  27. package/dist/image-editor/index.d.ts +378 -5
  28. package/dist/image-editor/index.js +1244 -85
  29. package/dist/image-editor/index.js.map +1 -1
  30. package/dist/raster/index.cjs +25 -2
  31. package/dist/raster/index.cjs.map +1 -1
  32. package/dist/raster/index.d.cts +143 -4
  33. package/dist/raster/index.d.ts +143 -4
  34. package/dist/raster/index.js +25 -2
  35. package/dist/{svg-ymShkNtu.d.cts → svg-C9r284x8.d.cts} +6 -9
  36. package/dist/{svg-Dh17jCyA.d.ts → svg-MVKBqwD4.d.ts} +6 -9
  37. package/dist/types-CwMPoRMU.d.cts +40 -0
  38. package/dist/types-CwMPoRMU.d.ts +40 -0
  39. package/dist/vector/index.cjs +490 -554
  40. package/dist/vector/index.cjs.map +1 -1
  41. package/dist/vector/index.d.cts +154 -292
  42. package/dist/vector/index.d.ts +154 -292
  43. package/dist/vector/index.js +91 -155
  44. package/dist/vector/index.js.map +1 -1
  45. package/dist/warp-B8rAguzs.d.ts +165 -0
  46. package/dist/warp-nYs2DPrx.d.cts +165 -0
  47. package/package.json +1 -1
  48. package/skills/pixerate-image-editor/SKILL.md +49 -3
  49. package/dist/chunk-4JLB2USO.js.map +0 -1
  50. package/dist/chunk-7MD7C6XQ.cjs.map +0 -1
  51. package/dist/chunk-KFTQ2PKP.js.map +0 -1
  52. package/dist/chunk-T422YCHR.cjs.map +0 -1
@@ -1,9 +1,13 @@
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.js';
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.js';
1
+ import { RasterLayerBase, RasterMask as RasterMask$1, RasterPixelLayer, GroupBlendMode, LayerLocation as LayerLocation$1, LayerLocks, LayerEffect, GlobalLight, LayerEffects, EffectPattern, RasterSources, RasterCompositor, CompositorOptions, LayerEffectKind, Interpolation } from '../raster/index.js';
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, INTERPOLATIONS, InnerGlowEffect, InnerShadowEffect, LAYER_EFFECT_KINDS, LayerEffectError, MAX_EFFECT_REACH, MAX_TRANSFORM_PIXELS, OuterGlowEffect, PatternOverlayEffect, PatternPlacement, PatternTile, ResampleOptions, SatinEffect, StrokeEffect, StrokePosition, TransformTooLargeError, ZlibError, adler32, base64ToBytes, blendTile, builtinPattern, builtinPatternIds, bytesToBase64, changedTiles, compositeSurfaceOver, curveLut, decodePng, defaultEffectGradient, defaultLayerEffect, deflate, deflateRaw, effectColorHex, effectReach, effectsFingerprint, effectsMargin, effectsScale, encodePng, findLayer, flattenLayers, gaussianBlur, hasActiveEffects, hashNoise, inflate, inflateRaw, insertLayer, isInterpolation, isLayerEffectKind, isLayerLocked, isPng, keysWeight, layerEffectFields, layerEffectLabel, mapLayer, mergeLayerEffect, newEffectId, normalizeLayerEffects, parseDataUrl, parseEffectColor, pngDataUrl, reduceSurface, renderLayerEffects, scaleLayerEffect, transformSurface, transformedBounds, validateEffectGradient, validateLayerEffect, validateLayerEffects, warpSurface } from '../raster/index.js';
3
3
  import { P as PixelSurface, T as TiledSurface, B as BlendMode } from '../surface-DIA-XatS.js';
4
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.js';
5
5
  import { BrushSettings, MixerSettings, MixerLoad, StrokeCoverage, MixerTarget, MixerStroke, StrokeApply, StrokePoint } from '../paint/index.js';
6
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
+ import { Q as Quad, a as WarpMesh, V as Vec2, A as AffineMatrix, H as Homography } from '../types-CwMPoRMU.js';
8
+ export { W as WarpStyle } from '../types-CwMPoRMU.js';
9
+ import { b as WarpPreset } from '../warp-B8rAguzs.js';
10
+ export { W as WARP_STYLES, a as WARP_STYLE_LABELS, c as applyHomography, B as boxQuad, d as dragWarpMeshPoint, e as evalWarpMesh, C as homographyFromAffine, l as homographyFromPoints, q as identityWarpMesh, D as invertHomography, p as pullWarpMesh, E as rectToQuad, h as resizeWarpMesh, u as warpMeshEditPoints, v as warpMeshGridCurves, x as warpMeshParamAt, A as warpPresetMesh } from '../warp-B8rAguzs.js';
7
11
  import { b as LoadReport, J as JsonObject, f as MigrationStep } from '../migrate-iTlm3a8h.js';
8
12
  import { a as AgentToolProvider, A as AgentTool } from '../registry-D-4fit9C.js';
9
13
  import { b as CaptureSurface } from '../capture-wwNGaW05.js';
@@ -213,6 +217,8 @@ interface SerializedRasterMask {
213
217
  density?: number;
214
218
  feather?: number;
215
219
  enabled?: boolean;
220
+ /** `false`: unlinked from the layer's pixels. */
221
+ linked?: boolean;
216
222
  source?: DepthMaskOptions;
217
223
  }
218
224
  interface SerializedLayerBase {
@@ -924,6 +930,11 @@ interface LayerMaskProps {
924
930
  feather?: number;
925
931
  /** Disabled masks are kept but ignored (the layer applies everywhere). Default true. */
926
932
  enabled?: boolean;
933
+ /**
934
+ * Layer masks only: `false` unlinks the mask, so moving or transforming the layer's pixels leaves
935
+ * it in place. Default true. Adjustment-layer masks in canvas space ignore it.
936
+ */
937
+ linked?: boolean;
927
938
  }
928
939
  /**
929
940
  * A clean layer mask from stored data, or `null` when it is unusable. Defaults are left out
@@ -1018,7 +1029,7 @@ declare function ungroupLayer(layers: readonly ImageLayer[], id: string): {
1018
1029
  layers: ImageLayer[];
1019
1030
  ids: string[];
1020
1031
  };
1021
- /** Sets a pixel layer's offset (refused when its position is locked). */
1032
+ /** Sets a pixel layer's offset (refused when its position is locked). An unlinked mask stays in place. */
1022
1033
  declare function offsetLayer(layers: readonly ImageLayer[], id: string, offset: {
1023
1034
  x: number;
1024
1035
  y: number;
@@ -1206,6 +1217,252 @@ declare function psdToLayers(file: PsdFile, options?: PsdImportOptions): PsdImpo
1206
1217
  /** Parses and maps PSD / PSB bytes. Throws `PsdError` for files that cannot be read at all. */
1207
1218
  declare function importPsd(bytes: Uint8Array, options?: PsdImportOptions): PsdImportResult;
1208
1219
 
1220
+ /**
1221
+ * Free Transform geometry for the image editor, as pure functions both the UI bindings and the
1222
+ * agent tools use: a transform is the frame being transformed (`box`, document pixels), where its
1223
+ * four corners land (`corners`, TL, TR, BR, BL) and an optional warp mesh over the box. Scale,
1224
+ * rotate, skew and flips keep the corners a parallelogram (an affine map); Distort and Perspective
1225
+ * move them freely (a projective map); Warp bends the box through a Bézier mesh before the corner
1226
+ * map.
1227
+ *
1228
+ * The maths (homographies, meshes, presets) is shared with the vector editor in `src/geom`.
1229
+ */
1230
+
1231
+ /** Free Transform modes (Edit › Transform). Scale, rotate and skew stay affine. */
1232
+ type FreeTransformMode = 'scale' | 'rotate' | 'skew' | 'distort' | 'perspective' | 'warp';
1233
+ declare const FREE_TRANSFORM_MODES: readonly FreeTransformMode[];
1234
+ /** The nine reference-point positions of the options bar's locator, over the transformed box. */
1235
+ type TransformAnchor = 'top-left' | 'top' | 'top-right' | 'left' | 'center' | 'right' | 'bottom-left' | 'bottom' | 'bottom-right';
1236
+ declare const TRANSFORM_ANCHORS: readonly TransformAnchor[];
1237
+ declare function isTransformAnchor(value: unknown): value is TransformAnchor;
1238
+ /** A transform in progress: the frame, where its corners go and an optional warp over the frame. */
1239
+ interface FreeTransformGeometry {
1240
+ /** The frame being transformed, in document pixels (the content bounds when it began). */
1241
+ box: CropBox;
1242
+ /** Where the frame's corners land: top-left, top-right, bottom-right, bottom-left (document pixels). */
1243
+ corners: Quad;
1244
+ /**
1245
+ * A warp applied in the frame's own space before the corner map: its control points are in
1246
+ * document pixels of the untransformed frame (`identityWarpMesh(box)` is no warp).
1247
+ */
1248
+ warp?: WarpMesh | null;
1249
+ }
1250
+ /** The untransformed geometry of a box. */
1251
+ declare function identityTransform(box: CropBox): FreeTransformGeometry;
1252
+ /** Where `box`'s corners go under the affine `m`. */
1253
+ declare function cornersFromMatrix(box: CropBox, m: AffineMatrix): Quad;
1254
+ /** The affine matrix taking `box` onto `corners` when they form a parallelogram, else `null`. */
1255
+ declare function matrixFromCorners(box: CropBox, corners: Quad, eps?: number): AffineMatrix | null;
1256
+ /** The projective map of the corner move (box → corners), or `null` when the corners are degenerate. */
1257
+ declare function transformHomography(geometry: FreeTransformGeometry): Homography | null;
1258
+ /** Whether a warp mesh changes anything (not the identity over the box). */
1259
+ declare function hasWarp(geometry: FreeTransformGeometry): boolean;
1260
+ /** Whether the geometry changes nothing. */
1261
+ declare function isIdentityTransform(geometry: FreeTransformGeometry): boolean;
1262
+ /**
1263
+ * The forward map of the whole transform (document pixels of the source → document pixels of the
1264
+ * result): the warp over the box, then the corner map. `null` where it is undefined.
1265
+ */
1266
+ declare function transformMap(geometry: FreeTransformGeometry): ((p: Vec2) => Vec2 | null) | null;
1267
+ /** A point of the transformed box at box fractions (`fx`, `fy`), warp included. */
1268
+ declare function transformedPoint(geometry: FreeTransformGeometry, fx: number, fy: number): Vec2 | null;
1269
+ /** Where an anchor of the box is after the corner map (the warp ignored). */
1270
+ declare function anchorPoint(geometry: FreeTransformGeometry, anchor: TransformAnchor): Vec2;
1271
+ /** Bounds of the transformed result's outline (document pixels, not rounded). */
1272
+ declare function transformedBox(geometry: FreeTransformGeometry): CropBox | null;
1273
+ /** Free Transform as numbers, as Photoshop's options bar shows it. */
1274
+ interface TransformParams {
1275
+ /** Width in percent of the frame (default 100; negative flips). */
1276
+ scaleX?: number;
1277
+ /** Height in percent of the frame (default 100; negative flips). */
1278
+ scaleY?: number;
1279
+ /** Rotation in degrees, clockwise (default 0). */
1280
+ rotate?: number;
1281
+ /** Horizontal skew in degrees: vertical edges lean right for positive angles (default 0). */
1282
+ skewX?: number;
1283
+ /** Vertical skew in degrees: horizontal edges lean down for positive angles (default 0). */
1284
+ skewY?: number;
1285
+ /** Move after scaling and rotating, in document pixels (default 0). */
1286
+ dx?: number;
1287
+ dy?: number;
1288
+ /** The fixed point of scale, skew and rotation: an anchor of the frame or a document point (default the centre). */
1289
+ reference?: TransformAnchor | Vec2;
1290
+ }
1291
+ /** The reference point of params over a box (default its centre). */
1292
+ declare function referencePoint(box: CropBox, reference: TransformParams['reference']): Vec2;
1293
+ /**
1294
+ * The affine matrix of `params` over `box`: about the reference point, skew, then scale, then
1295
+ * rotate; then the move.
1296
+ */
1297
+ declare function matrixFromParams(box: CropBox, params: TransformParams): AffineMatrix;
1298
+ /** What the options bar shows for a transform. */
1299
+ interface TransformReadout {
1300
+ /** False for Distort, Perspective and Warp: only `bounds` and `corners` then mean anything. */
1301
+ affine: boolean;
1302
+ /** Width and height in percent of the frame. */
1303
+ scaleX: number;
1304
+ scaleY: number;
1305
+ /** Rotation in degrees, clockwise, in (−180, 180]. */
1306
+ rotate: number;
1307
+ /** Horizontal skew in degrees (vertical skew is folded into rotation and scale). */
1308
+ skewX: number;
1309
+ /** Where the reference point is now (document pixels). */
1310
+ x: number;
1311
+ y: number;
1312
+ /** Bounds of the transformed outline. */
1313
+ bounds: CropBox | null;
1314
+ corners: Quad;
1315
+ }
1316
+ /**
1317
+ * Decomposes a transform for the options bar: the linear part as rotate · scale · skew (QR) with
1318
+ * the given reference point. Non-affine geometry reports its bounds and corners only.
1319
+ */
1320
+ declare function describeTransform(geometry: FreeTransformGeometry, reference?: TransformParams['reference']): TransformReadout;
1321
+ /**
1322
+ * Corners for a transform given as numbers relative to the current corners: `params` are applied
1323
+ * after the current affine part (when the corners are a parallelogram) about the reference point
1324
+ * of the current geometry, so typing "rotate 15" rotates the box as it is now.
1325
+ */
1326
+ declare function applyParams(geometry: FreeTransformGeometry, params: TransformParams): Quad;
1327
+ /** Flip of the corners about the box's centre line (horizontal: left ↔ right). */
1328
+ declare function flipCorners(geometry: FreeTransformGeometry, axis: 'horizontal' | 'vertical'): Quad;
1329
+ /** Inverse of `matrixFromCorners` (box space → document) for mapping a document point back into the box. */
1330
+ declare function boxPointOf(geometry: FreeTransformGeometry, p: Vec2): Vec2 | null;
1331
+ /** A warp mesh from a preset over the box (null when it changes nothing). */
1332
+ declare function presetWarp(box: CropBox, preset: WarpPreset): WarpMesh | null;
1333
+ /** Validates a warp mesh for a box: well formed, finite, the right number of points. */
1334
+ declare function isValidWarp(mesh: unknown): mesh is WarpMesh;
1335
+ /** The geometry's affine map when it is one (no warp, a parallelogram), as a homography; else the projective map. */
1336
+ declare function geometryHomography(geometry: FreeTransformGeometry): Homography | null;
1337
+
1338
+ /**
1339
+ * Free Transform sessions: what a transform moves (a layer's pixels with its linked mask, a lone
1340
+ * unlinked mask, the selected pixels as a floating piece, a copy of them on a new layer, or just
1341
+ * the selection outline), a live preview while the geometry changes, and one undo step when it is
1342
+ * committed with full-quality resampling.
1343
+ */
1344
+
1345
+ /**
1346
+ * What a Free Transform moves:
1347
+ * - `layer`: the layer's pixels with its linked mask (or, with `channel: 'mask'` on an unlinked
1348
+ * mask, the mask alone);
1349
+ * - `selection`: the selected pixels (and the same part of a linked mask), lifted and committed
1350
+ * back into the layer; the selection outline moves with them;
1351
+ * - `selection-copy`: Layer via Copy, then the copy is transformed on a new layer above;
1352
+ * - `selection-outline`: Transform Selection, only the outline;
1353
+ * - `auto` (default): `selection` when something is selected, else `layer`.
1354
+ */
1355
+ type FreeTransformContent = 'auto' | 'layer' | 'selection' | 'selection-copy' | 'selection-outline';
1356
+ declare const FREE_TRANSFORM_CONTENTS: readonly FreeTransformContent[];
1357
+ interface FreeTransformInit {
1358
+ /** The layer (default the active one); not needed for `selection-outline`. */
1359
+ layerId?: string;
1360
+ content?: FreeTransformContent;
1361
+ /**
1362
+ * `pixels` (default) moves the pixels with a linked mask; `mask` moves an unlinked mask alone (a
1363
+ * linked one moves with its pixels). Defaults to the active target on the active layer.
1364
+ */
1365
+ channel?: LayerTarget;
1366
+ /** Resampling of the committed result (default bicubic). */
1367
+ interpolation?: Interpolation;
1368
+ }
1369
+ /** How a live preview is drawn (the UI knows these, the controller doesn't). */
1370
+ interface FreeTransformPreview {
1371
+ /** Screen pixels per document pixel: below 1 the preview samples a reduced copy in blocks. */
1372
+ scale?: number;
1373
+ /** Only this part of the document (the visible area) is resampled. */
1374
+ clip?: CropBox;
1375
+ }
1376
+ /** What a committed transform changed. */
1377
+ interface FreeTransformResult {
1378
+ /** The layer that holds the result (the new layer for `selection-copy`; `null` for `selection-outline`). */
1379
+ layerId: string | null;
1380
+ content: Exclude<FreeTransformContent, 'auto'>;
1381
+ /** What moved. */
1382
+ moved: Array<'pixels' | 'mask' | 'selection'>;
1383
+ /** The frame the transform started from (document pixels). */
1384
+ box: CropBox;
1385
+ /** Where the frame's corners went. */
1386
+ corners: FreeTransformGeometry['corners'];
1387
+ /** Document bounds of the moved content after the transform (pixels, or the mask or the outline). */
1388
+ bounds: CropBox | null;
1389
+ /** False when the geometry was the identity and nothing was recorded. */
1390
+ changed: boolean;
1391
+ }
1392
+ /** @internal What the session needs from the controller. */
1393
+ interface FreeTransformHost {
1394
+ layers(): ImageLayer[];
1395
+ activeLayerId(): string | null;
1396
+ activeTarget(): LayerTarget;
1397
+ selection(): SelectionMask | null;
1398
+ canvas(): {
1399
+ width: number;
1400
+ height: number;
1401
+ };
1402
+ /** The pixels a pixel layer composites (the decoded source for the Background). */
1403
+ pixelsOf(layer: PixelLayer): TiledSurface;
1404
+ /** Opaque pre-transform snapshot. */
1405
+ capture(): unknown;
1406
+ /** Shows a live state (no history). */
1407
+ show(layers: ImageLayer[], selection: SelectionMask | null, activeLayerId: string | null): void;
1408
+ /** Records `before` as the undo step of the state now shown. */
1409
+ record(before: unknown): void;
1410
+ /** Puts `before` back (no history). */
1411
+ restore(before: unknown): void;
1412
+ }
1413
+ /** Preview block size for a screen scale: 1 at 100 % and above, then powers of two up to 8. */
1414
+ declare function previewStep(scale: number | undefined): number;
1415
+ /**
1416
+ * A Free Transform in progress (see `ImageEditorController.beginFreeTransform`). Change the
1417
+ * geometry with `update` (each change shows a live preview without history), then `commit()`
1418
+ * (one undo step, resampled at full quality) or `cancel()` (everything back as it was).
1419
+ */
1420
+ declare class FreeTransformSession {
1421
+ private readonly host;
1422
+ readonly content: Exclude<FreeTransformContent, 'auto'>;
1423
+ /** The layer being transformed (`null` for `selection-outline`). */
1424
+ readonly layerId: string | null;
1425
+ /** The new layer of a `selection-copy`. */
1426
+ readonly copyId: string | null;
1427
+ /** The frame (document pixels). */
1428
+ readonly box: CropBox;
1429
+ /** What moves. */
1430
+ readonly moves: ReadonlyArray<'pixels' | 'mask' | 'selection'>;
1431
+ private geometryValue;
1432
+ private interp;
1433
+ private readonly parts;
1434
+ private readonly before;
1435
+ private readonly startLayers;
1436
+ private readonly startSelection;
1437
+ private readonly startActive;
1438
+ /** The stack this session last showed: anything else means the document changed under it. */
1439
+ private shown;
1440
+ private closed;
1441
+ constructor(host: FreeTransformHost, init?: FreeTransformInit);
1442
+ /** The current geometry. */
1443
+ get geometry(): FreeTransformGeometry;
1444
+ get interpolation(): Interpolation;
1445
+ get isOpen(): boolean;
1446
+ private check;
1447
+ /**
1448
+ * Changes the geometry (`corners`, `warp`) or the interpolation and, unless `preview` is `false`,
1449
+ * shows the result live (no history). Returns the geometry.
1450
+ */
1451
+ update(changes: {
1452
+ corners?: FreeTransformGeometry['corners'];
1453
+ warp?: FreeTransformGeometry['warp'];
1454
+ interpolation?: Interpolation;
1455
+ }, preview?: FreeTransformPreview | false): FreeTransformGeometry;
1456
+ /** Resamples every part for the current geometry and shows it (or returns it, for commit). */
1457
+ private resample;
1458
+ private render;
1459
+ /** Finishes the transform with full-quality resampling, as one undo step. */
1460
+ commit(): FreeTransformResult;
1461
+ /** Abandons the transform and puts everything back (no history). */
1462
+ cancel(): void;
1463
+ private result;
1464
+ }
1465
+
1209
1466
  /** Latest serialized schema version (`3`: layers). Documents with the old shape still write 1 or 2. */
1210
1467
  declare const IMAGE_EDITOR_SCHEMA_VERSION: 3;
1211
1468
  /** Changes to an adjustment layer; `params` is merged into the current parameters. */
@@ -1586,7 +1843,7 @@ declare class ImageEditorController {
1586
1843
  addLayerMask(id: string, from?: 'reveal-all' | 'hide-all' | 'selection', props?: LayerMaskProps): RasterMask;
1587
1844
  /** Removes a layer's mask (one undo step). */
1588
1845
  removeLayerMask(id: string): void;
1589
- /** Changes any layer mask's density, feather or enabled flag (pixels kept). Returns the mask. */
1846
+ /** Changes any layer mask's density, feather, enabled or linked flag (pixels kept). Returns the mask. */
1590
1847
  setLayerMaskProps(id: string, props: LayerMaskProps, commitToHistory?: boolean): RasterMask;
1591
1848
  /**
1592
1849
  * Bakes a pixel layer's mask into its pixels (alpha × coverage, including density, feather or
@@ -1602,6 +1859,37 @@ declare class ImageEditorController {
1602
1859
  cut?: boolean;
1603
1860
  name?: string;
1604
1861
  }): string;
1862
+ private openTransform;
1863
+ /** The Free Transform in progress (see `beginFreeTransform`), or `null`. */
1864
+ getFreeTransform(): FreeTransformSession | null;
1865
+ private transformHost;
1866
+ /**
1867
+ * Starts a Free Transform (Edit › Free Transform, Transform Selection, or a transform of a Layer
1868
+ * via Copy): of the layer's pixels with its linked mask, an unlinked mask alone, the selected
1869
+ * pixels or just the selection outline (see `FreeTransformInit`). Change the geometry with
1870
+ * `session.update` (live preview, no history), then `commit()` (one undo step) or `cancel()`.
1871
+ * Refused while another transform is open.
1872
+ */
1873
+ beginFreeTransform(init?: FreeTransformInit): FreeTransformSession;
1874
+ /**
1875
+ * Transforms in one step (agents, scripts): begins a Free Transform for `spec`, sets its corners
1876
+ * from exactly one of `matrix` (document-space affine), `corners` (where the frame's corners go:
1877
+ * distort / perspective) or `params` (scale, rotate, skew and move about a reference point), and
1878
+ * commits it as one undo step. Returns what changed and the new bounds.
1879
+ */
1880
+ transformLayer(spec: FreeTransformInit & {
1881
+ matrix?: AffineMatrix;
1882
+ corners?: Quad;
1883
+ params?: TransformParams;
1884
+ warp?: WarpMesh | WarpPreset | null;
1885
+ }): FreeTransformResult;
1886
+ /** Flips the layer (or its selected pixels, or the outline) about the frame's centre, exactly (one undo step). */
1887
+ flipLayer(axis: 'horizontal' | 'vertical', init?: FreeTransformInit): FreeTransformResult;
1888
+ /**
1889
+ * Rotates by a quarter turn (90 clockwise, −90 counter-clockwise) or 180 about the frame's
1890
+ * centre, snapped so pixels land on whole pixels: exact, no resampling (one undo step).
1891
+ */
1892
+ rotateLayer90(turn: 90 | -90 | 180, init?: FreeTransformInit): FreeTransformResult;
1605
1893
  /** Adds a `develop` or `blur` filter to a pixel layer (one undo step). Returns the layer's filters. */
1606
1894
  addLayerFilter(id: string, filter: Partial<LayerFilter> & {
1607
1895
  kind: LayerFilter['kind'];
@@ -2837,6 +3125,8 @@ interface ImageEditorToolProviderOptions {
2837
3125
  * - Layers, geometry and history: `get_image_info`, `get_histogram`, `update_adjustment_layer`,
2838
3126
  * `remove_adjustment_layer`, `move_adjustment_layer`, `set_crop`, `reset_crop`, `set_rotation`,
2839
3127
  * `flip_image`, `undo_image`, `redo_image` (see `createImageEditTools`).
3128
+ * - Free Transform: `get_transform_frame`, `transform_layer`, `warp_layer`, `transform_selection`,
3129
+ * `flip_layer`, `rotate_layer_90` (see `createImageTransformTools`).
2840
3130
  */
2841
3131
  declare function createImageEditorToolProvider(controller: ImageEditorController, options?: ImageEditorToolProviderOptions): AgentToolProvider;
2842
3132
 
@@ -2993,6 +3283,15 @@ declare function describeLayer(layer: ImageLayer, activeId: string | null, bound
2993
3283
  */
2994
3284
  declare function createImageLayerTools(controller: ImageEditorController): AgentTool[];
2995
3285
 
3286
+ /**
3287
+ * Agent tools for Free Transform in the image editor: `get_transform_frame`, `transform_layer`
3288
+ * (scale, rotate, skew and move as numbers, a matrix, or distort / perspective corners),
3289
+ * `warp_layer` (a preset or a Bézier mesh), `transform_selection` (the outline only),
3290
+ * `flip_layer` and `rotate_layer_90`. Every write is one undo step, resamples tile by tile and
3291
+ * returns the new bounds.
3292
+ */
3293
+ declare function createImageTransformTools(controller: ImageEditorController): AgentTool[];
3294
+
2996
3295
  /** A layer's effects for agents: the master switch, scale, reach and every effect with its settings. */
2997
3296
  declare function describeLayerEffects(effects: LayerEffects): Record<string, unknown>;
2998
3297
  /**
@@ -3248,6 +3547,80 @@ declare function layerMenu(controller: ImageEditorController): LayerMenuItem[];
3248
3547
  /** Runs a menu action on the active layer. Resolves to the error message when it was refused. */
3249
3548
  declare function runLayerMenuAction(controller: ImageEditorController, action: LayerMenuAction): Promise<string | null>;
3250
3549
 
3550
+ /**
3551
+ * The layer effects section's view model, shared by the React and Svelte panels: whether a layer
3552
+ * can take effects, its effect rows, the menu of kinds to add, and per effect a flat list of
3553
+ * controls (sliders, colours, toggles, choices) with how a change maps to `updateLayerEffect`.
3554
+ */
3555
+
3556
+ interface LayerEffectRow {
3557
+ id: string;
3558
+ kind: LayerEffectKind;
3559
+ label: string;
3560
+ enabled: boolean;
3561
+ }
3562
+ interface LayerEffectsPanelModel {
3563
+ /** Whether the layer can carry effects (adjustment layers cannot; a fully locked layer refuses changes). */
3564
+ available: boolean;
3565
+ /** Why not, when unavailable or read-only. */
3566
+ reason?: string;
3567
+ readOnly: boolean;
3568
+ enabled: boolean;
3569
+ /** Scale Effects, 1 = 100 %. */
3570
+ scale: number;
3571
+ rows: LayerEffectRow[];
3572
+ }
3573
+ /** The effects section for `layer`. */
3574
+ declare function layerEffectsPanel(layer: ImageLayer | null | undefined): LayerEffectsPanelModel;
3575
+ /** The fx badge of a layer row: `on` (effects render), `off` (effects but switched off), or `null`. */
3576
+ declare function layerEffectsBadge(layer: ImageLayer): 'on' | 'off' | null;
3577
+ /** The kinds the "Add effect" menu offers, in the Layer Style dialog's order. */
3578
+ declare const LAYER_EFFECT_MENU: ReadonlyArray<{
3579
+ kind: LayerEffectKind;
3580
+ label: string;
3581
+ }>;
3582
+ type EffectControl = {
3583
+ key: string;
3584
+ label: string;
3585
+ type: 'range';
3586
+ min: number;
3587
+ max: number;
3588
+ step: number;
3589
+ value: number; /** Shown and edited as percent (value × 100). */
3590
+ percent?: boolean;
3591
+ unit?: string;
3592
+ } | {
3593
+ key: string;
3594
+ label: string;
3595
+ type: 'color';
3596
+ value: string;
3597
+ } | {
3598
+ key: string;
3599
+ label: string;
3600
+ type: 'checkbox';
3601
+ value: boolean;
3602
+ } | {
3603
+ key: string;
3604
+ label: string;
3605
+ type: 'select';
3606
+ value: string;
3607
+ options: Array<{
3608
+ value: string;
3609
+ label: string;
3610
+ }>;
3611
+ };
3612
+ /**
3613
+ * The controls for one effect, in the Layer Style dialog's order. `patterns` are the document's
3614
+ * patterns (the built-in ones are always offered).
3615
+ */
3616
+ declare function layerEffectControls(e: LayerEffect, patterns?: readonly EffectPattern[]): EffectControl[];
3617
+ /**
3618
+ * The `updateLayerEffect` settings for setting control `key` of `effect` to `value` (a nested
3619
+ * object such as `fill` or `gradient` is replaced whole, with the one field changed). Values are
3620
+ * in the effect's own units (fractions for percent controls).
3621
+ */
3622
+ declare function effectControlChange(effect: LayerEffect, key: string, value: unknown, patterns?: readonly EffectPattern[]): Record<string, unknown>;
3623
+
3251
3624
  /** A Mixer Brush load as tool output: hex colours and the amount left. */
3252
3625
  declare function mixerLoadResult(load: MixerLoad): {
3253
3626
  reservoir: string | null;
@@ -3583,4 +3956,4 @@ declare function psdBytesFromBase64(data: unknown): Uint8Array;
3583
3956
  */
3584
3957
  declare function createImagePsdTools(controller: ImageEditorController): AgentTool[];
3585
3958
 
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 };
3959
+ 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, AffineMatrix, 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 EffectControl, EffectPattern, type ExportOptions, FREE_TRANSFORM_CONTENTS, FREE_TRANSFORM_MODES, type FillOptions, type FreeTransformContent, type FreeTransformGeometry, type FreeTransformHost, type FreeTransformInit, type FreeTransformMode, type FreeTransformPreview, type FreeTransformResult, FreeTransformSession, GUIDED_FILTER_EPS, type GestureModifiers, GlobalLight, type GroupLayer, HISTOGRAM_BINS, HUE_RANGE_LABELS, type HistogramChannel, type HistoryEntryHandle, Homography, 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, Interpolation, type InvertParams, LATEST_PROCESS_VERSION, LAYERED_SCHEMA_VERSION, LAYER_EFFECT_MENU, LEGACY_PROCESS_VERSION, LUMA_709, type LayerBase, type LayerBlendMode, LayerCompositor, LayerEffect, LayerEffectKind, type LayerEffectRow, LayerEffects, type LayerEffectsPanelModel, 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, Quad, 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, TRANSFORM_ANCHORS, type TextAnnotation, type ThresholdParams, TiledSurface, type ToneRangePreset, type TransformAnchor, type TransformParams, type TransformReadout, type UnitLevels, VIBRANCE_GREY, Vec2, type VibranceParams, type ViewportMetrics, WarpMesh, WarpPreset, XYZ_D50_TO_SRGB, activeAdjustmentLayers, addLayerEffect, addLayerFilter, addToHistogram, adjustmentKindLabel, adjustmentLayersKey, adjustmentNodeAsLayer, adjustmentNodeFromLegacy, anchorPoint, annotationLayerFor, annotationLayerName, applyAdjustmentLayers, applyAdjustments, applyBoxBlur, applyDepthMask, applyImageProjectionToContext, applyLegacyAdjustments, applyMatrix3, applyOutputStage, applyParams, applyProcess2Adjustments, applyRegionBlur, applyRegionMosaic, backgroundLayer, baseProjection, blackWhiteGray, blurFilter, borderCoverage, boxMean, boxPointOf, boxToCurvePoint, bradfordAdaptation, buildLayerMaskPlanes, buildToneLut, calculateCropDrag, canvasToImagePoint, clampControlValue, clampCropToImage, colorBalanceChannel, colorRange, combineSelections, compileAdjustmentLayer, computeHistogram, computeSelectionBounds, contractCoverage, controlPosition, controlTrackBackground, cornersFromMatrix, coverageToByte, coveringRect, createAdjustmentLayer, createImageCaptureSurface, createImageEditTools, createImageEditorToolProvider, createImageEffectTools, createImageLayerTools, createImagePaintTools, createImagePsdTools, createImageSelectionTools, createImageTransformTools, createSelectionMask, curveLutFromLevels, curvePointToBox, curveSvgPath, decodeLayerChannel, decodeLayerMask, decodeMergedImage, decodePlanes, decodePngDataUrl, decodeSelectionRle, defaultAdjustmentParams, depthMaskAlpha, depthRasterMask, describeLayer, describeLayerEffects, describeSelection, describeTransform, deserializeEffects, deserializeLayer, deserializeLayers, deserializePatterns, deserializeSelection, developFilter, developFromAdjustments, developTarget, distanceTransform, downloadPsd, dropPlacement, dropZone, duplicateLayer, edgeWidth, effectControlChange, ellipsePoints, ellipseSelection, emptyHistogram, encodeRle, encodeSelectionRle, encodeSurface, evaluateAdjustmentLayers, expandCoverage, exportPsd, featherCoverage, findAdjustmentControl, findLayerControl, flipCorners, formatControlValue, fullSelection, geometryHomography, getAnnotationBounds, getControlPath, getCropCursor, getRotatedSize, getViewportMetrics, getViewportProjection, globalImageCache, greyMorphology, groupLayers, guidePlanes, guidedFilterColor, handlePaintShortcut, hasResampledLegacyMask, hasWarp, hashMaskContent, hexToRgb, histogramPath, hitTestAnnotation, hitTestCrop, hitTestCurvePoint, hslToRgb, hueRange, hueRangeTables, hueRangeWeight, hueSaturation, identityCurve, identityLevels, identityTransform, imageEditorStateMigrations, imageToCanvasPoint, importPsd, insertCurvePoint, invertMatrix3, invertSelection, isActiveFilter, isAdjustmentKind, isDefaultDepthMask, isIdentityTransform, isLegacyShape, isPaintTool, isQuarterTurn, isQuarterTurnSwapped, isSelectionEmpty, isSelectionMode, isSpatialFilter, isTransformAnchor, isValidWarp, kelvinToTemperature, layerBadge, layerEffectControls, layerEffectsBadge, layerEffectsOf, layerEffectsPanel, layerLabel, layerMaskCoverage, layerMaskFromSelection, layerMaskKey, layerMenu, layerName, layerPanelRows, layerTree, layerTypeLabel, layersFromLegacy, legacyAdjustmentLayer, legacyMaskOf, legacyView, levelsValue, linearSrgbToXy, linearToSrgb, loadImageEditorDocument, magicWand, mapCropHandle, maskSummary, matrixFromCorners, matrixFromParams, 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, presetWarp, previewStep, projectImagePoint, projectImageRect, projectMaskCoverage, projectQuarterTurn, psdBytesFromBase64, psdFileName, psdPatternToEffectPattern, psdToLayers, quickMaskPixels, rangeLightness, rasterMaskFromLegacy, readAdjustmentControls, readPsd, rectSelection, referencePoint, 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, transformHomography, transformMap, transformedBox, transformedPoint, ungroupLayer, unionRect, unprojectCanvasPoint, updateLayerEffect, updateLayerFilter, updateLayerMaskProps, uvToXy, versionedDescriptorBytes, vibranceLinear, vibrancePixel, wbMatrix, whiteBalanceFromSample, whiteBalanceMatrix, withNewIds, writeAdjustmentBlock, writeLfx2, writePatternBlock, writePsd, xyToTempTint, xyToUv };