@lumikmz/kmz 0.11.0 → 0.11.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/dist/index.d.mts CHANGED
@@ -2,77 +2,91 @@
2
2
  type Brand<T, B> = T & {
3
3
  readonly __brand: B;
4
4
  };
5
- type Meters = Brand<number, "Meters">;
6
- type MetersPerSecond = Brand<number, "MetersPerSecond">;
7
- type Degrees = Brand<number, "Degrees">;
8
- declare const meters: (n: number) => Meters;
9
- declare const metersPerSecond: (n: number) => MetersPerSecond;
10
- declare const degrees: (n: number) => Degrees;
11
- interface LngLat {
5
+ export type Meters = Brand<number, "Meters">;
6
+ export type MetersPerSecond = Brand<number, "MetersPerSecond">;
7
+ export type Degrees = Brand<number, "Degrees">;
8
+ export declare const meters: (n: number) => Meters;
9
+ export declare const metersPerSecond: (n: number) => MetersPerSecond;
10
+ export declare const degrees: (n: number) => Degrees;
11
+ export interface LngLat {
12
12
  readonly lng: number;
13
13
  readonly lat: number;
14
14
  }
15
- interface LngLatHeight {
15
+ export interface LngLatHeight {
16
16
  readonly lng: number;
17
17
  readonly lat: number;
18
18
  readonly height: Meters;
19
19
  }
20
20
  //#endregion
21
21
  //#region src/types/errors.d.ts
22
- declare class KmzError extends Error {
22
+ export declare class KmzError extends Error {
23
23
  constructor(message: string);
24
24
  }
25
- declare class PlannerError extends KmzError {
25
+ export declare class PlannerError extends KmzError {
26
26
  constructor(message: string);
27
27
  }
28
- interface Issue {
28
+ export interface Issue {
29
29
  path: string;
30
30
  message: string;
31
31
  severity: "error" | "warning";
32
32
  }
33
33
  //#endregion
34
34
  //#region src/types/enums.d.ts
35
- type FlyToWaylineMode = "safely" | "pointToPoint";
36
- type FinishAction = "goHome" | "noAction" | "autoLand" | "gotoFirstWaypoint";
37
- type ExitOnRCLost = "goContinue" | "executeLostAction";
38
- type ExecuteRCLostAction = "goBack" | "landing" | "hover";
39
- type TemplateType = "waypoint" | "mapping2d" | "mapping3d" | "mappingStrip" | "targetdetection";
40
- type CoordinateMode = "WGS84";
35
+ export type FlyToWaylineMode = "safely" | "pointToPoint";
36
+ export type FinishAction = "goHome" | "noAction" | "autoLand" | "gotoFirstWaypoint";
37
+ export type ExitOnRCLost = "goContinue" | "executeLostAction";
38
+ export type ExecuteRCLostAction = "goBack" | "landing" | "hover";
39
+ export type TemplateType = "waypoint" | "mapping2d" | "mapping3d" | "mappingStrip" | "targetdetection";
40
+ export type CoordinateMode = "WGS84";
41
41
  /** Used in template.kml `waylineCoordinateSysParam.heightMode`. */
42
- type TemplateHeightMode = "EGM96" | "relativeToStartPoint" | "aboveGroundLevel" | "realTimeFollowSurface";
42
+ export type TemplateHeightMode = "EGM96" | "relativeToStartPoint" | "aboveGroundLevel" | "realTimeFollowSurface";
43
43
  /** Used in waylines.wpml `Folder.executeHeightMode`. */
44
- type ExecuteHeightMode = "WGS84" | "relativeToStartPoint" | "realTimeFollowSurface";
45
- type PositioningType = "GPS" | "RTKBaseStation" | "QianXun" | "Custom";
46
- type WaypointTurnMode = "coordinateTurn" | "toPointAndStopWithDiscontinuityCurvature" | "toPointAndStopWithContinuityCurvature" | "toPointAndPassWithContinuityCurvature";
47
- type WaypointHeadingMode = "followWayline" | "manually" | "fixed" | "smoothTransition" | "towardPOI";
44
+ export type ExecuteHeightMode = "WGS84" | "relativeToStartPoint" | "realTimeFollowSurface";
45
+ export type PositioningType = "GPS" | "RTKBaseStation" | "QianXun" | "Custom";
46
+ export type WaypointTurnMode = "coordinateTurn" | "toPointAndStopWithDiscontinuityCurvature" | "toPointAndStopWithContinuityCurvature" | "toPointAndPassWithContinuityCurvature";
47
+ export type WaypointHeadingMode = "followWayline" | "manually" | "fixed" | "smoothTransition" | "towardPOI";
48
48
  /** Spec typo preserved: `followBadArc` (intended "shortest path / smaller arc"). */
49
- type WaypointHeadingPathMode = "clockwise" | "counterClockwise" | "followBadArc";
49
+ export type WaypointHeadingPathMode = "clockwise" | "counterClockwise" | "followBadArc";
50
50
  /** Template waypoint folder allows manual + per-point; mapping templates allow manual + fixed. */
51
- type GimbalPitchMode = "manual" | "usePointSetting" | "fixed";
52
- type ShootType = "time" | "distance";
53
- type MappingHeadingMode = "fixed" | "followWayline";
51
+ export type GimbalPitchMode = "manual" | "usePointSetting" | "fixed";
52
+ export type ShootType = "time" | "distance";
53
+ export type MappingHeadingMode = "fixed" | "followWayline";
54
54
  /** Spec typo preserved: `visable`. */
55
- type LensType = "wide" | "zoom" | "ir" | "narrow_band" | "visable";
56
- type FocusMode = "firstPoint" | "custom";
57
- type MeteringMode = "average" | "spot";
58
- type LidarReturnMode = "singleReturnStrongest" | "dualReturn" | "tripleReturn";
59
- type LidarScanningMode = "repetitive" | "nonRepetitive";
60
- type ActionGroupMode = "sequence";
61
- type ActionTriggerType = "reachPoint" | "betweenAdjacentPoints" | "betweenAdjacentPointsIncludeFirstPoint" | "multipleTiming" | "multipleDistance";
62
- type ActionActuatorFunc = "targetDetection" | "takePhoto" | "startRecord" | "stopRecord" | "focus" | "zoom" | "customDirName" | "gimbalRotate" | "rotateYaw" | "hover" | "gimbalEvenlyRotate" | "accurateShoot" | "orientedShoot" | "panoShot" | "recordPointCloud" | "megaphone" | "searchlight" /** ⚠️ NON-SPEC — observed in real DJI KMZ exports, absent from WPML 1.15 docs. */ | "startSmartOblique" /** ⚠️ NON-SPEC — observed in real DJI KMZ exports, absent from WPML 1.15 docs. */ | "stopSmartOblique" /** Starts time-lapse (interval) shooting for a mapping strip. */ | "startTimeLapse" /** Stops time-lapse shooting. */ | "stopTimeLapse" /** Locks gimbal angle during a mapping strip. */ | "gimbalAngleLock" /** Unlocks gimbal angle (no params in XML). */ | "gimbalAngleUnlock" /** Sets camera focus mode (manual / auto). */ | "setFocusType";
63
- type GimbalHeadingYawBase = "north" | "aircraft";
64
- type GimbalRotateMode = "absoluteAngle";
65
- type AircraftPathMode = "clockwise" | "counterClockwise";
66
- type RecordPointCloudOperate = "startRecord" | "pauseRecord" | "resumeRecord" | "stopRecord";
67
- type PanoShotSubMode = "panoShot_360";
68
- type OrientedPhotoMode = "normalPhoto" | "lowLightSmartShooting";
55
+ export type LensType = "wide" | "zoom" | "ir" | "narrow_band" | "visable";
56
+ export type FocusMode = "firstPoint" | "custom";
57
+ export type MeteringMode = "average" | "spot";
58
+ export type LidarReturnMode = "singleReturnStrongest" | "dualReturn" | "tripleReturn";
59
+ export type LidarScanningMode = "repetitive" | "nonRepetitive";
60
+ export type ActionGroupMode = "sequence";
61
+ export type ActionTriggerType = "reachPoint" | "betweenAdjacentPoints" | "betweenAdjacentPointsIncludeFirstPoint" | "multipleTiming" | "multipleDistance";
62
+ export type ActionActuatorFunc = "targetDetection" | "takePhoto" | "startRecord" | "stopRecord" | "focus" | "zoom" | "customDirName" | "gimbalRotate" | "rotateYaw" | "hover" | "gimbalEvenlyRotate" | "accurateShoot" | "orientedShoot" | "panoShot" | "recordPointCloud" | "megaphone" | "searchlight" |
63
+ /** ⚠️ NON-SPEC — observed in real DJI KMZ exports, absent from WPML 1.15 docs. */
64
+ "startSmartOblique" |
65
+ /** ⚠️ NON-SPEC — observed in real DJI KMZ exports, absent from WPML 1.15 docs. */
66
+ "stopSmartOblique" |
67
+ /** Starts time-lapse (interval) shooting for a mapping strip. */
68
+ "startTimeLapse" |
69
+ /** Stops time-lapse shooting. */
70
+ "stopTimeLapse" |
71
+ /** Locks gimbal angle during a mapping strip. */
72
+ "gimbalAngleLock" |
73
+ /** Unlocks gimbal angle (no params in XML). */
74
+ "gimbalAngleUnlock" |
75
+ /** Sets camera focus mode (manual / auto). */
76
+ "setFocusType";
77
+ export type GimbalHeadingYawBase = "north" | "aircraft";
78
+ export type GimbalRotateMode = "absoluteAngle";
79
+ export type AircraftPathMode = "clockwise" | "counterClockwise";
80
+ export type RecordPointCloudOperate = "startRecord" | "pauseRecord" | "resumeRecord" | "stopRecord";
81
+ export type PanoShotSubMode = "panoShot_360";
82
+ export type OrientedPhotoMode = "normalPhoto" | "lowLightSmartShooting";
69
83
  //#endregion
70
84
  //#region src/types/drone-payload.d.ts
71
- interface DroneInfo {
85
+ export interface DroneInfo {
72
86
  droneEnumValue: number;
73
87
  droneSubEnumValue?: number;
74
88
  }
75
- interface PayloadInfo {
89
+ export interface PayloadInfo {
76
90
  payloadEnumValue: number;
77
91
  /**
78
92
  * Payload sub-type (`type-subtype-gimbalindex`, the middle field). Non-standard
@@ -85,7 +99,7 @@ interface PayloadInfo {
85
99
  equivalentFocalLength?: number;
86
100
  }
87
101
  /** Aircraft `{ droneEnumValue, droneSubEnumValue }` tuples. */
88
- declare const DroneEnum: {
102
+ export declare const DroneEnum: {
89
103
  readonly M400: {
90
104
  readonly droneEnumValue: 103;
91
105
  readonly droneSubEnumValue: 0;
@@ -144,7 +158,7 @@ declare const DroneEnum: {
144
158
  };
145
159
  };
146
160
  /** Payload `{ payloadEnumValue, payloadPositionIndex }` tuples for common cameras. */
147
- declare const PayloadEnum: {
161
+ export declare const PayloadEnum: {
148
162
  readonly M30Camera: {
149
163
  readonly payloadEnumValue: 52;
150
164
  readonly payloadSubEnumValue: 0;
@@ -251,7 +265,7 @@ declare const PayloadEnum: {
251
265
  * `wpml:missionConfig` — shared between template.kml and waylines.wpml.
252
266
  * See `docs/kmz/common-element.html` §missionConfig.
253
267
  */
254
- interface MissionConfig {
268
+ export interface MissionConfig {
255
269
  flyToWaylineMode: FlyToWaylineMode;
256
270
  finishAction: FinishAction;
257
271
  exitOnRCLost: ExitOnRCLost;
@@ -271,7 +285,7 @@ interface MissionConfig {
271
285
  /** Only M3D/M3TD, M4D/M4TD, M4E/M4T. */
272
286
  autoRerouteInfo?: AutoRerouteInfo;
273
287
  }
274
- interface AutoRerouteInfo {
288
+ export interface AutoRerouteInfo {
275
289
  missionAutoRerouteMode: boolean;
276
290
  transitionalAutoRerouteMode: boolean;
277
291
  }
@@ -279,7 +293,7 @@ interface AutoRerouteInfo {
279
293
  * `wpml:payloadParam` — per-payload imaging settings.
280
294
  * Lives under template `Folder`.
281
295
  */
282
- interface PayloadParam {
296
+ export interface PayloadParam {
283
297
  payloadPositionIndex: number;
284
298
  focusMode?: FocusMode;
285
299
  meteringMode?: MeteringMode;
@@ -302,7 +316,7 @@ interface PayloadParam {
302
316
  * `wpml:waypointHeadingParam` & `wpml:globalWaypointHeadingParam`.
303
317
  * See `docs/kmz/common-element.html` §waypointHeadingParam.
304
318
  */
305
- interface WaypointHeadingParam {
319
+ export interface WaypointHeadingParam {
306
320
  waypointHeadingMode: WaypointHeadingMode;
307
321
  /** Required iff `waypointHeadingMode === "smoothTransition"`. Range `[-180, 180]`. */
308
322
  waypointHeadingAngle?: Degrees;
@@ -321,7 +335,7 @@ interface WaypointHeadingParam {
321
335
  * `wpml:waypointTurnParam`.
322
336
  * See `docs/kmz/common-element.html` §waypointTurnParam.
323
337
  */
324
- interface WaypointTurnParam {
338
+ export interface WaypointTurnParam {
325
339
  waypointTurnMode: WaypointTurnMode;
326
340
  /**
327
341
  * Required iff `waypointTurnMode === "coordinateTurn"`
@@ -333,7 +347,7 @@ interface WaypointTurnParam {
333
347
  * `wpml:waylineCoordinateSysParam`.
334
348
  * Mapping templates require globalShootHeight + surfaceFollowModeEnable.
335
349
  */
336
- interface WaylineCoordinateSysParam {
350
+ export interface WaylineCoordinateSysParam {
337
351
  /** Currently only `"WGS84"` is allowed. */
338
352
  coordinateMode: CoordinateMode;
339
353
  heightMode: TemplateHeightMode;
@@ -360,7 +374,7 @@ interface WaylineCoordinateSysParam {
360
374
  * `wpml:mappingHeadingParam` — only on `mapping2d` Folder
361
375
  * (M3E/M3T/M3M, M3D/M3TD, M4D/M4TD, M4E/M4T).
362
376
  */
363
- interface MappingHeadingParam {
377
+ export interface MappingHeadingParam {
364
378
  mappingHeadingMode: MappingHeadingMode;
365
379
  /** Required iff `mappingHeadingMode === "fixed"`. Range `[0, 360]`. */
366
380
  mappingHeadingAngle?: Degrees;
@@ -369,7 +383,7 @@ interface MappingHeadingParam {
369
383
  * `wpml:overlap` — child of mapping2d / mapping3d / mappingStrip Folders.
370
384
  * All fields individually optional in spec but at least one ortho pair is required in practice.
371
385
  */
372
- interface Overlap {
386
+ export interface Overlap {
373
387
  orthoLidarOverlapH?: number;
374
388
  orthoLidarOverlapW?: number;
375
389
  orthoCameraOverlapH?: number;
@@ -387,7 +401,7 @@ interface Overlap {
387
401
  * - `actionGroupId` is unique within the entire KMZ (monotonically from 0).
388
402
  * - `actionId` is scoped within its group.
389
403
  */
390
- interface ActionGroup {
404
+ export interface ActionGroup {
391
405
  actionGroupId: number;
392
406
  actionGroupStartIndex: number;
393
407
  actionGroupEndIndex: number;
@@ -395,19 +409,19 @@ interface ActionGroup {
395
409
  actionTrigger: ActionTrigger;
396
410
  action: Action[];
397
411
  }
398
- interface ActionTrigger {
412
+ export interface ActionTrigger {
399
413
  actionTriggerType: ActionTriggerType;
400
414
  /** Seconds for `multipleTiming`, meters for `multipleDistance`. */
401
415
  actionTriggerParam?: number;
402
416
  }
403
417
  /** Discriminated by `actionActuatorFunc`. */
404
- type Action = TargetDetectionAction | TakePhotoAction | StartRecordAction | StopRecordAction | FocusAction | ZoomAction | CustomDirNameAction | GimbalRotateAction | RotateYawAction | HoverAction | GimbalEvenlyRotateAction | AccurateShootAction | OrientedShootAction | PanoShotAction | RecordPointCloudAction | MegaphoneAction | SearchlightAction | StartSmartObliqueAction | StopSmartObliqueAction | StartTimeLapseAction | StopTimeLapseAction | GimbalAngleLockAction | GimbalAngleUnlockAction | SetFocusTypeAction;
418
+ export type Action = TargetDetectionAction | TakePhotoAction | StartRecordAction | StopRecordAction | FocusAction | ZoomAction | CustomDirNameAction | GimbalRotateAction | RotateYawAction | HoverAction | GimbalEvenlyRotateAction | AccurateShootAction | OrientedShootAction | PanoShotAction | RecordPointCloudAction | MegaphoneAction | SearchlightAction | StartSmartObliqueAction | StopSmartObliqueAction | StartTimeLapseAction | StopTimeLapseAction | GimbalAngleLockAction | GimbalAngleUnlockAction | SetFocusTypeAction;
405
419
  interface ActionBase<F extends string, P> {
406
420
  actionId: number;
407
421
  actionActuatorFunc: F;
408
422
  actionActuatorFuncParam: P;
409
423
  }
410
- interface TargetDetectionParam {
424
+ export interface TargetDetectionParam {
411
425
  focalLength?: number;
412
426
  payloadPositionIndex: number;
413
427
  useGlobalPayloadLensIndex: boolean;
@@ -430,27 +444,27 @@ interface TargetDetectionParam {
430
444
  targetType: string;
431
445
  };
432
446
  }
433
- type TargetDetectionAction = ActionBase<"targetDetection", TargetDetectionParam>;
434
- interface TakePhotoParam {
447
+ export type TargetDetectionAction = ActionBase<"targetDetection", TargetDetectionParam>;
448
+ export interface TakePhotoParam {
435
449
  payloadPositionIndex: number;
436
450
  fileSuffix?: string;
437
451
  payloadLensIndex?: LensType[];
438
452
  useGlobalPayloadLensIndex: boolean;
439
453
  }
440
- type TakePhotoAction = ActionBase<"takePhoto", TakePhotoParam>;
441
- interface StartRecordParam {
454
+ export type TakePhotoAction = ActionBase<"takePhoto", TakePhotoParam>;
455
+ export interface StartRecordParam {
442
456
  payloadPositionIndex: number;
443
457
  fileSuffix?: string;
444
458
  payloadLensIndex?: LensType[];
445
459
  useGlobalPayloadLensIndex: boolean;
446
460
  }
447
- type StartRecordAction = ActionBase<"startRecord", StartRecordParam>;
448
- interface StopRecordParam {
461
+ export type StartRecordAction = ActionBase<"startRecord", StartRecordParam>;
462
+ export interface StopRecordParam {
449
463
  payloadPositionIndex: number;
450
464
  payloadLensIndex?: LensType[];
451
465
  }
452
- type StopRecordAction = ActionBase<"stopRecord", StopRecordParam>;
453
- interface FocusParam {
466
+ export type StopRecordAction = ActionBase<"stopRecord", StopRecordParam>;
467
+ export interface FocusParam {
454
468
  payloadPositionIndex: number;
455
469
  isPointFocus: boolean;
456
470
  focusX: number;
@@ -464,19 +478,19 @@ interface FocusParam {
464
478
  /** Calibration focus flag, observed in mapping WPML exports. */
465
479
  isCalibrationFocus?: boolean;
466
480
  }
467
- type FocusAction = ActionBase<"focus", FocusParam>;
468
- interface ZoomParam {
481
+ export type FocusAction = ActionBase<"focus", FocusParam>;
482
+ export interface ZoomParam {
469
483
  payloadPositionIndex: number;
470
484
  /** mm, > 0. */
471
485
  focalLength: number;
472
486
  }
473
- type ZoomAction = ActionBase<"zoom", ZoomParam>;
474
- interface CustomDirNameParam {
487
+ export type ZoomAction = ActionBase<"zoom", ZoomParam>;
488
+ export interface CustomDirNameParam {
475
489
  payloadPositionIndex: number;
476
490
  directoryName: string;
477
491
  }
478
- type CustomDirNameAction = ActionBase<"customDirName", CustomDirNameParam>;
479
- interface GimbalRotateParam {
492
+ export type CustomDirNameAction = ActionBase<"customDirName", CustomDirNameParam>;
493
+ export interface GimbalRotateParam {
480
494
  payloadPositionIndex: number;
481
495
  gimbalHeadingYawBase: GimbalHeadingYawBase;
482
496
  gimbalRotateMode: GimbalRotateMode;
@@ -490,27 +504,27 @@ interface GimbalRotateParam {
490
504
  /** seconds */
491
505
  gimbalRotateTime: number;
492
506
  }
493
- type GimbalRotateAction = ActionBase<"gimbalRotate", GimbalRotateParam>;
494
- interface RotateYawParam {
507
+ export type GimbalRotateAction = ActionBase<"gimbalRotate", GimbalRotateParam>;
508
+ export interface RotateYawParam {
495
509
  /** `[-180, 180]`, 0=N, 90=E, -90=W, ±180=S. */
496
510
  aircraftHeading: Degrees;
497
511
  /** Required on M300/M350. */
498
512
  aircraftPathMode?: AircraftPathMode;
499
513
  }
500
- type RotateYawAction = ActionBase<"rotateYaw", RotateYawParam>;
501
- interface HoverParam {
514
+ export type RotateYawAction = ActionBase<"rotateYaw", RotateYawParam>;
515
+ export interface HoverParam {
502
516
  /** seconds, > 0. */
503
517
  hoverTime: number;
504
518
  }
505
- type HoverAction = ActionBase<"hover", HoverParam>;
506
- interface GimbalEvenlyRotateParam {
519
+ export type HoverAction = ActionBase<"hover", HoverParam>;
520
+ export interface GimbalEvenlyRotateParam {
507
521
  payloadPositionIndex: number;
508
522
  gimbalPitchRotateAngle: Degrees;
509
523
  }
510
524
  /** Must be paired with `actionTriggerType === "betweenAdjacentPoints"`. */
511
- type GimbalEvenlyRotateAction = ActionBase<"gimbalEvenlyRotate", GimbalEvenlyRotateParam>;
525
+ export type GimbalEvenlyRotateAction = ActionBase<"gimbalEvenlyRotate", GimbalEvenlyRotateParam>;
512
526
  /** Deprecated for M30/M30T after firmware V06.01.10.02. Prefer `orientedShoot`. */
513
- interface AccurateShootParam {
527
+ export interface AccurateShootParam {
514
528
  gimbalPitchRotateAngle: Degrees;
515
529
  gimbalYawRotateAngle: Degrees;
516
530
  focusX: number;
@@ -538,8 +552,8 @@ interface AccurateShootParam {
538
552
  accurateCameraShutterTime?: number;
539
553
  accurateCameraISO?: number;
540
554
  }
541
- type AccurateShootAction = ActionBase<"accurateShoot", AccurateShootParam>;
542
- interface OrientedShootParam {
555
+ export type AccurateShootAction = ActionBase<"accurateShoot", AccurateShootParam>;
556
+ export interface OrientedShootParam {
543
557
  gimbalPitchRotateAngle: Degrees;
544
558
  gimbalYawRotateAngle: Degrees;
545
559
  focusX: number;
@@ -569,8 +583,8 @@ interface OrientedShootParam {
569
583
  orientedCameraISO: number;
570
584
  orientedPhotoMode: OrientedPhotoMode;
571
585
  }
572
- type OrientedShootAction = ActionBase<"orientedShoot", OrientedShootParam>;
573
- interface PanoShotParam {
586
+ export type OrientedShootAction = ActionBase<"orientedShoot", OrientedShootParam>;
587
+ export interface PanoShotParam {
574
588
  payloadPositionIndex?: number;
575
589
  payloadLensIndex?: LensType[];
576
590
  useGlobalPayloadLensIndex?: boolean;
@@ -578,14 +592,14 @@ interface PanoShotParam {
578
592
  actionUUID?: string;
579
593
  panoShotSubMode: PanoShotSubMode;
580
594
  }
581
- type PanoShotAction = ActionBase<"panoShot", PanoShotParam>;
582
- interface RecordPointCloudParam {
595
+ export type PanoShotAction = ActionBase<"panoShot", PanoShotParam>;
596
+ export interface RecordPointCloudParam {
583
597
  payloadPositionIndex: number;
584
598
  recordPointCloudOperate: RecordPointCloudOperate;
585
599
  }
586
- type RecordPointCloudAction = ActionBase<"recordPointCloud", RecordPointCloudParam>;
600
+ export type RecordPointCloudAction = ActionBase<"recordPointCloud", RecordPointCloudParam>;
587
601
  /** M4D/M4TD only. */
588
- interface MegaphoneParam {
602
+ export interface MegaphoneParam {
589
603
  payloadPositionIndex: number;
590
604
  actionUUID: string;
591
605
  /** 0 = start, 1 = stop. */
@@ -603,8 +617,8 @@ interface MegaphoneParam {
603
617
  /** Non-spec DJI Pilot TTS params observed in M4D/M4TD megaphone actions. */
604
618
  ttsparam?: MegaphoneTtsParam;
605
619
  }
606
- type MegaphoneAction = ActionBase<"megaphone", MegaphoneParam>;
607
- interface MegaphoneTtsParam {
620
+ export type MegaphoneAction = ActionBase<"megaphone", MegaphoneParam>;
621
+ export interface MegaphoneTtsParam {
608
622
  text: string;
609
623
  role: "male" | "female";
610
624
  language: "CN";
@@ -614,7 +628,7 @@ interface MegaphoneTtsParam {
614
628
  speed: number;
615
629
  }
616
630
  /** M4D/M4TD only — starts gimbal swing in smart-oblique mode. */
617
- interface SmartObliquePoint {
631
+ export interface SmartObliquePoint {
618
632
  /** seconds before this pose starts; DJI exports currently use 0. */
619
633
  smartObliqueRunningTime: number;
620
634
  /** seconds to hold this pose for smart-oblique shooting. */
@@ -623,20 +637,20 @@ interface SmartObliquePoint {
623
637
  smartObliqueEulerRoll: Degrees;
624
638
  smartObliqueEulerYaw: Degrees;
625
639
  }
626
- interface StartSmartObliqueParam {
640
+ export interface StartSmartObliqueParam {
627
641
  /** Observed in DJI exports; older generated files may omit it. */
628
642
  smartObliqueCycleMode?: "unlimited";
629
643
  payloadPositionIndex: number;
630
644
  smartObliquePoint?: SmartObliquePoint[];
631
645
  }
632
- type StartSmartObliqueAction = ActionBase<"startSmartOblique", StartSmartObliqueParam>;
646
+ export type StartSmartObliqueAction = ActionBase<"startSmartOblique", StartSmartObliqueParam>;
633
647
  /** M4D/M4TD only — stops gimbal swing in smart-oblique mode. */
634
- interface StopSmartObliqueParam {
648
+ export interface StopSmartObliqueParam {
635
649
  payloadPositionIndex: number;
636
650
  }
637
- type StopSmartObliqueAction = ActionBase<"stopSmartOblique", StopSmartObliqueParam>;
651
+ export type StopSmartObliqueAction = ActionBase<"stopSmartOblique", StopSmartObliqueParam>;
638
652
  /** Starts interval (time-lapse) shooting for a mapping strip. */
639
- interface StartTimeLapseParam {
653
+ export interface StartTimeLapseParam {
640
654
  payloadPositionIndex: number;
641
655
  useGlobalPayloadLensIndex: boolean;
642
656
  /** Comma-separated in WPML; may contain visible and infrared lenses together. */
@@ -644,35 +658,35 @@ interface StartTimeLapseParam {
644
658
  /** Minimum shoot interval in seconds. Derived from `forwardGroundSpacing / speed`. */
645
659
  minShootInterval: number;
646
660
  }
647
- type StartTimeLapseAction = ActionBase<"startTimeLapse", StartTimeLapseParam>;
661
+ export type StartTimeLapseAction = ActionBase<"startTimeLapse", StartTimeLapseParam>;
648
662
  /** Stops interval shooting for a mapping strip. */
649
- interface StopTimeLapseParam {
663
+ export interface StopTimeLapseParam {
650
664
  payloadPositionIndex: number;
651
665
  payloadLensIndex: LensType[];
652
666
  }
653
- type StopTimeLapseAction = ActionBase<"stopTimeLapse", StopTimeLapseParam>;
667
+ export type StopTimeLapseAction = ActionBase<"stopTimeLapse", StopTimeLapseParam>;
654
668
  /** Locks gimbal pitch angle during a mapping strip. */
655
- interface GimbalAngleLockParam {
669
+ export interface GimbalAngleLockParam {
656
670
  payloadPositionIndex: number;
657
671
  }
658
- type GimbalAngleLockAction = ActionBase<"gimbalAngleLock", GimbalAngleLockParam>;
672
+ export type GimbalAngleLockAction = ActionBase<"gimbalAngleLock", GimbalAngleLockParam>;
659
673
  /**
660
674
  * Unlocks gimbal angle after a mapping strip ends.
661
675
  * ⚠️ No `actionActuatorFuncParam` element is emitted in XML — this action has no params.
662
676
  */
663
- interface GimbalAngleUnlockAction {
677
+ export interface GimbalAngleUnlockAction {
664
678
  actionId: number;
665
679
  actionActuatorFunc: "gimbalAngleUnlock";
666
680
  }
667
681
  /** Sets camera focus mode (e.g. "manual") before a mapping run. */
668
- interface SetFocusTypeParam {
682
+ export interface SetFocusTypeParam {
669
683
  payloadPositionIndex: number;
670
684
  /** e.g. `"manual"`, `"auto"`. */
671
685
  cameraFocusType: string;
672
686
  }
673
- type SetFocusTypeAction = ActionBase<"setFocusType", SetFocusTypeParam>;
687
+ export type SetFocusTypeAction = ActionBase<"setFocusType", SetFocusTypeParam>;
674
688
  /** M4D/M4TD only. */
675
- interface SearchlightParam {
689
+ export interface SearchlightParam {
676
690
  payloadPositionIndex: number;
677
691
  actionUUID?: string;
678
692
  /** 0 = off, 1 = illuminate, 2 = flash. */
@@ -680,7 +694,7 @@ interface SearchlightParam {
680
694
  /** 0–100. */
681
695
  searchlightBrightness: number;
682
696
  }
683
- type SearchlightAction = ActionBase<"searchlight", SearchlightParam>;
697
+ export type SearchlightAction = ActionBase<"searchlight", SearchlightParam>;
684
698
  //#endregion
685
699
  //#region src/types/placemark.d.ts
686
700
  /**
@@ -688,7 +702,7 @@ type SearchlightAction = ActionBase<"searchlight", SearchlightParam>;
688
702
  *
689
703
  * Note coordinate order: `Point.coordinates` is `lon,lat` per KML (no altitude).
690
704
  */
691
- interface TemplateWaypointPlacemark {
705
+ export interface TemplateWaypointPlacemark {
692
706
  Point: {
693
707
  coordinates: LngLat;
694
708
  };
@@ -719,10 +733,11 @@ interface TemplateWaypointPlacemark {
719
733
  actionGroup?: ActionGroup[];
720
734
  }
721
735
  /** Survey-area boundary polygon, shared by mapping2d / mapping3d Placemarks. */
722
- interface TemplatePolygon {
736
+ export interface TemplatePolygon {
723
737
  outerBoundaryIs: {
724
738
  LinearRing: {
725
- /** Space-separated `lon,lat,alt` triples. */coordinates: string;
739
+ /** Space-separated `lon,lat,alt` triples. */
740
+ coordinates: string;
726
741
  };
727
742
  };
728
743
  }
@@ -730,7 +745,7 @@ interface TemplatePolygon {
730
745
  * `Placemark` inside a `mapping2d` Folder. Per the WPML spec the shooting/mapping
731
746
  * params live HERE alongside the polygon — NOT on the Folder.
732
747
  */
733
- interface Mapping2dPlacemark {
748
+ export interface Mapping2dPlacemark {
734
749
  /** M300/M350 only. */
735
750
  caliFlightEnable?: boolean;
736
751
  elevationOptimizeEnable: boolean;
@@ -763,7 +778,7 @@ interface Mapping2dPlacemark {
763
778
  height: Meters;
764
779
  }
765
780
  /** `Placemark` inside a `mapping3d` (oblique) Folder. Params live here, not on the Folder. */
766
- interface Mapping3dPlacemark {
781
+ export interface Mapping3dPlacemark {
767
782
  caliFlightEnable?: boolean;
768
783
  inclinedGimbalPitch: Degrees;
769
784
  /** Range `[1, 15]`. */
@@ -778,7 +793,7 @@ interface Mapping3dPlacemark {
778
793
  height: Meters;
779
794
  }
780
795
  /** `Placemark` inside a FlightHub 2 patrol-area `targetdetection` Folder. */
781
- interface TargetDetectionPlacemark {
796
+ export interface TargetDetectionPlacemark {
782
797
  direction: Degrees;
783
798
  margin: number;
784
799
  gimbalPitchMode: "fixed";
@@ -794,7 +809,7 @@ interface TargetDetectionPlacemark {
794
809
  action?: TargetDetectionAction;
795
810
  }
796
811
  /** `Placemark` inside a `mappingStrip` Folder — uses a LineString; params live here. */
797
- interface MappingStripPlacemark {
812
+ export interface MappingStripPlacemark {
798
813
  caliFlightEnable: boolean;
799
814
  /** Optional field observed in FlightHub 2 mappingStrip exports. */
800
815
  elevationOptimizeEnable?: boolean;
@@ -813,7 +828,8 @@ interface MappingStripPlacemark {
813
828
  /** Overlap ratios as percentages `[0, 100]`. */
814
829
  overlap: Overlap;
815
830
  LineString: {
816
- /** Space-separated `lon,lat,alt` triples. Alt consumed only when `stripUseTemplateAltitude === true`. */coordinates: string;
831
+ /** Space-separated `lon,lat,alt` triples. Alt consumed only when `stripUseTemplateAltitude === true`. */
832
+ coordinates: string;
817
833
  };
818
834
  ellipsoidHeight: Meters;
819
835
  height: Meters;
@@ -826,7 +842,7 @@ interface MappingStripPlacemark {
826
842
  * The spec's `useGlobalXxx` switches are template-only — in waylines.wpml the
827
843
  * params are inlined unconditionally, so they are required here.
828
844
  */
829
- interface WaylinesPlacemark {
845
+ export interface WaylinesPlacemark {
830
846
  Point: {
831
847
  coordinates: LngLat;
832
848
  };
@@ -854,7 +870,7 @@ interface WaylinesPlacemark {
854
870
  * `template.kml` document. Mirrors `<kml><Document>` structure.
855
871
  * See `docs/kmz/template-kml.html`.
856
872
  */
857
- type Template = WaypointTemplate | Mapping2dTemplate | Mapping3dTemplate | MappingStripTemplate | TargetDetectionTemplate;
873
+ export type Template = WaypointTemplate | Mapping2dTemplate | Mapping3dTemplate | MappingStripTemplate | TargetDetectionTemplate;
858
874
  interface TemplateDocumentBase {
859
875
  /** Unix milliseconds. */
860
876
  author?: string;
@@ -866,10 +882,10 @@ interface TemplateDocumentBase {
866
882
  };
867
883
  missionConfig: MissionConfig;
868
884
  }
869
- interface WaypointTemplate extends TemplateDocumentBase {
885
+ export interface WaypointTemplate extends TemplateDocumentBase {
870
886
  Folder: WaypointFolder;
871
887
  }
872
- interface WaypointFolder {
888
+ export interface WaypointFolder {
873
889
  templateType: "waypoint";
874
890
  /** Range `[0, 65535]`. */
875
891
  templateId: number;
@@ -890,10 +906,10 @@ interface WaypointFolder {
890
906
  globalWaypointHeadingParam: WaypointHeadingParam;
891
907
  Placemark: TemplateWaypointPlacemark[];
892
908
  }
893
- interface Mapping2dTemplate extends TemplateDocumentBase {
909
+ export interface Mapping2dTemplate extends TemplateDocumentBase {
894
910
  Folder: Mapping2dFolder;
895
911
  }
896
- interface Mapping2dFolder {
912
+ export interface Mapping2dFolder {
897
913
  templateType: "mapping2d";
898
914
  templateId: number;
899
915
  waylineCoordinateSysParam: WaylineCoordinateSysParam;
@@ -902,10 +918,10 @@ interface Mapping2dFolder {
902
918
  /** Holds the survey polygon AND all shooting/mapping params (per WPML nesting). */
903
919
  Placemark: Mapping2dPlacemark;
904
920
  }
905
- interface Mapping3dTemplate extends TemplateDocumentBase {
921
+ export interface Mapping3dTemplate extends TemplateDocumentBase {
906
922
  Folder: Mapping3dFolder;
907
923
  }
908
- interface Mapping3dFolder {
924
+ export interface Mapping3dFolder {
909
925
  templateType: "mapping3d";
910
926
  templateId: number;
911
927
  waylineCoordinateSysParam: WaylineCoordinateSysParam;
@@ -914,10 +930,10 @@ interface Mapping3dFolder {
914
930
  /** Holds the survey polygon AND all shooting/mapping params. */
915
931
  Placemark: Mapping3dPlacemark;
916
932
  }
917
- interface TargetDetectionTemplate extends TemplateDocumentBase {
933
+ export interface TargetDetectionTemplate extends TemplateDocumentBase {
918
934
  Folder: TargetDetectionFolder;
919
935
  }
920
- interface TargetDetectionFolder {
936
+ export interface TargetDetectionFolder {
921
937
  templateType: "targetdetection";
922
938
  templateId: number;
923
939
  waylineCoordinateSysParam: WaylineCoordinateSysParam;
@@ -925,10 +941,10 @@ interface TargetDetectionFolder {
925
941
  payloadParam?: PayloadParam;
926
942
  Placemark: TargetDetectionPlacemark;
927
943
  }
928
- interface MappingStripTemplate extends TemplateDocumentBase {
944
+ export interface MappingStripTemplate extends TemplateDocumentBase {
929
945
  Folder: MappingStripFolder;
930
946
  }
931
- interface MappingStripFolder {
947
+ export interface MappingStripFolder {
932
948
  templateType: "mappingStrip";
933
949
  templateId: number;
934
950
  waylineCoordinateSysParam: WaylineCoordinateSysParam;
@@ -944,7 +960,7 @@ interface MappingStripFolder {
944
960
  * The XML `<wpml:startActionGroup>` element only wraps raw `<wpml:action>` items —
945
961
  * it has no `actionGroupId`, `actionGroupMode`, or `actionTrigger` elements.
946
962
  */
947
- interface StartActionGroup {
963
+ export interface StartActionGroup {
948
964
  action: Action[];
949
965
  }
950
966
  /**
@@ -954,11 +970,11 @@ interface StartActionGroup {
954
970
  * Cardinality: `Folder` is `1..*` — `mapping3d` templates expand to 5 Folders
955
971
  * (1 ortho + 4 oblique).
956
972
  */
957
- interface Waylines {
973
+ export interface Waylines {
958
974
  missionConfig: MissionConfig;
959
975
  Folder: WaylinesFolder[];
960
976
  }
961
- interface WaylinesFolder {
977
+ export interface WaylinesFolder {
962
978
  /** Links back to template Folder's `templateId`. */
963
979
  templateId: number;
964
980
  waylineId: number;
@@ -1010,7 +1026,7 @@ interface PlanOptions {
1010
1026
  *
1011
1027
  * Mapping templates require `options.lineSpacing` (meters between flight lines).
1012
1028
  */
1013
- declare function plan(template: Template, options?: PlanOptions): Waylines;
1029
+ export declare function plan(template: Template, options?: PlanOptions): Waylines;
1014
1030
  //#endregion
1015
1031
  //#region src/plan/plan-mapping-strip.d.ts
1016
1032
  interface MappingStripRegion {
@@ -1040,12 +1056,14 @@ interface MappingStripDerived {
1040
1056
  surveyAreaSize: number;
1041
1057
  regions: MappingStripRegion[];
1042
1058
  flightRoutes: MappingStripRegionRoute[];
1059
+ /** Horizontal mission distance, including known ingress and finish travel. */
1043
1060
  totalFlightLength: Meters;
1044
1061
  photoSpacing: Meters;
1045
1062
  estimatedPhotoCount: number;
1063
+ /** Estimated horizontal flying seconds at the configured work/transit speeds. */
1046
1064
  estimatedDuration: number;
1047
1065
  }
1048
- declare function deriveMappingStrip(template: MappingStripTemplate, options?: PlanOptions): MappingStripDerived;
1066
+ export declare function deriveMappingStrip(template: MappingStripTemplate, options?: PlanOptions): MappingStripDerived;
1049
1067
  //#endregion
1050
1068
  //#region src/validate/index.d.ts
1051
1069
  /**
@@ -1054,10 +1072,10 @@ declare function deriveMappingStrip(template: MappingStripTemplate, options?: Pl
1054
1072
  *
1055
1073
  * The function is non-throwing by design — callers decide how to react.
1056
1074
  */
1057
- declare function validate(doc: Template | Waylines): Issue[];
1075
+ export declare function validate(doc: Template | Waylines): Issue[];
1058
1076
  //#endregion
1059
1077
  //#region src/plan/geometry.d.ts
1060
1078
  /** Great-circle distance between two WGS-84 coordinates, in meters. */
1061
- declare function haversineMeters(a: LngLat, b: LngLat): number;
1079
+ export declare function haversineMeters(a: LngLat, b: LngLat): number;
1062
1080
  //#endregion
1063
- export { AccurateShootAction, AccurateShootParam, Action, ActionActuatorFunc, ActionGroup, ActionGroupMode, ActionTrigger, ActionTriggerType, AircraftPathMode, AutoRerouteInfo, CoordinateMode, CustomDirNameAction, CustomDirNameParam, Degrees, DroneEnum, DroneInfo, ExecuteHeightMode, ExecuteRCLostAction, ExitOnRCLost, FinishAction, FlyToWaylineMode, FocusAction, FocusMode, FocusParam, GimbalAngleLockAction, GimbalAngleLockParam, GimbalAngleUnlockAction, GimbalEvenlyRotateAction, GimbalEvenlyRotateParam, GimbalHeadingYawBase, GimbalPitchMode, GimbalRotateAction, GimbalRotateMode, GimbalRotateParam, HoverAction, HoverParam, Issue, KmzError, LensType, LidarReturnMode, LidarScanningMode, LngLat, LngLatHeight, Mapping2dFolder, Mapping2dPlacemark, Mapping2dTemplate, Mapping3dFolder, Mapping3dPlacemark, Mapping3dTemplate, MappingHeadingMode, MappingHeadingParam, type MappingStripDerived, MappingStripFolder, MappingStripPlacemark, type MappingStripRegion, type MappingStripRegionRoute, MappingStripTemplate, MegaphoneAction, MegaphoneParam, MegaphoneTtsParam, MeteringMode, Meters, MetersPerSecond, MissionConfig, OrientedPhotoMode, OrientedShootAction, OrientedShootParam, Overlap, PanoShotAction, PanoShotParam, PanoShotSubMode, PayloadEnum, PayloadInfo, PayloadParam, type PlanOptions, PlannerError, PositioningType, RecordPointCloudAction, RecordPointCloudOperate, RecordPointCloudParam, RotateYawAction, RotateYawParam, SearchlightAction, SearchlightParam, SetFocusTypeAction, SetFocusTypeParam, ShootType, SmartObliquePoint, StartActionGroup, StartRecordAction, StartRecordParam, StartSmartObliqueAction, StartSmartObliqueParam, StartTimeLapseAction, StartTimeLapseParam, StopRecordAction, StopRecordParam, StopSmartObliqueAction, StopSmartObliqueParam, StopTimeLapseAction, StopTimeLapseParam, TakePhotoAction, TakePhotoParam, TargetDetectionAction, TargetDetectionFolder, TargetDetectionParam, TargetDetectionPlacemark, TargetDetectionTemplate, Template, TemplateHeightMode, TemplatePolygon, TemplateType, TemplateWaypointPlacemark, WaylineCoordinateSysParam, Waylines, WaylinesFolder, WaylinesPlacemark, WaypointFolder, WaypointHeadingMode, WaypointHeadingParam, WaypointHeadingPathMode, WaypointTemplate, WaypointTurnMode, WaypointTurnParam, ZoomAction, ZoomParam, degrees, deriveMappingStrip, haversineMeters, meters, metersPerSecond, plan, validate };
1081
+ export type { MappingStripDerived, MappingStripRegion, MappingStripRegionRoute, PlanOptions };