@shenai/capacitor-sdk 3.1.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.
@@ -0,0 +1,612 @@
1
+ export declare enum InitializationResult {
2
+ OK = 0,
3
+ INVALID_API_KEY = 1,
4
+ CONNECTION_ERROR = 2,
5
+ INTERNAL_ERROR = 3
6
+ }
7
+ export declare enum OperatingMode {
8
+ POSITIONING = 0,
9
+ MEASURE = 1,
10
+ SYSTEM_OVERLOADED = 2
11
+ }
12
+ export declare enum CalibrationState {
13
+ CALIBRATED = 0,
14
+ NOT_CALIBRATED = 1,
15
+ OUTDATED = 2
16
+ }
17
+ export declare enum PrecisionMode {
18
+ STRICT = 0,
19
+ RELAXED = 1
20
+ }
21
+ export declare enum MeasurementEnvironmentCondition {
22
+ FACE_POSITION = 0,
23
+ FOREHEAD_VISIBLE = 1,
24
+ GLASSES_NOT_DETECTED = 2,
25
+ SUFFICIENT_LIGHT_LEVEL = 3,
26
+ EVEN_LIGHTING = 4,
27
+ NO_BACKLIGHT = 5,
28
+ FACE_STABLE = 6,
29
+ DEVICE_STABLE = 7
30
+ }
31
+ export declare enum Screen {
32
+ INITIALIZATION = 0,
33
+ ONBOARDING = 1,
34
+ MEASUREMENT = 2,
35
+ INSTRUCTIONS = 3,
36
+ RESULTS = 4,
37
+ HEALTH_RISKS = 5,
38
+ HEALTH_RISKS_EDIT = 6,
39
+ CALIBRATION_ONBOARDING = 7,
40
+ CALIBRATION_FINISH = 8,
41
+ CALIBRATION_DATA_ENTRY = 9,
42
+ DISCLAIMER = 10,
43
+ DASHBOARD = 11
44
+ }
45
+ export declare enum Metric {
46
+ HEART_RATE = 0,
47
+ HRV_SDNN = 1,
48
+ BREATHING_RATE = 2,
49
+ SYSTOLIC_BP = 3,
50
+ DIASTOLIC_BP = 4,
51
+ CARDIAC_STRESS = 5,
52
+ PNS_ACTIVITY = 6,
53
+ CARDIAC_WORKLOAD = 7,
54
+ AGE = 8,
55
+ BMI = 9,
56
+ BLOOD_PRESSURE = 10,
57
+ BLOOD_PRESSURE_SCALE = 11
58
+ }
59
+ export declare enum BmiCategory {
60
+ UNDERWEIGHT_SEVERE = 0,
61
+ UNDERWEIGHT_MODERATE = 1,
62
+ UNDERWEIGHT_MILD = 2,
63
+ NORMAL = 3,
64
+ OVERWEIGHT = 4,
65
+ OBESE_CLASS_I = 5,
66
+ OBESE_CLASS_II = 6,
67
+ OBESE_CLASS_III = 7
68
+ }
69
+ export declare enum HealthIndex {
70
+ WELLNESS_SCORE = 0,
71
+ VASCULAR_AGE = 1,
72
+ CARDIOVASCULAR_DISEASE_RISK = 2,
73
+ HARD_AND_FATAL_EVENTS_RISKS = 3,
74
+ CARDIO_VASCULAR_RISK_SCORE = 4,
75
+ WAIST_TO_HEIGHT_RATIO = 5,
76
+ BODY_FAT_PERCENTAGE = 6,
77
+ BODY_ROUNDNESS_INDEX = 7,
78
+ A_BODY_SHAPE_INDEX = 8,
79
+ CONICITY_INDEX = 9,
80
+ BASAL_METABOLIC_RATE = 10,
81
+ TOTAL_DAILY_ENERGY_EXPENDITURE = 11,
82
+ HYPERTENSION_RISK = 12,
83
+ DIABETES_RISK = 13,
84
+ NON_ALCOHOLIC_FATYY_LIVER_DISEASE_RISK = 14
85
+ }
86
+ export declare enum MeasurementPreset {
87
+ ONE_MINUTE_HR_HRV_BR = 0,
88
+ ONE_MINUTE_BETA_METRICS = 1,
89
+ INFINITE_HR = 2,
90
+ INFINITE_METRICS = 3,
91
+ FOURTY_FIVE_SECONDS_UNVALIDATED = 4,
92
+ THIRTY_SECONDS_UNVALIDATED = 5,
93
+ CUSTOM = 6,
94
+ ONE_MINUTE_ALL_METRICS = 7,
95
+ FOURTY_FIVE_SECONDS_ALL_METRICS = 8,
96
+ THIRTY_SECONDS_ALL_METRICS = 9,
97
+ QUICK_HR_MODE = 10
98
+ }
99
+ export declare enum CameraMode {
100
+ OFF = 0,
101
+ FACING_USER = 1,
102
+ FACING_ENVIRONMENT = 2,
103
+ CUSTOM_FRAMES = 3
104
+ }
105
+ export declare enum CameraError {
106
+ UNKNOWN = 0,
107
+ UNSUPPORTED_MODE = 1,
108
+ NO_CAMERA_DEVICE = 2,
109
+ PERMISSION_NOT_GRANTED = 3,
110
+ INVALID_DEVICE_ID = 4,
111
+ DEVICE_UNAVAILABLE = 5
112
+ }
113
+ export declare enum OnboardingMode {
114
+ HIDDEN = 0,
115
+ SHOW_ONCE = 1,
116
+ SHOW_ALWAYS = 2
117
+ }
118
+ export declare enum UiVersion {
119
+ V1 = 0,
120
+ V2 = 1,
121
+ V3 = 2
122
+ }
123
+ export declare enum InitializationMode {
124
+ MEASUREMENT = 0,
125
+ CALIBRATION = 1,
126
+ CALIBRATED_MEASUREMENT = 2,
127
+ FAST_CALIBRATION = 3
128
+ }
129
+ export declare const enum Event {
130
+ START_BUTTON_CLICKED = 0,
131
+ STOP_BUTTON_CLICKED = 1,
132
+ MEASUREMENT_FINISHED = 2,
133
+ USER_FLOW_FINISHED = 3,
134
+ SCREEN_CHANGED = 4
135
+ }
136
+ export interface InitializationSettings {
137
+ precisionMode?: PrecisionMode;
138
+ operatingMode?: OperatingMode;
139
+ measurementPreset?: MeasurementPreset;
140
+ cameraMode?: CameraMode;
141
+ onboardingMode?: OnboardingMode;
142
+ initializationMode?: InitializationMode;
143
+ offlineProcessing?: boolean;
144
+ showUserInterface?: boolean;
145
+ showFacePositioningOverlay?: boolean;
146
+ showVisualWarnings?: boolean;
147
+ enableCameraSwap?: boolean;
148
+ showFaceMask?: boolean;
149
+ showBloodFlow?: boolean;
150
+ hideShenaiLogo?: boolean;
151
+ includeTimestampInPdf?: boolean;
152
+ pdfEmailSubject?: string;
153
+ pdfEmailBody?: string;
154
+ enableStartAfterSuccess?: boolean;
155
+ enableSummaryScreen?: boolean;
156
+ showResultsFinishButton?: boolean;
157
+ enableHealthRisks?: boolean;
158
+ showHealthIndicesFinishButton?: boolean;
159
+ saveHealthRisksFactors?: boolean;
160
+ showOutOfRangeResultIndicators?: boolean;
161
+ showTrialMetricLabels?: boolean;
162
+ showSignalQualityIndicator?: boolean;
163
+ showSignalTile?: boolean;
164
+ showStartStopButton?: boolean;
165
+ showInfoButton?: boolean;
166
+ showDisclaimer?: boolean;
167
+ enableMeasurementsDashboard?: boolean;
168
+ uiVersion?: UiVersion;
169
+ uiFlowScreens?: Screen[];
170
+ frameWidth?: number;
171
+ frameHeight?: number;
172
+ rotation?: number;
173
+ risksFactors?: RisksFactors;
174
+ }
175
+ export interface CustomMeasurementConfig {
176
+ durationSeconds?: number;
177
+ infiniteMeasurement?: boolean;
178
+ instantMetrics?: Metric[];
179
+ summaryMetrics?: Metric[];
180
+ healthIndices?: HealthIndex[];
181
+ realtimeHrPeriodSeconds?: number;
182
+ realtimeHrvPeriodSeconds?: number;
183
+ realtimeCardiacStressPeriodSeconds?: number;
184
+ }
185
+ export interface CustomColorTheme {
186
+ themeColor: string;
187
+ textColor: string;
188
+ backgroundColor: string;
189
+ tileColor: string;
190
+ buttonMainColor?: string;
191
+ buttonSecondaryColor?: string;
192
+ }
193
+ export declare enum FaceState {
194
+ OK = 0,
195
+ TOO_FAR = 1,
196
+ TOO_CLOSE = 2,
197
+ NOT_CENTERED = 3,
198
+ NOT_VISIBLE = 4,
199
+ UNKNOWN = 5
200
+ }
201
+ export interface NormalizedFaceBbox {
202
+ x: number;
203
+ y: number;
204
+ width: number;
205
+ height: number;
206
+ }
207
+ export declare enum MeasurementState {
208
+ NOT_STARTED = 0,
209
+ WAITING_FOR_FACE = 1,
210
+ RUNNING_SIGNAL_SHORT = 2,
211
+ RUNNING_SIGNAL_GOOD = 3,
212
+ RUNNING_SIGNAL_BAD = 4,
213
+ RUNNING_SIGNAL_BAD_DEVICE_UNSTABLE = 5,
214
+ FINALIZING = 6,
215
+ FINISHED = 7,
216
+ FAILED = 8
217
+ }
218
+ export interface Heartbeat {
219
+ startLocationSec: number;
220
+ endLocationSec: number;
221
+ durationMs: number;
222
+ }
223
+ export interface MeasurementQualityMetrics {
224
+ ppgQualityIndex: number | null;
225
+ bcgQualityIndex: number | null;
226
+ breathingQualityIndex: number | null;
227
+ bloodPressureQualityIndex: number | null;
228
+ expectedSbpMedianAbsErrorMmhg: number | null;
229
+ expectedSbpP80AbsErrorMmhg: number | null;
230
+ expectedSbpMeanAbsErrorMmhg: number | null;
231
+ expectedSbpBalancedMaeMmhg: number | null;
232
+ expectedDbpMedianAbsErrorMmhg: number | null;
233
+ expectedDbpP80AbsErrorMmhg: number | null;
234
+ expectedDbpMeanAbsErrorMmhg: number | null;
235
+ expectedDbpBalancedMaeMmhg: number | null;
236
+ }
237
+ export interface MeasurementResults {
238
+ heartRateBpm: number;
239
+ hrvSdnnMs: number | null;
240
+ hrvLnrmssdMs: number | null;
241
+ stressIndex: number | null;
242
+ parasympatheticActivity: number | null;
243
+ breathingRateBpm: number | null;
244
+ systolicBloodPressureMmhg: number | null;
245
+ diastolicBloodPressureMmhg: number | null;
246
+ cardiacWorkloadMmhgPerSec: number | null;
247
+ ageYears: number | null;
248
+ bmiKgPerM2: number | null;
249
+ bmiCategory?: BmiCategory | null;
250
+ weightKg: number | null;
251
+ heightCm: number | null;
252
+ qualityMetrics: MeasurementQualityMetrics | null;
253
+ heartbeats: Heartbeat[];
254
+ averageSignalQuality: number;
255
+ }
256
+ export interface MeasurementResultsWithMetadata {
257
+ measurementResults: MeasurementResults;
258
+ epochTimestamp: number;
259
+ isCalibration: boolean;
260
+ }
261
+ export interface MeasurementResultsHistory {
262
+ history: MeasurementResultsWithMetadata[];
263
+ }
264
+ export interface MomentaryHrValue {
265
+ timestamp: number;
266
+ value: number;
267
+ }
268
+ export declare enum Gender {
269
+ MALE = 0,
270
+ FEMALE = 1,
271
+ OTHER = 2
272
+ }
273
+ export declare enum PhysicalActivity {
274
+ SEDENTARY = 0,
275
+ LIGHTLY_ACTIVE = 1,
276
+ MODERATELY = 2,
277
+ VERY_ACTIVE = 3,
278
+ EXTRA_ACTIVE = 4
279
+ }
280
+ export declare enum Race {
281
+ WHITE = 0,
282
+ AFRICAN_AMERICAN = 1,
283
+ OTHER = 2
284
+ }
285
+ export declare enum HypertensionTreatment {
286
+ NOT_NEEDED = 0,
287
+ NO = 1,
288
+ YES = 2
289
+ }
290
+ export declare enum ParentalHistory {
291
+ NONE = 0,
292
+ ONE = 1,
293
+ BOTH = 2
294
+ }
295
+ export declare enum FamilyHistory {
296
+ NONE = 0,
297
+ NONE_FIRST_DEGREE = 1,
298
+ FIRST_DEGREE = 2
299
+ }
300
+ export declare enum NAFLDRisk {
301
+ LOW = 0,
302
+ MODERATE = 1,
303
+ HIGH = 2
304
+ }
305
+ export interface HardAndFatalEventsRisks {
306
+ coronaryDeathEventRisk: number | null;
307
+ fatalStrokeEventRisk: number | null;
308
+ totalCVMortalityRisk: number | null;
309
+ hardCVEventRisk: number | null;
310
+ }
311
+ export interface CVDiseasesRisks {
312
+ overallRisk: number | null;
313
+ coronaryHeartDiseaseRisk: number | null;
314
+ strokeRisk: number | null;
315
+ heartFailureRisk: number | null;
316
+ peripheralVascularDiseaseRisk: number | null;
317
+ }
318
+ export interface RisksFactorsScores {
319
+ ageScore: number | null;
320
+ sbpScore: number | null;
321
+ smokingScore: number | null;
322
+ diabetesScore: number | null;
323
+ bmiScore: number | null;
324
+ cholesterolScore: number | null;
325
+ cholesterolHdlScore: number | null;
326
+ totalScore: number | null;
327
+ }
328
+ export interface HealthRisks {
329
+ wellnessScore: number | null;
330
+ hardAndFatalEvents: HardAndFatalEventsRisks;
331
+ cvDiseases: CVDiseasesRisks;
332
+ vascularAge: number | null;
333
+ waistToHeightRatio: number | null;
334
+ bodyFatPercentage: number | null;
335
+ basalMetabolicRate: number | null;
336
+ bodyRoundnessIndex: number | null;
337
+ conicityIndex: number | null;
338
+ aBodyShapeIndex: number | null;
339
+ totalDailyEnergyExpenditure: number | null;
340
+ scores: RisksFactorsScores;
341
+ hypertensionRisk?: number | null;
342
+ diabetesRisk?: number | null;
343
+ nonAlcoholicFattyLiverDiseaseRisk?: NAFLDRisk | null;
344
+ }
345
+ export interface RisksFactors {
346
+ age?: number;
347
+ cholesterol?: number;
348
+ cholesterolHdl?: number;
349
+ sbp?: number;
350
+ dbp?: number;
351
+ isSmoker?: boolean;
352
+ hypertensionTreatment?: HypertensionTreatment;
353
+ hasDiabetes?: boolean;
354
+ bodyHeight?: number;
355
+ bodyWeight?: number;
356
+ waistCircumference?: number;
357
+ neckCircumference?: number;
358
+ hipCircumference?: number;
359
+ gender?: Gender;
360
+ physicalActivity?: PhysicalActivity;
361
+ country?: string;
362
+ race?: Race;
363
+ vegetableFruitDiet?: boolean;
364
+ historyOfHypertension?: boolean;
365
+ historyOfHighGlucose?: boolean;
366
+ fastingGlucose?: number;
367
+ triglyceride?: number;
368
+ parentalHypertension?: ParentalHistory;
369
+ familyDiabetes?: FamilyHistory;
370
+ }
371
+ export interface ViewRect {
372
+ x?: number;
373
+ y?: number;
374
+ width?: number;
375
+ height?: number;
376
+ }
377
+ export interface ShenaiSdkCapacitorPlugin {
378
+ echo(options: {
379
+ value: string;
380
+ }): Promise<{
381
+ value: string;
382
+ }>;
383
+ initialize(options: {
384
+ apiKey: string;
385
+ userId?: string;
386
+ settings?: InitializationSettings;
387
+ }): Promise<{
388
+ value: InitializationResult;
389
+ }>;
390
+ isInitialized(): Promise<{
391
+ value: boolean;
392
+ }>;
393
+ deinitialize(): Promise<void>;
394
+ setViewRect(options: ViewRect): Promise<void>;
395
+ setOverlaysWebview(options: {
396
+ overlay: boolean;
397
+ }): Promise<void>;
398
+ setOperatingMode(options: {
399
+ operatingMode: OperatingMode;
400
+ }): Promise<void>;
401
+ startMeasurement(): Promise<void>;
402
+ stopMeasurement(): Promise<void>;
403
+ resetMeasurementSession(): Promise<void>;
404
+ setPrecisionMode(options: {
405
+ precisionMode: PrecisionMode;
406
+ }): Promise<void>;
407
+ setMeasurementPreset(options: {
408
+ preset: MeasurementPreset;
409
+ }): Promise<void>;
410
+ setCustomMeasurementConfig(options: {
411
+ config: CustomMeasurementConfig;
412
+ }): Promise<void>;
413
+ setCustomColorTheme(options: {
414
+ theme: CustomColorTheme;
415
+ }): Promise<void>;
416
+ setCameraMode(options: {
417
+ cameraMode: CameraMode;
418
+ }): Promise<void>;
419
+ setScreen(options: {
420
+ screen: Screen;
421
+ }): Promise<void>;
422
+ setShowUserInterface(options: {
423
+ value: boolean;
424
+ }): Promise<void>;
425
+ setShowFacePositioningOverlay(options: {
426
+ value: boolean;
427
+ }): Promise<void>;
428
+ setShowVisualWarnings(options: {
429
+ value: boolean;
430
+ }): Promise<void>;
431
+ setEnableCameraSwap(options: {
432
+ value: boolean;
433
+ }): Promise<void>;
434
+ setShowFaceMask(options: {
435
+ value: boolean;
436
+ }): Promise<void>;
437
+ setShowBloodFlow(options: {
438
+ value: boolean;
439
+ }): Promise<void>;
440
+ setIncludeTimestampInPdf(options: {
441
+ value: boolean;
442
+ }): Promise<void>;
443
+ setPdfEmailSubject(options: {
444
+ subject: string;
445
+ }): Promise<void>;
446
+ setPdfEmailBody(options: {
447
+ body: string;
448
+ }): Promise<void>;
449
+ setEnableStartAfterSuccess(options: {
450
+ value: boolean;
451
+ }): Promise<void>;
452
+ setEnableMeasurementsDashboard(options: {
453
+ value: boolean;
454
+ }): Promise<void>;
455
+ setLanguage(options: {
456
+ language: string;
457
+ }): Promise<void>;
458
+ getOperatingMode(): Promise<{
459
+ value: OperatingMode;
460
+ }>;
461
+ getCalibrationState(): Promise<{
462
+ value: CalibrationState;
463
+ }>;
464
+ getPrecisionMode(): Promise<{
465
+ value: PrecisionMode;
466
+ }>;
467
+ getMeasurementPreset(): Promise<{
468
+ value: MeasurementPreset;
469
+ }>;
470
+ getCameraMode(): Promise<{
471
+ value: CameraMode;
472
+ }>;
473
+ getLastCameraError(): Promise<{
474
+ value: CameraError | null;
475
+ }>;
476
+ getScreen(): Promise<{
477
+ value: Screen;
478
+ }>;
479
+ getShowUserInterface(): Promise<{
480
+ value: boolean;
481
+ }>;
482
+ getShowFacePositioningOverlay(): Promise<{
483
+ value: boolean;
484
+ }>;
485
+ getShowVisualWarnings(): Promise<{
486
+ value: boolean;
487
+ }>;
488
+ getEnableCameraSwap(): Promise<{
489
+ value: boolean;
490
+ }>;
491
+ getShowFaceMask(): Promise<{
492
+ value: boolean;
493
+ }>;
494
+ getShowBloodFlow(): Promise<{
495
+ value: boolean;
496
+ }>;
497
+ getIncludeTimestampInPdf(): Promise<{
498
+ value: boolean;
499
+ }>;
500
+ setShowStartStopButton(options: {
501
+ value: boolean;
502
+ }): Promise<void>;
503
+ getShowStartStopButton(): Promise<{
504
+ value: boolean;
505
+ }>;
506
+ setEnableMeasurementsDashboard(options: {
507
+ value: boolean;
508
+ }): Promise<void>;
509
+ getEnableMeasurementsDashboard(): Promise<{
510
+ value: boolean;
511
+ }>;
512
+ setShowInfoButton(options: {
513
+ value: boolean;
514
+ }): Promise<void>;
515
+ getShowInfoButton(): Promise<{
516
+ value: boolean;
517
+ }>;
518
+ getShowDisclaimer(): Promise<{
519
+ value: boolean;
520
+ }>;
521
+ getEnableStartAfterSuccess(): Promise<{
522
+ value: boolean;
523
+ }>;
524
+ getFaceState(): Promise<{
525
+ value: FaceState;
526
+ }>;
527
+ getNormalizedFaceBbox(): Promise<NormalizedFaceBbox | null>;
528
+ getMeasurementState(): Promise<{
529
+ value: MeasurementState;
530
+ }>;
531
+ getCurrentViolatedMeasurementEnvironmentCondition(): Promise<{
532
+ value: MeasurementEnvironmentCondition | null;
533
+ }>;
534
+ isReadyToStartMeasurement(): Promise<{
535
+ value: boolean;
536
+ }>;
537
+ areRequiredModelsDownloaded(): Promise<{
538
+ value: boolean;
539
+ }>;
540
+ getMeasurementProgressPercentage(): Promise<{
541
+ value: number;
542
+ }>;
543
+ getHeartRate10s(): Promise<{
544
+ value: number | null;
545
+ }>;
546
+ getHeartRate4s(): Promise<{
547
+ value: number | null;
548
+ }>;
549
+ getRealtimeMetrics(options: {
550
+ periodSec: number;
551
+ }): Promise<MeasurementResults | null>;
552
+ getMeasurementResults(): Promise<MeasurementResults | null>;
553
+ getMeasurementResultsHistory(): Promise<MeasurementResultsHistory | null>;
554
+ getRealtimeHeartbeats(options?: {
555
+ periodSec?: number;
556
+ }): Promise<Heartbeat[]>;
557
+ getFullPpgSignal(): Promise<{
558
+ value: number[];
559
+ }>;
560
+ setRecordingEnabled(options: {
561
+ enabled: boolean;
562
+ }): Promise<void>;
563
+ getRecordingEnabled(): Promise<{
564
+ value: boolean;
565
+ }>;
566
+ getTotalBadSignalSeconds(): Promise<{
567
+ value: number;
568
+ }>;
569
+ getCurrentSignalQualityMetric(): Promise<{
570
+ value: number;
571
+ }>;
572
+ getSignalQualityMapPng(): Promise<{
573
+ value: number[];
574
+ }>;
575
+ getFaceTexturePng(): Promise<{
576
+ value: number[];
577
+ }>;
578
+ getHealthRisksFactors(): Promise<RisksFactors>;
579
+ getHealthRisks(): Promise<HealthRisks>;
580
+ computeHealthRisks(options: {
581
+ risksFactors: RisksFactors;
582
+ }): Promise<HealthRisks>;
583
+ getMaximalRisks(options: {
584
+ risksFactors: RisksFactors;
585
+ }): Promise<HealthRisks>;
586
+ getMinimalRisks(options: {
587
+ risksFactors: RisksFactors;
588
+ }): Promise<HealthRisks>;
589
+ getReferenceRisks(options: {
590
+ risksFactors: RisksFactors;
591
+ }): Promise<HealthRisks>;
592
+ openMeasurementResultsPdfInBrowser(): Promise<void>;
593
+ sendMeasurementResultsPdfToEmail(options: {
594
+ email: string;
595
+ }): Promise<void>;
596
+ requestMeasurementResultsPdfUrl(): Promise<void>;
597
+ getMeasurementResultsPdfUrl(): Promise<{
598
+ value: string | null;
599
+ }>;
600
+ requestMeasurementResultsPdfBytes(): Promise<void>;
601
+ getMeasurementResultsPdfBytes(): Promise<{
602
+ value: number[] | null;
603
+ }>;
604
+ getResultAsFhirObservation(): Promise<{
605
+ value: string | null;
606
+ }>;
607
+ sendResultFhirObservation(options: {
608
+ url: string;
609
+ }): Promise<{
610
+ value: string | null;
611
+ }>;
612
+ }