lbrnts 0.0.1

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.
package/README.md ADDED
@@ -0,0 +1,394 @@
1
+ # lbrnts
2
+
3
+ A type-safe library for parsing and writing [LightBurn](https://lightburnsoftware.com/) files.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install lbrnts
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Parsing Existing Projects
14
+
15
+ ```tsx
16
+ import { LightBurnProject } from "lbrnts"
17
+
18
+ const project = LightBurnProject.parse(fs.readFileSync("project.lbrn2", "utf8"))
19
+
20
+ console.log(project.children)
21
+ ```
22
+
23
+ ### Creating Projects from Scratch
24
+
25
+ You can programmatically create LightBurn projects by constructing the project and its elements. Below is a table of all constructible classes with links to their documentation:
26
+
27
+ | Class | Description |
28
+ |-------|-------------|
29
+ | [LightBurnProject](#lightburnproject) | Root project container |
30
+ | [CutSetting](#cutsetting) | Cut/engrave settings (speed, power, etc.) |
31
+ | [ShapePath](#shapepath) | Custom paths with lines and bezier curves |
32
+ | [ShapeRect](#shaperect) | Rectangle shapes |
33
+ | [ShapeEllipse](#shapeellipse) | Ellipse/circle shapes |
34
+ | [ShapeText](#shapetext) | Text shapes |
35
+ | [ShapeBitmap](#shapebitmap) | Bitmap/image shapes |
36
+ | [ShapeGroup](#shapegroup) | Group container for shapes |
37
+ | [Notes](#notes) | Project notes |
38
+ | [VariableText](#variabletext) | Variable text settings |
39
+
40
+ ## API Reference
41
+
42
+ ### LightBurnProject
43
+
44
+ The root container for a LightBurn project.
45
+
46
+ #### Constructor
47
+
48
+ ```typescript
49
+ new LightBurnProject(init?: {
50
+ appVersion?: string
51
+ formatVersion?: string
52
+ materialHeight?: number
53
+ mirrorX?: boolean
54
+ mirrorY?: boolean
55
+ children?: LightBurnBaseElement[]
56
+ })
57
+ ```
58
+
59
+ #### Example
60
+
61
+ ```typescript
62
+ import { LightBurnProject, CutSetting, ShapePath } from "lbrnts"
63
+
64
+ const cutSetting = new CutSetting({
65
+ index: 0,
66
+ name: "Wood Cut",
67
+ priority: 0,
68
+ type: "Cut",
69
+ speed: 10,
70
+ maxPower: 80,
71
+ minPower: 60,
72
+ })
73
+
74
+ const path = new ShapePath({
75
+ cutIndex: 0,
76
+ verts: [
77
+ { x: -25, y: -25 },
78
+ { x: 25, y: -25 },
79
+ { x: 25, y: 25 },
80
+ { x: -25, y: 25 },
81
+ ],
82
+ prims: [
83
+ { type: 0 },
84
+ { type: 0 },
85
+ { type: 0 },
86
+ { type: 0 },
87
+ ],
88
+ isClosed: true,
89
+ })
90
+
91
+ const project = new LightBurnProject({
92
+ appVersion: "1.7.03",
93
+ formatVersion: "1",
94
+ materialHeight: 0,
95
+ children: [cutSetting, path],
96
+ })
97
+ ```
98
+
99
+ #### Methods
100
+
101
+ - `getChildren()`: Returns the children array
102
+
103
+ ---
104
+
105
+ ### CutSetting
106
+
107
+ Defines cutting/engraving settings for laser operations.
108
+
109
+ #### Constructor
110
+
111
+ ```typescript
112
+ new CutSetting(init?: {
113
+ type?: string // "Cut", "Scan", "Image", etc.
114
+ index?: number // Layer index
115
+ name?: string // Layer name
116
+ priority?: number // Execution priority
117
+ minPower?: number // Minimum power (0-100%)
118
+ maxPower?: number // Maximum power (0-100%)
119
+ minPower2?: number // Secondary laser minimum power
120
+ maxPower2?: number // Secondary laser maximum power
121
+ speed?: number // Speed in mm/s
122
+ kerf?: number // Kerf offset in mm
123
+ zOffset?: number // Z-axis offset
124
+ enablePowerRamp?: boolean // Enable power ramping
125
+ rampLength?: number // Ramp length in mm
126
+ numPasses?: number // Number of passes
127
+ zPerPass?: number // Z increment per pass
128
+ perforate?: boolean // Perforate mode
129
+ dotMode?: boolean // Dot mode
130
+ scanOpt?: string // Scan optimization
131
+ interval?: number // Scan line interval
132
+ angle?: number // Scan angle
133
+ overScanning?: number // Over-scanning distance
134
+ lineAngle?: number // Line angle for fill
135
+ })
136
+ ```
137
+
138
+ #### Example
139
+
140
+ ```typescript
141
+ const cutSetting = new CutSetting({
142
+ index: 0,
143
+ name: "Acrylic Engrave",
144
+ priority: 1,
145
+ type: "Cut",
146
+ speed: 150,
147
+ maxPower: 50,
148
+ minPower: 40,
149
+ numPasses: 3,
150
+ enablePowerRamp: true,
151
+ rampLength: 2,
152
+ })
153
+ ```
154
+
155
+ ---
156
+
157
+ ### ShapePath
158
+
159
+ Custom paths with vertices and primitives (lines and bezier curves).
160
+
161
+ #### Constructor
162
+
163
+ ```typescript
164
+ new ShapePath(init?: {
165
+ verts?: Vert[] // Array of vertices
166
+ prims?: Prim[] // Array of primitives (drawing commands)
167
+ isClosed?: boolean // Whether the path is closed
168
+ cutIndex?: number // Cut setting index to use
169
+ locked?: boolean // Lock the shape
170
+ xform?: Mat // Transformation matrix [a, b, c, d, tx, ty]
171
+ })
172
+
173
+ interface Vert {
174
+ x: number
175
+ y: number
176
+ c?: number // Control point flag
177
+ c0x?: number // Control point 0 x
178
+ c0y?: number // Control point 0 y
179
+ c1x?: number // Control point 1 x
180
+ c1y?: number // Control point 1 y
181
+ }
182
+
183
+ interface Prim {
184
+ type: number // 0 = LineTo, 1 = BezierTo
185
+ }
186
+
187
+ type Mat = [a: number, b: number, c: number, d: number, tx: number, ty: number]
188
+ ```
189
+
190
+ #### Example: Simple Square
191
+
192
+ ```typescript
193
+ const square = new ShapePath({
194
+ cutIndex: 0,
195
+ verts: [
196
+ { x: -25, y: -25 },
197
+ { x: 25, y: -25 },
198
+ { x: 25, y: 25 },
199
+ { x: -25, y: 25 },
200
+ ],
201
+ prims: [
202
+ { type: 0 }, // LineTo
203
+ { type: 0 }, // LineTo
204
+ { type: 0 }, // LineTo
205
+ { type: 0 }, // LineTo (close path)
206
+ ],
207
+ isClosed: true,
208
+ })
209
+ ```
210
+
211
+ #### Example: Curved Path with Bezier Curves
212
+
213
+ ```typescript
214
+ const curved = new ShapePath({
215
+ cutIndex: 0,
216
+ verts: [
217
+ { x: 0, y: -30 },
218
+ { x: 30, y: 0, c: 1, c0x: 30, c0y: -16.5, c1x: 30, c1y: -16.5 },
219
+ { x: 0, y: 30, c: 1, c0x: 30, c0y: 16.5, c1x: 30, c1y: 16.5 },
220
+ { x: -30, y: 0, c: 1, c0x: -30, c0y: 16.5, c1x: -30, c1y: 16.5 },
221
+ { x: 0, y: -30, c: 1, c0x: -30, c0y: -16.5, c1x: -30, c1y: -16.5 },
222
+ ],
223
+ prims: [
224
+ { type: 1 }, // BezierTo
225
+ { type: 1 }, // BezierTo
226
+ { type: 1 }, // BezierTo
227
+ { type: 1 }, // BezierTo
228
+ ],
229
+ isClosed: true,
230
+ })
231
+ ```
232
+
233
+ ---
234
+
235
+ ### ShapeRect
236
+
237
+ Rectangle shape (currently read-only from parsed files).
238
+
239
+ #### Constructor
240
+
241
+ ```typescript
242
+ new ShapeRect()
243
+ ```
244
+
245
+ #### Properties
246
+
247
+ - `w`: Width
248
+ - `h`: Height
249
+ - `cr`: Corner radius
250
+ - `cutIndex`: Cut setting index
251
+ - `locked`: Lock state
252
+ - `xform`: Transformation matrix
253
+
254
+ ---
255
+
256
+ ### ShapeEllipse
257
+
258
+ Ellipse/circle shape (currently read-only from parsed files).
259
+
260
+ #### Constructor
261
+
262
+ ```typescript
263
+ new ShapeEllipse()
264
+ ```
265
+
266
+ #### Properties
267
+
268
+ - `rx`: X radius
269
+ - `ry`: Y radius
270
+ - `cutIndex`: Cut setting index
271
+ - `locked`: Lock state
272
+ - `xform`: Transformation matrix
273
+
274
+ ---
275
+
276
+ ### ShapeText
277
+
278
+ Text shape (currently read-only from parsed files).
279
+
280
+ #### Constructor
281
+
282
+ ```typescript
283
+ new ShapeText()
284
+ ```
285
+
286
+ #### Properties
287
+
288
+ - `text`: Text content
289
+ - `font`: Font name
290
+ - `backupPath`: Backup path representation
291
+ - `cutIndex`: Cut setting index
292
+ - `locked`: Lock state
293
+ - `xform`: Transformation matrix
294
+
295
+ ---
296
+
297
+ ### ShapeBitmap
298
+
299
+ Bitmap/image shape (currently read-only from parsed files).
300
+
301
+ #### Constructor
302
+
303
+ ```typescript
304
+ new ShapeBitmap()
305
+ ```
306
+
307
+ #### Properties
308
+
309
+ - `w`: Width
310
+ - `h`: Height
311
+ - `dataBase64`: Base64-encoded image data
312
+ - `grayscale`: Grayscale mode
313
+ - `dpi`: DPI setting
314
+ - `ditherMode`: Dither mode
315
+ - `halftone`: Halftone mode
316
+ - `negative`: Negative mode
317
+ - `brightnessAdjust`: Brightness adjustment
318
+ - `contrastAdjust`: Contrast adjustment
319
+ - `gammaAdjust`: Gamma adjustment
320
+ - `cutIndex`: Cut setting index
321
+ - `locked`: Lock state
322
+ - `xform`: Transformation matrix
323
+
324
+ ---
325
+
326
+ ### ShapeGroup
327
+
328
+ Container for grouping shapes together (currently read-only from parsed files).
329
+
330
+ #### Constructor
331
+
332
+ ```typescript
333
+ new ShapeGroup()
334
+ ```
335
+
336
+ #### Properties
337
+
338
+ - `children`: Array of child shapes
339
+ - `cutIndex`: Cut setting index
340
+ - `locked`: Lock state
341
+ - `xform`: Transformation matrix
342
+
343
+ #### Methods
344
+
345
+ - `getChildren()`: Returns the children array
346
+
347
+ ---
348
+
349
+ ### Notes
350
+
351
+ Project notes that can be displayed when loading the project.
352
+
353
+ #### Constructor
354
+
355
+ ```typescript
356
+ new Notes()
357
+ ```
358
+
359
+ #### Properties
360
+
361
+ - `showOnLoad`: Whether to show notes on load
362
+ - `text`: Note text content
363
+
364
+ ---
365
+
366
+ ### VariableText
367
+
368
+ Variable text settings for dynamic text generation.
369
+
370
+ #### Constructor
371
+
372
+ ```typescript
373
+ new VariableText()
374
+ ```
375
+
376
+ #### Properties
377
+
378
+ - `start`: Start value
379
+ - `end`: End value
380
+ - `current`: Current value
381
+ - `increment`: Increment value
382
+ - `autoAdvance`: Auto-advance setting
383
+
384
+ ---
385
+
386
+ ## Generating SVG
387
+
388
+ You can generate SVG representations of your projects:
389
+
390
+ ```typescript
391
+ import { generateLightBurnSvg } from "lbrnts"
392
+
393
+ const svg = generateLightBurnSvg(project)
394
+ ```
@@ -0,0 +1,329 @@
1
+ /**
2
+ * Type representing the JSON structure returned by xml2js
3
+ */
4
+ type XmlJson = {
5
+ [key: string]: XmlJsonValue;
6
+ };
7
+ type XmlJsonValue = string | number | boolean | null | XmlJsonElement | XmlJsonValue[];
8
+ type XmlJsonElement = {
9
+ $?: Record<string, string | number | boolean>;
10
+ _?: string;
11
+ [key: string]: XmlJsonValue | Record<string, string | number | boolean> | string | undefined;
12
+ };
13
+
14
+ declare class LightBurnBaseElement {
15
+ token: string;
16
+ static token: string;
17
+ getChildren(): LightBurnBaseElement[];
18
+ getStringIndented(): string;
19
+ getString(): string;
20
+ get [Symbol.toStringTag](): string;
21
+ private static elementRegistry;
22
+ private static shapeRegistry;
23
+ /**
24
+ * Should be called after class definition to register the class for parsing
25
+ */
26
+ static register(token: string, klass: any): void;
27
+ /**
28
+ * Parse an XML string into registered LightBurnBaseElement instances
29
+ */
30
+ static parse(xml: string): LightBurnBaseElement | LightBurnBaseElement[];
31
+ static fromXmlJson(node: XmlJsonElement): LightBurnBaseElement;
32
+ static parseXmlJson(xmlJson: XmlJsonValue): any;
33
+ static instantiateElement(tag: string, node: XmlJsonElement): LightBurnBaseElement;
34
+ }
35
+
36
+ interface LightBurnProjectInit {
37
+ appVersion?: string;
38
+ formatVersion?: string;
39
+ materialHeight?: number;
40
+ mirrorX?: boolean;
41
+ mirrorY?: boolean;
42
+ children?: LightBurnBaseElement[];
43
+ }
44
+ declare class LightBurnProject extends LightBurnBaseElement {
45
+ appVersion?: string;
46
+ formatVersion?: string;
47
+ materialHeight?: number;
48
+ mirrorX?: boolean;
49
+ mirrorY?: boolean;
50
+ children: LightBurnBaseElement[];
51
+ constructor(init?: LightBurnProjectInit);
52
+ static fromXmlJson(node: XmlJsonElement): LightBurnProject;
53
+ getChildren(): LightBurnBaseElement[];
54
+ }
55
+
56
+ interface CutSettingInit {
57
+ type?: string;
58
+ index?: number;
59
+ name?: string;
60
+ priority?: number;
61
+ minPower?: number;
62
+ maxPower?: number;
63
+ minPower2?: number;
64
+ maxPower2?: number;
65
+ speed?: number;
66
+ kerf?: number;
67
+ zOffset?: number;
68
+ enablePowerRamp?: boolean;
69
+ rampLength?: number;
70
+ numPasses?: number;
71
+ zPerPass?: number;
72
+ perforate?: boolean;
73
+ dotMode?: boolean;
74
+ scanOpt?: string;
75
+ interval?: number;
76
+ angle?: number;
77
+ overScanning?: number;
78
+ lineAngle?: number;
79
+ }
80
+ declare class CutSetting extends LightBurnBaseElement {
81
+ private _type;
82
+ private _index?;
83
+ private _name?;
84
+ private _priority?;
85
+ private _minPower?;
86
+ private _maxPower?;
87
+ private _minPower2?;
88
+ private _maxPower2?;
89
+ private _speed?;
90
+ private _kerf?;
91
+ private _zOffset?;
92
+ private _enablePowerRamp?;
93
+ private _rampLength?;
94
+ private _numPasses?;
95
+ private _zPerPass?;
96
+ private _perforate?;
97
+ private _dotMode?;
98
+ private _scanOpt?;
99
+ private _interval?;
100
+ private _angle?;
101
+ private _overScanning?;
102
+ private _lineAngle?;
103
+ constructor(init?: CutSettingInit);
104
+ get type(): string;
105
+ set type(value: string);
106
+ get index(): number | undefined;
107
+ set index(value: number | undefined);
108
+ get name(): string | undefined;
109
+ set name(value: string | undefined);
110
+ get priority(): number | undefined;
111
+ set priority(value: number | undefined);
112
+ get minPower(): number | undefined;
113
+ set minPower(value: number | undefined);
114
+ get maxPower(): number | undefined;
115
+ set maxPower(value: number | undefined);
116
+ get minPower2(): number | undefined;
117
+ set minPower2(value: number | undefined);
118
+ get maxPower2(): number | undefined;
119
+ set maxPower2(value: number | undefined);
120
+ get speed(): number | undefined;
121
+ set speed(value: number | undefined);
122
+ get kerf(): number | undefined;
123
+ set kerf(value: number | undefined);
124
+ get zOffset(): number | undefined;
125
+ set zOffset(value: number | undefined);
126
+ get enablePowerRamp(): boolean | undefined;
127
+ set enablePowerRamp(value: boolean | undefined);
128
+ get rampLength(): number | undefined;
129
+ set rampLength(value: number | undefined);
130
+ get numPasses(): number | undefined;
131
+ set numPasses(value: number | undefined);
132
+ get zPerPass(): number | undefined;
133
+ set zPerPass(value: number | undefined);
134
+ get perforate(): boolean | undefined;
135
+ set perforate(value: boolean | undefined);
136
+ get dotMode(): boolean | undefined;
137
+ set dotMode(value: boolean | undefined);
138
+ get scanOpt(): string | undefined;
139
+ set scanOpt(value: string | undefined);
140
+ get interval(): number | undefined;
141
+ set interval(value: number | undefined);
142
+ get angle(): number | undefined;
143
+ set angle(value: number | undefined);
144
+ get overScanning(): number | undefined;
145
+ set overScanning(value: number | undefined);
146
+ get lineAngle(): number | undefined;
147
+ set lineAngle(value: number | undefined);
148
+ static fromXmlJson(node: XmlJsonElement): CutSetting;
149
+ }
150
+
151
+ declare class Notes extends LightBurnBaseElement {
152
+ showOnLoad?: boolean;
153
+ text?: string;
154
+ constructor();
155
+ static fromXmlJson(node: XmlJsonElement): Notes;
156
+ }
157
+
158
+ declare class VariableText extends LightBurnBaseElement {
159
+ start?: number;
160
+ end?: number;
161
+ current?: number;
162
+ increment?: number;
163
+ autoAdvance?: boolean;
164
+ constructor();
165
+ static fromXmlJson(node: XmlJsonElement): VariableText;
166
+ }
167
+
168
+ declare class UIPrefs extends LightBurnBaseElement {
169
+ prefs: Record<string, string>;
170
+ constructor();
171
+ static fromXmlJson(node: XmlJsonElement): UIPrefs;
172
+ }
173
+
174
+ declare class Thumbnail extends LightBurnBaseElement {
175
+ pngBase64?: string;
176
+ constructor();
177
+ static fromXmlJson(node: XmlJsonElement): Thumbnail;
178
+ }
179
+
180
+ type Mat = [
181
+ a: number,
182
+ b: number,
183
+ c: number,
184
+ d: number,
185
+ tx: number,
186
+ ty: number
187
+ ];
188
+ declare abstract class ShapeBase extends LightBurnBaseElement {
189
+ cutIndex?: number;
190
+ locked?: boolean;
191
+ xform?: Mat;
192
+ static readCommon(node: XmlJsonElement): {
193
+ cutIndex?: number;
194
+ locked?: boolean;
195
+ xform?: Mat;
196
+ };
197
+ }
198
+
199
+ declare class ShapeEllipse extends ShapeBase {
200
+ rx?: number;
201
+ ry?: number;
202
+ constructor();
203
+ static fromXmlJson(node: XmlJsonElement): ShapeEllipse;
204
+ }
205
+
206
+ declare class ShapeRect extends ShapeBase {
207
+ w?: number;
208
+ h?: number;
209
+ cr?: number;
210
+ constructor();
211
+ static fromXmlJson(node: XmlJsonElement): ShapeRect;
212
+ }
213
+
214
+ interface Vert {
215
+ x: number;
216
+ y: number;
217
+ c?: number;
218
+ c0x?: number;
219
+ c0y?: number;
220
+ c1x?: number;
221
+ c1y?: number;
222
+ }
223
+ interface Prim {
224
+ type: number;
225
+ }
226
+ interface ShapePathInit {
227
+ verts?: Vert[];
228
+ prims?: Prim[];
229
+ isClosed?: boolean;
230
+ cutIndex?: number;
231
+ locked?: boolean;
232
+ xform?: Mat;
233
+ }
234
+ declare class ShapePath extends ShapeBase {
235
+ verts: Vert[];
236
+ prims: Prim[];
237
+ isClosed: boolean;
238
+ private static templateRegistry;
239
+ constructor(init?: ShapePathInit);
240
+ static clearTemplateRegistry(): void;
241
+ static fromXmlJson(node: XmlJsonElement): ShapePath;
242
+ /**
243
+ * Parse encoded VertList string format
244
+ * Format: V{x} {y}c{flag}x{flag}c{flag}x{c1x}c{flag}y{c1y}...
245
+ * Example: V2.1156745 -12.3306c0x1c1x1.5871694c1y-12.3306
246
+ *
247
+ * Control points are encoded as:
248
+ * - c0x{value}c0y{value} = control point 0 (when both present)
249
+ * - c1x{value}c1y{value} = control point 1 (when both present)
250
+ * - c{num}x{num} alone (like c0x1) = flag, not a coordinate
251
+ */
252
+ static parseEncodedVertList(encoded: string): Vert[];
253
+ /**
254
+ * Parse encoded PrimPolyline string format
255
+ * This typically contains line-to commands, each prim is type 0 (LineTo)
256
+ */
257
+ static parseEncodedPrimPolyline(encoded: string): Prim[];
258
+ /**
259
+ * Generate primitives from vertices based on PrimID
260
+ * PrimID meanings:
261
+ * - 0: Simple polyline (all LineTo)
262
+ * - 2: Rounded rectangle with bezier curves at corners
263
+ * - 3: Other curve type
264
+ */
265
+ static generatePrimsFromVerts(verts: Vert[], primID?: number): Prim[];
266
+ }
267
+
268
+ declare class ShapeText extends ShapeBase {
269
+ text?: string;
270
+ font?: string;
271
+ backupPath?: ShapePath;
272
+ constructor();
273
+ static fromXmlJson(node: XmlJsonElement): ShapeText;
274
+ }
275
+
276
+ declare class ShapeGroup extends ShapeBase {
277
+ children: LightBurnBaseElement[];
278
+ constructor();
279
+ static fromXmlJson(node: XmlJsonElement): ShapeGroup;
280
+ getChildren(): LightBurnBaseElement[];
281
+ }
282
+
283
+ declare class ShapeBitmap extends ShapeBase {
284
+ private _w?;
285
+ private _h?;
286
+ private _dataBase64?;
287
+ private _grayscale?;
288
+ private _dpi?;
289
+ private _ditherMode?;
290
+ private _halftone?;
291
+ private _negative?;
292
+ private _brightnessAdjust?;
293
+ private _contrastAdjust?;
294
+ private _gammaAdjust?;
295
+ constructor();
296
+ get w(): number | undefined;
297
+ set w(value: number | undefined);
298
+ get h(): number | undefined;
299
+ set h(value: number | undefined);
300
+ get dataBase64(): string | undefined;
301
+ set dataBase64(value: string | undefined);
302
+ get grayscale(): boolean | undefined;
303
+ set grayscale(value: boolean | undefined);
304
+ get dpi(): number | undefined;
305
+ set dpi(value: number | undefined);
306
+ get ditherMode(): string | undefined;
307
+ set ditherMode(value: string | undefined);
308
+ get halftone(): boolean | undefined;
309
+ set halftone(value: boolean | undefined);
310
+ get negative(): boolean | undefined;
311
+ set negative(value: boolean | undefined);
312
+ get brightnessAdjust(): number | undefined;
313
+ set brightnessAdjust(value: number | undefined);
314
+ get contrastAdjust(): number | undefined;
315
+ set contrastAdjust(value: number | undefined);
316
+ get gammaAdjust(): number | undefined;
317
+ set gammaAdjust(value: number | undefined);
318
+ static fromXmlJson(node: XmlJsonElement): ShapeBitmap;
319
+ }
320
+
321
+ interface GenerateSvgOptions {
322
+ margin?: number;
323
+ }
324
+
325
+ declare function generateLightBurnSvg(root: LightBurnBaseElement | LightBurnBaseElement[], options?: GenerateSvgOptions): string;
326
+
327
+ declare const parseXml: (xml: string) => XmlJson;
328
+
329
+ export { LightBurnBaseElement as BaseLightBurnElement, CutSetting, type CutSettingInit, type GenerateSvgOptions, LightBurnBaseElement, LightBurnProject, type LightBurnProjectInit, type Mat, Notes, type Prim, ShapeBase, ShapeBitmap, ShapeEllipse, ShapeGroup, ShapePath, type ShapePathInit, ShapeRect, ShapeText, Thumbnail, UIPrefs, VariableText, type Vert, generateLightBurnSvg, parseXml };