rtistree 0.5.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 (181) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +21 -0
  3. package/README.md +99 -0
  4. package/THIRD_PARTY_NOTICES.md +25 -0
  5. package/dist/art-direction.d.ts +77 -0
  6. package/dist/art-direction.js +186 -0
  7. package/dist/art-direction.js.map +1 -0
  8. package/dist/artifacts.d.ts +24 -0
  9. package/dist/artifacts.js +49 -0
  10. package/dist/artifacts.js.map +1 -0
  11. package/dist/assets.d.ts +16 -0
  12. package/dist/assets.js +96 -0
  13. package/dist/assets.js.map +1 -0
  14. package/dist/benchmark.d.ts +76 -0
  15. package/dist/benchmark.js +118 -0
  16. package/dist/benchmark.js.map +1 -0
  17. package/dist/cli.d.ts +2 -0
  18. package/dist/cli.js +300 -0
  19. package/dist/cli.js.map +1 -0
  20. package/dist/commands.d.ts +5315 -0
  21. package/dist/commands.js +591 -0
  22. package/dist/commands.js.map +1 -0
  23. package/dist/components.d.ts +20 -0
  24. package/dist/components.js +98 -0
  25. package/dist/components.js.map +1 -0
  26. package/dist/construction.d.ts +53 -0
  27. package/dist/construction.js +80 -0
  28. package/dist/construction.js.map +1 -0
  29. package/dist/critique.d.ts +44 -0
  30. package/dist/critique.js +45 -0
  31. package/dist/critique.js.map +1 -0
  32. package/dist/detail.d.ts +5 -0
  33. package/dist/detail.js +52 -0
  34. package/dist/detail.js.map +1 -0
  35. package/dist/document.d.ts +64 -0
  36. package/dist/document.js +56 -0
  37. package/dist/document.js.map +1 -0
  38. package/dist/export.d.ts +405 -0
  39. package/dist/export.js +344 -0
  40. package/dist/export.js.map +1 -0
  41. package/dist/font-inspection.d.ts +8 -0
  42. package/dist/font-inspection.js +34 -0
  43. package/dist/font-inspection.js.map +1 -0
  44. package/dist/graphics.d.ts +9 -0
  45. package/dist/graphics.js +72 -0
  46. package/dist/graphics.js.map +1 -0
  47. package/dist/history-storage.d.ts +10 -0
  48. package/dist/history-storage.js +59 -0
  49. package/dist/history-storage.js.map +1 -0
  50. package/dist/index.d.ts +27 -0
  51. package/dist/index.js +28 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/layout.d.ts +18 -0
  54. package/dist/layout.js +155 -0
  55. package/dist/layout.js.map +1 -0
  56. package/dist/loader.d.ts +9 -0
  57. package/dist/loader.js +108 -0
  58. package/dist/loader.js.map +1 -0
  59. package/dist/mcp.d.ts +4 -0
  60. package/dist/mcp.js +223 -0
  61. package/dist/mcp.js.map +1 -0
  62. package/dist/merge.d.ts +6 -0
  63. package/dist/merge.js +49 -0
  64. package/dist/merge.js.map +1 -0
  65. package/dist/native.d.ts +3 -0
  66. package/dist/native.js +6 -0
  67. package/dist/native.js.map +1 -0
  68. package/dist/paint.d.ts +9 -0
  69. package/dist/paint.js +331 -0
  70. package/dist/paint.js.map +1 -0
  71. package/dist/path-edit.d.ts +20 -0
  72. package/dist/path-edit.js +30 -0
  73. package/dist/path-edit.js.map +1 -0
  74. package/dist/pdf-output.d.ts +21 -0
  75. package/dist/pdf-output.js +297 -0
  76. package/dist/pdf-output.js.map +1 -0
  77. package/dist/pipeline.d.ts +39 -0
  78. package/dist/pipeline.js +227 -0
  79. package/dist/pipeline.js.map +1 -0
  80. package/dist/print-scene.d.ts +490 -0
  81. package/dist/print-scene.js +55 -0
  82. package/dist/print-scene.js.map +1 -0
  83. package/dist/production-workflow.d.ts +251 -0
  84. package/dist/production-workflow.js +335 -0
  85. package/dist/production-workflow.js.map +1 -0
  86. package/dist/program-worker.d.ts +1 -0
  87. package/dist/program-worker.js +31 -0
  88. package/dist/program-worker.js.map +1 -0
  89. package/dist/program.d.ts +85 -0
  90. package/dist/program.js +246 -0
  91. package/dist/program.js.map +1 -0
  92. package/dist/project-config.d.ts +91 -0
  93. package/dist/project-config.js +187 -0
  94. package/dist/project-config.js.map +1 -0
  95. package/dist/project.d.ts +897 -0
  96. package/dist/project.js +347 -0
  97. package/dist/project.js.map +1 -0
  98. package/dist/raster-edit.d.ts +61 -0
  99. package/dist/raster-edit.js +91 -0
  100. package/dist/raster-edit.js.map +1 -0
  101. package/dist/raster-studio.d.ts +84 -0
  102. package/dist/raster-studio.js +236 -0
  103. package/dist/raster-studio.js.map +1 -0
  104. package/dist/render.d.ts +79 -0
  105. package/dist/render.js +437 -0
  106. package/dist/render.js.map +1 -0
  107. package/dist/rich-text.d.ts +10 -0
  108. package/dist/rich-text.js +56 -0
  109. package/dist/rich-text.js.map +1 -0
  110. package/dist/schema.d.ts +1912 -0
  111. package/dist/schema.js +571 -0
  112. package/dist/schema.js.map +1 -0
  113. package/dist/spatial.d.ts +10 -0
  114. package/dist/spatial.js +29 -0
  115. package/dist/spatial.js.map +1 -0
  116. package/dist/studio-reference.d.ts +153 -0
  117. package/dist/studio-reference.js +39 -0
  118. package/dist/studio-reference.js.map +1 -0
  119. package/dist/svg.d.ts +5 -0
  120. package/dist/svg.js +315 -0
  121. package/dist/svg.js.map +1 -0
  122. package/dist/techniques.d.ts +74 -0
  123. package/dist/techniques.js +164 -0
  124. package/dist/techniques.js.map +1 -0
  125. package/dist/verify.d.ts +36 -0
  126. package/dist/verify.js +277 -0
  127. package/dist/verify.js.map +1 -0
  128. package/dist/viewport.d.ts +3 -0
  129. package/dist/viewport.js +71 -0
  130. package/dist/viewport.js.map +1 -0
  131. package/dist/workflow.d.ts +53 -0
  132. package/dist/workflow.js +66 -0
  133. package/dist/workflow.js.map +1 -0
  134. package/docs/agent-art-workflow.md +201 -0
  135. package/docs/agent-setup.md +83 -0
  136. package/docs/atelier.md +117 -0
  137. package/docs/cli-reference.md +61 -0
  138. package/docs/decisions/001-runtime-and-renderer.md +35 -0
  139. package/docs/decisions/002-composable-scenes-and-history.md +28 -0
  140. package/docs/decisions/003-editing-refinement-and-agent-validation.md +45 -0
  141. package/docs/decisions/004-print-production-and-projects.md +19 -0
  142. package/docs/decisions/005-programmable-digital-art.md +15 -0
  143. package/docs/decisions/006-staged-2d-art-production.md +13 -0
  144. package/docs/decisions/007-foundation-first-art-direction.md +13 -0
  145. package/docs/decisions/008-agent-onboarding-and-trial-lessons.md +48 -0
  146. package/docs/engine-overview.md +174 -0
  147. package/docs/evolution.md +179 -0
  148. package/docs/getting-started.md +107 -0
  149. package/docs/next-milestone.md +61 -0
  150. package/docs/previews/a3-production.json +36 -0
  151. package/docs/previews/benchmark.json +42 -0
  152. package/docs/previews/landscape.png +0 -0
  153. package/docs/previews/performance.json +24 -0
  154. package/docs/previews/poster.png +0 -0
  155. package/docs/production.md +107 -0
  156. package/docs/releasing.md +60 -0
  157. package/docs/scene-format.md +126 -0
  158. package/docs/studio.md +108 -0
  159. package/examples/hello/README.md +14 -0
  160. package/examples/hello/refine.json +10 -0
  161. package/examples/hello/render.mjs +9 -0
  162. package/examples/hello/scene.json +19 -0
  163. package/licenses/DM-Serif-Display-OFL.txt +93 -0
  164. package/licenses/Inter-OFL.txt +93 -0
  165. package/package.json +84 -0
  166. package/schemas/authoring.schema.json +2177 -0
  167. package/schemas/brief.schema.json +57 -0
  168. package/schemas/command.schema.json +3154 -0
  169. package/schemas/construction.schema.json +159 -0
  170. package/schemas/critique.schema.json +101 -0
  171. package/schemas/document.schema.json +41 -0
  172. package/schemas/export.schema.json +89 -0
  173. package/schemas/fragment.schema.json +1861 -0
  174. package/schemas/patch.schema.json +3177 -0
  175. package/schemas/pipeline.schema.json +205 -0
  176. package/schemas/production.schema.json +452 -0
  177. package/schemas/program.schema.json +152 -0
  178. package/schemas/project.schema.json +115 -0
  179. package/schemas/raster-read.schema.json +42 -0
  180. package/schemas/raster-write.schema.json +75 -0
  181. package/schemas/scene.schema.json +2014 -0
@@ -0,0 +1,897 @@
1
+ import { type ProjectConfig } from './project-config.js';
2
+ import { type VisualCritique } from './critique.js';
3
+ import { type Patch } from './commands.js';
4
+ import { type SceneSource } from './loader.js';
5
+ import { type Renderer, type RenderOptions, type RenderResult } from './render.js';
6
+ import { type Bounds, type Scene } from './schema.js';
7
+ import { type LocalityEvidence } from './verify.js';
8
+ export interface HistoryEntry {
9
+ sequence: number;
10
+ kind: 'apply' | 'undo' | 'redo' | 'rebase';
11
+ baseline?: Scene;
12
+ font_hashes?: Record<string, string>;
13
+ reason: string;
14
+ timestamp: string;
15
+ source_hash: string;
16
+ before_hash: string;
17
+ after_hash: string;
18
+ previous_hash: string | null;
19
+ commands: Patch['commands'];
20
+ asset_hashes: Record<string, string>;
21
+ after: Scene;
22
+ locality: LocalityEvidence[];
23
+ hash: string;
24
+ }
25
+ export declare class Project {
26
+ readonly source: SceneSource;
27
+ readonly renderer: Renderer;
28
+ readonly config?: ProjectConfig | undefined;
29
+ private constructor();
30
+ static open(file: string, renderer?: Renderer): Promise<Project>;
31
+ get root(): string;
32
+ get outputDirectory(): string;
33
+ get journal(): string;
34
+ private state;
35
+ private checkAssets;
36
+ scene(): Promise<Scene>;
37
+ history(): Promise<HistoryEntry[]>;
38
+ render(options?: RenderOptions): Promise<RenderResult>;
39
+ verify(): Promise<import("./verify.js").VerificationReport>;
40
+ recordCritique(raw: unknown): Promise<{
41
+ scene_hash: string;
42
+ png_hash: string;
43
+ reviewer: string;
44
+ method: "human" | "vision-agent";
45
+ summary: string;
46
+ score: number;
47
+ issues: {
48
+ id: string;
49
+ category: "coherence" | "composition" | "lighting" | "semantic" | "texture" | "typography";
50
+ severity: "high" | "low" | "medium";
51
+ target?: string | undefined;
52
+ region?: [number, number, number, number] | undefined;
53
+ message: string;
54
+ suggestion?: string | undefined;
55
+ }[];
56
+ }>;
57
+ critique(): Promise<VisualCritique | null>;
58
+ inspect(): Promise<{
59
+ version: 1;
60
+ hash: string;
61
+ canvas: {
62
+ width: number;
63
+ height: number;
64
+ colour_space: "srgb";
65
+ background: string;
66
+ };
67
+ source_files: string[];
68
+ assets: Record<string, {
69
+ recipe?: {
70
+ source: string;
71
+ hash: string;
72
+ } | undefined;
73
+ type: "generated-image" | "image";
74
+ source: string;
75
+ hash?: string | undefined;
76
+ }>;
77
+ history: {
78
+ entries: number;
79
+ undo: number;
80
+ redo: number;
81
+ };
82
+ layers: {
83
+ id: string;
84
+ type: "adjustment" | "asset" | "generated-asset" | "group" | "procedural" | "raster" | "text" | "vector";
85
+ role: string | undefined;
86
+ visible: boolean;
87
+ opacity: number;
88
+ bounds: [number, number, number, number];
89
+ world_bounds: [number, number, number, number];
90
+ children: string[];
91
+ operations: number;
92
+ tiles: number;
93
+ regions: {
94
+ id: string;
95
+ bounds: [number, number, number, number];
96
+ scale: number;
97
+ resolution: number[];
98
+ }[] | undefined;
99
+ }[];
100
+ }>;
101
+ inspectLayer(id: string): Promise<{
102
+ layer: {
103
+ id: string;
104
+ name?: string | undefined;
105
+ role?: string | undefined;
106
+ type: "adjustment" | "asset" | "generated-asset" | "group" | "procedural" | "raster" | "text" | "vector";
107
+ visible: boolean;
108
+ opacity: number;
109
+ blend_mode: "darken" | "difference" | "hard-light" | "lighten" | "multiply" | "normal" | "overlay" | "screen" | "soft-light";
110
+ z: number;
111
+ bounds?: [number, number, number, number] | undefined;
112
+ width?: string | number | undefined;
113
+ aspect_ratio?: number | undefined;
114
+ grow?: number | undefined;
115
+ height?: string | number | undefined;
116
+ anchor: "bottom-left" | "bottom-right" | "center" | "top-left" | "top-right";
117
+ affine?: [number, number, number, number, number, number] | undefined;
118
+ transform?: {
119
+ rotation: number;
120
+ scale: [number, number];
121
+ } | undefined;
122
+ layout?: {
123
+ type: "absolute" | "horizontal" | "vertical";
124
+ justify?: "center" | "end" | "space-between" | "start" | undefined;
125
+ padding: number;
126
+ gap: number;
127
+ align: "center" | "end" | "start";
128
+ } | undefined;
129
+ shape?: {
130
+ line_cap?: "butt" | "round" | "square" | undefined;
131
+ line_join?: "bevel" | "miter" | "round" | undefined;
132
+ dash?: number[] | undefined;
133
+ dash_offset?: number | undefined;
134
+ type: "rectangle";
135
+ fill: string;
136
+ radius: number;
137
+ stroke?: string | undefined;
138
+ stroke_width: number;
139
+ } | {
140
+ line_cap?: "butt" | "round" | "square" | undefined;
141
+ line_join?: "bevel" | "miter" | "round" | undefined;
142
+ dash?: number[] | undefined;
143
+ dash_offset?: number | undefined;
144
+ type: "ellipse";
145
+ fill: string;
146
+ stroke?: string | undefined;
147
+ stroke_width: number;
148
+ } | {
149
+ line_cap?: "butt" | "round" | "square" | undefined;
150
+ line_join?: "bevel" | "miter" | "round" | undefined;
151
+ dash?: number[] | undefined;
152
+ dash_offset?: number | undefined;
153
+ type: "path";
154
+ d: string;
155
+ fill: string;
156
+ stroke?: string | undefined;
157
+ stroke_width: number;
158
+ } | undefined;
159
+ content?: string | undefined;
160
+ runs?: {
161
+ text: string;
162
+ colour?: string | undefined;
163
+ weight?: "bold" | "regular" | undefined;
164
+ }[] | undefined;
165
+ paragraph_style?: string | undefined;
166
+ crop?: [number, number, number, number] | undefined;
167
+ focal_point?: [number, number] | undefined;
168
+ perspective?: [[number, number], [number, number], [number, number], [number, number]] | undefined;
169
+ style?: {
170
+ font: string;
171
+ size: number;
172
+ weight: "bold" | "regular";
173
+ colour: string;
174
+ line_height: number;
175
+ align: "center" | "left" | "right";
176
+ tracking?: number | undefined;
177
+ kerning?: boolean | undefined;
178
+ } | undefined;
179
+ source?: string | undefined;
180
+ fit: "contain" | "cover" | "stretch";
181
+ generator?: {
182
+ type: "solid";
183
+ colour: string;
184
+ } | {
185
+ type: "gradient";
186
+ from: string;
187
+ to: string;
188
+ angle: number;
189
+ } | {
190
+ type: "noise";
191
+ seed: number;
192
+ amount: number;
193
+ colour: string;
194
+ } | undefined;
195
+ mask?: import("./schema.js").Mask | undefined;
196
+ effects: {
197
+ type: "blur";
198
+ radius: number;
199
+ }[];
200
+ operations: ({
201
+ space?: "canvas" | "layer" | undefined;
202
+ reference_size?: [number, number] | undefined;
203
+ bounds: [number, number, number, number];
204
+ mask?: import("./schema.js").Mask | undefined;
205
+ type: "levels";
206
+ black: number;
207
+ white: number;
208
+ gamma: number;
209
+ } | {
210
+ space?: "canvas" | "layer" | undefined;
211
+ reference_size?: [number, number] | undefined;
212
+ bounds: [number, number, number, number];
213
+ mask?: import("./schema.js").Mask | undefined;
214
+ type: "curves";
215
+ channel: "b" | "g" | "r" | "rgb";
216
+ points: [number, number][];
217
+ } | {
218
+ space?: "canvas" | "layer" | undefined;
219
+ reference_size?: [number, number] | undefined;
220
+ bounds: [number, number, number, number];
221
+ mask?: import("./schema.js").Mask | undefined;
222
+ type: "whiteBalance";
223
+ temperature: number;
224
+ tint: number;
225
+ } | {
226
+ space?: "canvas" | "layer" | undefined;
227
+ reference_size?: [number, number] | undefined;
228
+ bounds: [number, number, number, number];
229
+ mask?: import("./schema.js").Mask | undefined;
230
+ type: "clone";
231
+ source_offset: [number, number];
232
+ opacity: number;
233
+ } | {
234
+ space?: "canvas" | "layer" | undefined;
235
+ reference_size?: [number, number] | undefined;
236
+ bounds: [number, number, number, number];
237
+ mask?: import("./schema.js").Mask | undefined;
238
+ type: "heal";
239
+ source_offset: [number, number];
240
+ opacity: number;
241
+ } | {
242
+ space?: "canvas" | "layer" | undefined;
243
+ reference_size?: [number, number] | undefined;
244
+ bounds: [number, number, number, number];
245
+ mask?: import("./schema.js").Mask | undefined;
246
+ type: "fill";
247
+ colour: string;
248
+ } | {
249
+ space?: "canvas" | "layer" | undefined;
250
+ reference_size?: [number, number] | undefined;
251
+ bounds: [number, number, number, number];
252
+ mask?: import("./schema.js").Mask | undefined;
253
+ type: "paintStroke";
254
+ path: [number, number][];
255
+ radius: number;
256
+ hardness: number;
257
+ colour: string;
258
+ opacity: number;
259
+ } | {
260
+ space?: "canvas" | "layer" | undefined;
261
+ reference_size?: [number, number] | undefined;
262
+ bounds: [number, number, number, number];
263
+ mask?: import("./schema.js").Mask | undefined;
264
+ type: "eraseStroke";
265
+ path: [number, number][];
266
+ radius: number;
267
+ hardness: number;
268
+ opacity: number;
269
+ } | {
270
+ space?: "canvas" | "layer" | undefined;
271
+ reference_size?: [number, number] | undefined;
272
+ bounds: [number, number, number, number];
273
+ mask?: import("./schema.js").Mask | undefined;
274
+ type: "brightness";
275
+ amount: number;
276
+ } | {
277
+ space?: "canvas" | "layer" | undefined;
278
+ reference_size?: [number, number] | undefined;
279
+ bounds: [number, number, number, number];
280
+ mask?: import("./schema.js").Mask | undefined;
281
+ type: "contrast";
282
+ amount: number;
283
+ } | {
284
+ space?: "canvas" | "layer" | undefined;
285
+ reference_size?: [number, number] | undefined;
286
+ bounds: [number, number, number, number];
287
+ mask?: import("./schema.js").Mask | undefined;
288
+ type: "saturation";
289
+ amount: number;
290
+ } | {
291
+ space?: "canvas" | "layer" | undefined;
292
+ reference_size?: [number, number] | undefined;
293
+ bounds: [number, number, number, number];
294
+ mask?: import("./schema.js").Mask | undefined;
295
+ type: "hueShift";
296
+ degrees: number;
297
+ } | {
298
+ space?: "canvas" | "layer" | undefined;
299
+ reference_size?: [number, number] | undefined;
300
+ bounds: [number, number, number, number];
301
+ mask?: import("./schema.js").Mask | undefined;
302
+ type: "noise";
303
+ amount: number;
304
+ seed: number;
305
+ } | {
306
+ space?: "canvas" | "layer" | undefined;
307
+ reference_size?: [number, number] | undefined;
308
+ bounds: [number, number, number, number];
309
+ mask?: import("./schema.js").Mask | undefined;
310
+ type: "blur";
311
+ radius: number;
312
+ } | {
313
+ space?: "canvas" | "layer" | undefined;
314
+ reference_size?: [number, number] | undefined;
315
+ bounds: [number, number, number, number];
316
+ mask?: import("./schema.js").Mask | undefined;
317
+ type: "colourReplace";
318
+ from: string;
319
+ to: string;
320
+ tolerance: number;
321
+ } | {
322
+ space?: "canvas" | "layer" | undefined;
323
+ reference_size?: [number, number] | undefined;
324
+ bounds: [number, number, number, number];
325
+ mask?: import("./schema.js").Mask | undefined;
326
+ type: "setPixels";
327
+ pixels: {
328
+ x: number;
329
+ y: number;
330
+ colour: string;
331
+ }[];
332
+ })[];
333
+ regions?: {
334
+ space?: "canvas" | "layer" | undefined;
335
+ reference_size?: [number, number] | undefined;
336
+ id: string;
337
+ bounds: [number, number, number, number];
338
+ scale: number;
339
+ source?: string | undefined;
340
+ composite?: "over" | "replace" | undefined;
341
+ operations: ({
342
+ space?: "canvas" | "layer" | undefined;
343
+ reference_size?: [number, number] | undefined;
344
+ bounds: [number, number, number, number];
345
+ mask?: import("./schema.js").Mask | undefined;
346
+ type: "levels";
347
+ black: number;
348
+ white: number;
349
+ gamma: number;
350
+ } | {
351
+ space?: "canvas" | "layer" | undefined;
352
+ reference_size?: [number, number] | undefined;
353
+ bounds: [number, number, number, number];
354
+ mask?: import("./schema.js").Mask | undefined;
355
+ type: "curves";
356
+ channel: "b" | "g" | "r" | "rgb";
357
+ points: [number, number][];
358
+ } | {
359
+ space?: "canvas" | "layer" | undefined;
360
+ reference_size?: [number, number] | undefined;
361
+ bounds: [number, number, number, number];
362
+ mask?: import("./schema.js").Mask | undefined;
363
+ type: "whiteBalance";
364
+ temperature: number;
365
+ tint: number;
366
+ } | {
367
+ space?: "canvas" | "layer" | undefined;
368
+ reference_size?: [number, number] | undefined;
369
+ bounds: [number, number, number, number];
370
+ mask?: import("./schema.js").Mask | undefined;
371
+ type: "clone";
372
+ source_offset: [number, number];
373
+ opacity: number;
374
+ } | {
375
+ space?: "canvas" | "layer" | undefined;
376
+ reference_size?: [number, number] | undefined;
377
+ bounds: [number, number, number, number];
378
+ mask?: import("./schema.js").Mask | undefined;
379
+ type: "heal";
380
+ source_offset: [number, number];
381
+ opacity: number;
382
+ } | {
383
+ space?: "canvas" | "layer" | undefined;
384
+ reference_size?: [number, number] | undefined;
385
+ bounds: [number, number, number, number];
386
+ mask?: import("./schema.js").Mask | undefined;
387
+ type: "fill";
388
+ colour: string;
389
+ } | {
390
+ space?: "canvas" | "layer" | undefined;
391
+ reference_size?: [number, number] | undefined;
392
+ bounds: [number, number, number, number];
393
+ mask?: import("./schema.js").Mask | undefined;
394
+ type: "paintStroke";
395
+ path: [number, number][];
396
+ radius: number;
397
+ hardness: number;
398
+ colour: string;
399
+ opacity: number;
400
+ } | {
401
+ space?: "canvas" | "layer" | undefined;
402
+ reference_size?: [number, number] | undefined;
403
+ bounds: [number, number, number, number];
404
+ mask?: import("./schema.js").Mask | undefined;
405
+ type: "eraseStroke";
406
+ path: [number, number][];
407
+ radius: number;
408
+ hardness: number;
409
+ opacity: number;
410
+ } | {
411
+ space?: "canvas" | "layer" | undefined;
412
+ reference_size?: [number, number] | undefined;
413
+ bounds: [number, number, number, number];
414
+ mask?: import("./schema.js").Mask | undefined;
415
+ type: "brightness";
416
+ amount: number;
417
+ } | {
418
+ space?: "canvas" | "layer" | undefined;
419
+ reference_size?: [number, number] | undefined;
420
+ bounds: [number, number, number, number];
421
+ mask?: import("./schema.js").Mask | undefined;
422
+ type: "contrast";
423
+ amount: number;
424
+ } | {
425
+ space?: "canvas" | "layer" | undefined;
426
+ reference_size?: [number, number] | undefined;
427
+ bounds: [number, number, number, number];
428
+ mask?: import("./schema.js").Mask | undefined;
429
+ type: "saturation";
430
+ amount: number;
431
+ } | {
432
+ space?: "canvas" | "layer" | undefined;
433
+ reference_size?: [number, number] | undefined;
434
+ bounds: [number, number, number, number];
435
+ mask?: import("./schema.js").Mask | undefined;
436
+ type: "hueShift";
437
+ degrees: number;
438
+ } | {
439
+ space?: "canvas" | "layer" | undefined;
440
+ reference_size?: [number, number] | undefined;
441
+ bounds: [number, number, number, number];
442
+ mask?: import("./schema.js").Mask | undefined;
443
+ type: "noise";
444
+ amount: number;
445
+ seed: number;
446
+ } | {
447
+ space?: "canvas" | "layer" | undefined;
448
+ reference_size?: [number, number] | undefined;
449
+ bounds: [number, number, number, number];
450
+ mask?: import("./schema.js").Mask | undefined;
451
+ type: "blur";
452
+ radius: number;
453
+ } | {
454
+ space?: "canvas" | "layer" | undefined;
455
+ reference_size?: [number, number] | undefined;
456
+ bounds: [number, number, number, number];
457
+ mask?: import("./schema.js").Mask | undefined;
458
+ type: "colourReplace";
459
+ from: string;
460
+ to: string;
461
+ tolerance: number;
462
+ } | {
463
+ space?: "canvas" | "layer" | undefined;
464
+ reference_size?: [number, number] | undefined;
465
+ bounds: [number, number, number, number];
466
+ mask?: import("./schema.js").Mask | undefined;
467
+ type: "setPixels";
468
+ pixels: {
469
+ x: number;
470
+ y: number;
471
+ colour: string;
472
+ }[];
473
+ })[];
474
+ }[] | undefined;
475
+ tiles: {
476
+ space?: "canvas" | "layer" | undefined;
477
+ reference_size?: [number, number] | undefined;
478
+ bounds: [number, number, number, number];
479
+ palette: Record<string, string>;
480
+ pixels: string[];
481
+ }[];
482
+ children: {
483
+ id: string;
484
+ name?: string | undefined;
485
+ role?: string | undefined;
486
+ type: "adjustment" | "asset" | "generated-asset" | "group" | "procedural" | "raster" | "text" | "vector";
487
+ visible: boolean;
488
+ opacity: number;
489
+ blend_mode: "darken" | "difference" | "hard-light" | "lighten" | "multiply" | "normal" | "overlay" | "screen" | "soft-light";
490
+ z: number;
491
+ bounds?: [number, number, number, number] | undefined;
492
+ width?: string | number | undefined;
493
+ aspect_ratio?: number | undefined;
494
+ grow?: number | undefined;
495
+ height?: string | number | undefined;
496
+ anchor: "bottom-left" | "bottom-right" | "center" | "top-left" | "top-right";
497
+ affine?: [number, number, number, number, number, number] | undefined;
498
+ transform?: {
499
+ rotation: number;
500
+ scale: [number, number];
501
+ } | undefined;
502
+ layout?: {
503
+ type: "absolute" | "horizontal" | "vertical";
504
+ justify?: "center" | "end" | "space-between" | "start" | undefined;
505
+ padding: number;
506
+ gap: number;
507
+ align: "center" | "end" | "start";
508
+ } | undefined;
509
+ shape?: {
510
+ line_cap?: "butt" | "round" | "square" | undefined;
511
+ line_join?: "bevel" | "miter" | "round" | undefined;
512
+ dash?: number[] | undefined;
513
+ dash_offset?: number | undefined;
514
+ type: "rectangle";
515
+ fill: string;
516
+ radius: number;
517
+ stroke?: string | undefined;
518
+ stroke_width: number;
519
+ } | {
520
+ line_cap?: "butt" | "round" | "square" | undefined;
521
+ line_join?: "bevel" | "miter" | "round" | undefined;
522
+ dash?: number[] | undefined;
523
+ dash_offset?: number | undefined;
524
+ type: "ellipse";
525
+ fill: string;
526
+ stroke?: string | undefined;
527
+ stroke_width: number;
528
+ } | {
529
+ line_cap?: "butt" | "round" | "square" | undefined;
530
+ line_join?: "bevel" | "miter" | "round" | undefined;
531
+ dash?: number[] | undefined;
532
+ dash_offset?: number | undefined;
533
+ type: "path";
534
+ d: string;
535
+ fill: string;
536
+ stroke?: string | undefined;
537
+ stroke_width: number;
538
+ } | undefined;
539
+ content?: string | undefined;
540
+ runs?: {
541
+ text: string;
542
+ colour?: string | undefined;
543
+ weight?: "bold" | "regular" | undefined;
544
+ }[] | undefined;
545
+ paragraph_style?: string | undefined;
546
+ crop?: [number, number, number, number] | undefined;
547
+ focal_point?: [number, number] | undefined;
548
+ perspective?: [[number, number], [number, number], [number, number], [number, number]] | undefined;
549
+ style?: {
550
+ font: string;
551
+ size: number;
552
+ weight: "bold" | "regular";
553
+ colour: string;
554
+ line_height: number;
555
+ align: "center" | "left" | "right";
556
+ tracking?: number | undefined;
557
+ kerning?: boolean | undefined;
558
+ } | undefined;
559
+ source?: string | undefined;
560
+ fit: "contain" | "cover" | "stretch";
561
+ generator?: {
562
+ type: "solid";
563
+ colour: string;
564
+ } | {
565
+ type: "gradient";
566
+ from: string;
567
+ to: string;
568
+ angle: number;
569
+ } | {
570
+ type: "noise";
571
+ seed: number;
572
+ amount: number;
573
+ colour: string;
574
+ } | undefined;
575
+ mask?: import("./schema.js").Mask | undefined;
576
+ effects: {
577
+ type: "blur";
578
+ radius: number;
579
+ }[];
580
+ operations: ({
581
+ space?: "canvas" | "layer" | undefined;
582
+ reference_size?: [number, number] | undefined;
583
+ bounds: [number, number, number, number];
584
+ mask?: import("./schema.js").Mask | undefined;
585
+ type: "levels";
586
+ black: number;
587
+ white: number;
588
+ gamma: number;
589
+ } | {
590
+ space?: "canvas" | "layer" | undefined;
591
+ reference_size?: [number, number] | undefined;
592
+ bounds: [number, number, number, number];
593
+ mask?: import("./schema.js").Mask | undefined;
594
+ type: "curves";
595
+ channel: "b" | "g" | "r" | "rgb";
596
+ points: [number, number][];
597
+ } | {
598
+ space?: "canvas" | "layer" | undefined;
599
+ reference_size?: [number, number] | undefined;
600
+ bounds: [number, number, number, number];
601
+ mask?: import("./schema.js").Mask | undefined;
602
+ type: "whiteBalance";
603
+ temperature: number;
604
+ tint: number;
605
+ } | {
606
+ space?: "canvas" | "layer" | undefined;
607
+ reference_size?: [number, number] | undefined;
608
+ bounds: [number, number, number, number];
609
+ mask?: import("./schema.js").Mask | undefined;
610
+ type: "clone";
611
+ source_offset: [number, number];
612
+ opacity: number;
613
+ } | {
614
+ space?: "canvas" | "layer" | undefined;
615
+ reference_size?: [number, number] | undefined;
616
+ bounds: [number, number, number, number];
617
+ mask?: import("./schema.js").Mask | undefined;
618
+ type: "heal";
619
+ source_offset: [number, number];
620
+ opacity: number;
621
+ } | {
622
+ space?: "canvas" | "layer" | undefined;
623
+ reference_size?: [number, number] | undefined;
624
+ bounds: [number, number, number, number];
625
+ mask?: import("./schema.js").Mask | undefined;
626
+ type: "fill";
627
+ colour: string;
628
+ } | {
629
+ space?: "canvas" | "layer" | undefined;
630
+ reference_size?: [number, number] | undefined;
631
+ bounds: [number, number, number, number];
632
+ mask?: import("./schema.js").Mask | undefined;
633
+ type: "paintStroke";
634
+ path: [number, number][];
635
+ radius: number;
636
+ hardness: number;
637
+ colour: string;
638
+ opacity: number;
639
+ } | {
640
+ space?: "canvas" | "layer" | undefined;
641
+ reference_size?: [number, number] | undefined;
642
+ bounds: [number, number, number, number];
643
+ mask?: import("./schema.js").Mask | undefined;
644
+ type: "eraseStroke";
645
+ path: [number, number][];
646
+ radius: number;
647
+ hardness: number;
648
+ opacity: number;
649
+ } | {
650
+ space?: "canvas" | "layer" | undefined;
651
+ reference_size?: [number, number] | undefined;
652
+ bounds: [number, number, number, number];
653
+ mask?: import("./schema.js").Mask | undefined;
654
+ type: "brightness";
655
+ amount: number;
656
+ } | {
657
+ space?: "canvas" | "layer" | undefined;
658
+ reference_size?: [number, number] | undefined;
659
+ bounds: [number, number, number, number];
660
+ mask?: import("./schema.js").Mask | undefined;
661
+ type: "contrast";
662
+ amount: number;
663
+ } | {
664
+ space?: "canvas" | "layer" | undefined;
665
+ reference_size?: [number, number] | undefined;
666
+ bounds: [number, number, number, number];
667
+ mask?: import("./schema.js").Mask | undefined;
668
+ type: "saturation";
669
+ amount: number;
670
+ } | {
671
+ space?: "canvas" | "layer" | undefined;
672
+ reference_size?: [number, number] | undefined;
673
+ bounds: [number, number, number, number];
674
+ mask?: import("./schema.js").Mask | undefined;
675
+ type: "hueShift";
676
+ degrees: number;
677
+ } | {
678
+ space?: "canvas" | "layer" | undefined;
679
+ reference_size?: [number, number] | undefined;
680
+ bounds: [number, number, number, number];
681
+ mask?: import("./schema.js").Mask | undefined;
682
+ type: "noise";
683
+ amount: number;
684
+ seed: number;
685
+ } | {
686
+ space?: "canvas" | "layer" | undefined;
687
+ reference_size?: [number, number] | undefined;
688
+ bounds: [number, number, number, number];
689
+ mask?: import("./schema.js").Mask | undefined;
690
+ type: "blur";
691
+ radius: number;
692
+ } | {
693
+ space?: "canvas" | "layer" | undefined;
694
+ reference_size?: [number, number] | undefined;
695
+ bounds: [number, number, number, number];
696
+ mask?: import("./schema.js").Mask | undefined;
697
+ type: "colourReplace";
698
+ from: string;
699
+ to: string;
700
+ tolerance: number;
701
+ } | {
702
+ space?: "canvas" | "layer" | undefined;
703
+ reference_size?: [number, number] | undefined;
704
+ bounds: [number, number, number, number];
705
+ mask?: import("./schema.js").Mask | undefined;
706
+ type: "setPixels";
707
+ pixels: {
708
+ x: number;
709
+ y: number;
710
+ colour: string;
711
+ }[];
712
+ })[];
713
+ regions?: {
714
+ space?: "canvas" | "layer" | undefined;
715
+ reference_size?: [number, number] | undefined;
716
+ id: string;
717
+ bounds: [number, number, number, number];
718
+ scale: number;
719
+ source?: string | undefined;
720
+ composite?: "over" | "replace" | undefined;
721
+ operations: ({
722
+ space?: "canvas" | "layer" | undefined;
723
+ reference_size?: [number, number] | undefined;
724
+ bounds: [number, number, number, number];
725
+ mask?: import("./schema.js").Mask | undefined;
726
+ type: "levels";
727
+ black: number;
728
+ white: number;
729
+ gamma: number;
730
+ } | {
731
+ space?: "canvas" | "layer" | undefined;
732
+ reference_size?: [number, number] | undefined;
733
+ bounds: [number, number, number, number];
734
+ mask?: import("./schema.js").Mask | undefined;
735
+ type: "curves";
736
+ channel: "b" | "g" | "r" | "rgb";
737
+ points: [number, number][];
738
+ } | {
739
+ space?: "canvas" | "layer" | undefined;
740
+ reference_size?: [number, number] | undefined;
741
+ bounds: [number, number, number, number];
742
+ mask?: import("./schema.js").Mask | undefined;
743
+ type: "whiteBalance";
744
+ temperature: number;
745
+ tint: number;
746
+ } | {
747
+ space?: "canvas" | "layer" | undefined;
748
+ reference_size?: [number, number] | undefined;
749
+ bounds: [number, number, number, number];
750
+ mask?: import("./schema.js").Mask | undefined;
751
+ type: "clone";
752
+ source_offset: [number, number];
753
+ opacity: number;
754
+ } | {
755
+ space?: "canvas" | "layer" | undefined;
756
+ reference_size?: [number, number] | undefined;
757
+ bounds: [number, number, number, number];
758
+ mask?: import("./schema.js").Mask | undefined;
759
+ type: "heal";
760
+ source_offset: [number, number];
761
+ opacity: number;
762
+ } | {
763
+ space?: "canvas" | "layer" | undefined;
764
+ reference_size?: [number, number] | undefined;
765
+ bounds: [number, number, number, number];
766
+ mask?: import("./schema.js").Mask | undefined;
767
+ type: "fill";
768
+ colour: string;
769
+ } | {
770
+ space?: "canvas" | "layer" | undefined;
771
+ reference_size?: [number, number] | undefined;
772
+ bounds: [number, number, number, number];
773
+ mask?: import("./schema.js").Mask | undefined;
774
+ type: "paintStroke";
775
+ path: [number, number][];
776
+ radius: number;
777
+ hardness: number;
778
+ colour: string;
779
+ opacity: number;
780
+ } | {
781
+ space?: "canvas" | "layer" | undefined;
782
+ reference_size?: [number, number] | undefined;
783
+ bounds: [number, number, number, number];
784
+ mask?: import("./schema.js").Mask | undefined;
785
+ type: "eraseStroke";
786
+ path: [number, number][];
787
+ radius: number;
788
+ hardness: number;
789
+ opacity: number;
790
+ } | {
791
+ space?: "canvas" | "layer" | undefined;
792
+ reference_size?: [number, number] | undefined;
793
+ bounds: [number, number, number, number];
794
+ mask?: import("./schema.js").Mask | undefined;
795
+ type: "brightness";
796
+ amount: number;
797
+ } | {
798
+ space?: "canvas" | "layer" | undefined;
799
+ reference_size?: [number, number] | undefined;
800
+ bounds: [number, number, number, number];
801
+ mask?: import("./schema.js").Mask | undefined;
802
+ type: "contrast";
803
+ amount: number;
804
+ } | {
805
+ space?: "canvas" | "layer" | undefined;
806
+ reference_size?: [number, number] | undefined;
807
+ bounds: [number, number, number, number];
808
+ mask?: import("./schema.js").Mask | undefined;
809
+ type: "saturation";
810
+ amount: number;
811
+ } | {
812
+ space?: "canvas" | "layer" | undefined;
813
+ reference_size?: [number, number] | undefined;
814
+ bounds: [number, number, number, number];
815
+ mask?: import("./schema.js").Mask | undefined;
816
+ type: "hueShift";
817
+ degrees: number;
818
+ } | {
819
+ space?: "canvas" | "layer" | undefined;
820
+ reference_size?: [number, number] | undefined;
821
+ bounds: [number, number, number, number];
822
+ mask?: import("./schema.js").Mask | undefined;
823
+ type: "noise";
824
+ amount: number;
825
+ seed: number;
826
+ } | {
827
+ space?: "canvas" | "layer" | undefined;
828
+ reference_size?: [number, number] | undefined;
829
+ bounds: [number, number, number, number];
830
+ mask?: import("./schema.js").Mask | undefined;
831
+ type: "blur";
832
+ radius: number;
833
+ } | {
834
+ space?: "canvas" | "layer" | undefined;
835
+ reference_size?: [number, number] | undefined;
836
+ bounds: [number, number, number, number];
837
+ mask?: import("./schema.js").Mask | undefined;
838
+ type: "colourReplace";
839
+ from: string;
840
+ to: string;
841
+ tolerance: number;
842
+ } | {
843
+ space?: "canvas" | "layer" | undefined;
844
+ reference_size?: [number, number] | undefined;
845
+ bounds: [number, number, number, number];
846
+ mask?: import("./schema.js").Mask | undefined;
847
+ type: "setPixels";
848
+ pixels: {
849
+ x: number;
850
+ y: number;
851
+ colour: string;
852
+ }[];
853
+ })[];
854
+ }[] | undefined;
855
+ tiles: {
856
+ space?: "canvas" | "layer" | undefined;
857
+ reference_size?: [number, number] | undefined;
858
+ bounds: [number, number, number, number];
859
+ palette: Record<string, string>;
860
+ pixels: string[];
861
+ }[];
862
+ children: /*elided*/ any[];
863
+ }[];
864
+ };
865
+ bounds: [number, number, number, number];
866
+ world_bounds: [number, number, number, number];
867
+ }>;
868
+ inspectRegion(raw: Bounds): Promise<{
869
+ bounds: [number, number, number, number];
870
+ layers: {
871
+ id: string;
872
+ role: string | undefined;
873
+ bounds: [number, number, number, number];
874
+ }[];
875
+ dominant_colours: {
876
+ colour: string;
877
+ pixels: number;
878
+ }[];
879
+ mean_luma: number;
880
+ render: RenderResult;
881
+ }>;
882
+ private transaction;
883
+ apply(raw: unknown): Promise<HistoryEntry>;
884
+ undo(reason?: string): Promise<HistoryEntry>;
885
+ redo(reason?: string): Promise<HistoryEntry>;
886
+ rebase(reason?: string): Promise<HistoryEntry>;
887
+ compactHistory(): Promise<{
888
+ original_bytes: number;
889
+ compressed_bytes: number;
890
+ archive?: undefined;
891
+ } | {
892
+ original_bytes: number;
893
+ compressed_bytes: number;
894
+ archive: string;
895
+ }>;
896
+ exportScene(file: string): Promise<void>;
897
+ }