/**
 * The objectFit sets how the content of an element should be resized to fit its container.
 *
 * `contain`:
 *
 *  The content is scaled to maintain its aspect ratio while fitting within the element's
 *  content box. The entire object is made to fill the box, while preserving its aspect ratio,
 *  so the object will be "letterboxed" or "pillarboxed" if its aspect ratio does not match the
 *  aspect ratio of the box.
 *
 * `cover`:
 *
 *  The content is sized to maintain its aspect ratio while filling the element's entire
 *  content box. If the object's aspect ratio does not match the aspect ratio of its box, then
 *  the object will be clipped to fit.
 *
 * `none`:
 *
 *  The content is not resized.
 * @enum
 */
declare const objectFit: {
    readonly CONTAIN: "contain";
    readonly COVER: "cover";
    readonly NONE: "none";
};
type ObjectFit = typeof objectFit[keyof typeof objectFit];

interface VideoElementSize {
    width: number;
    height: number;
    offsetX: number;
    offsetY: number;
}

interface Centroids {
    [id: string]: {x: number, y: number };
}

interface MeshAnnotation {
    x: number;
    y: number;
    z: number | undefined;
}

interface Annotations {
    silhouette: MeshAnnotation[],
    centroids: Centroids;
}

interface PosePoints {
    [x: string]: {
        point: number[],
        valid: boolean;
        estimated: boolean;
        quality: number;
    }  
}

interface DfxRect {
    x: number;
    y: number;
    width: number;
    height: number;
}

interface DfxFace {
    detected: boolean;
    id: string;
    poseValid: boolean;
    posePoints: PosePoints,
    faceRect: DfxRect;
}

type ChunkAction = 'CHUNK::PROCESS' | 'FIRST::PROCESS' | 'LAST::PROCESS';

interface ConstraintsConfig {
    backLightMaxPixels_pct: number;
    backLightSearchMult: number;
    backLightThresh: number;
    boxCenterX_pct: number;
    boxCenterY_pct: number;
    boxHeight_pct: number;
    boxWidth_pct: number;
    cameraRot_chunkThresh: number;
    cameraRot_windowThresh: number;
    checkBackLight: boolean;
    checkCameraMovement: boolean;
    checkCentered: boolean;
    checkDistance: boolean;
    checkEyebrowMovement: boolean;
    checkFaceDirection: boolean;
    checkLighting: boolean;
    checkMaxDistance: boolean;
    checkMinFps: boolean;
    checkMovement: boolean;
    chunkMovementThresh_pct: number;
    enableDebugLog: boolean;
    enableFigures: boolean;
    faceRotLR_thresh: number;
    faceRotUD_lowerthresh: number;
    faceRotUD_upperThresh: number;
    hy_faceRotLR_thresh: number;
    hy_maxFaceRotLR_deg: number;
    hy_maxFaceRotUD_deg: number;
    hy_minInterPupilDist_px: number;
    hy_minimumFps: number;
    maxEyebrowMovement_mm: number;
    maxFaceRotLR_deg: number;
    maxFaceRotUD_deg: number;
    maxMovement_mm: number;
    minInterPupilDist_px: number;
    minimumFps: number;
    movementWindow_ms: number;
    threshBright: number;
    threshDark: number;
}

interface ChunkSent {
    data: {
        Params: {
            ID: string;
        };
        Action: ChunkAction;
        Payload: string;
    };
    chunkNumber: number;
    numberChunks: number;
    startTime_s: number;
    endTime_s: number;
    duration_s: number;
    metadata: Uint8Array;
}

/**
 * Face attribute values used to define demographic information
 * @enum
 */
declare const faceAttributeValue: {
    readonly SEX_NOT_PROVIDED: 1;
    readonly SEX_ASSIGNED_MALE_AT_BIRTH: 2;
    readonly SEX_ASSIGNED_FEMALE_AT_BIRTH: 3;
    readonly DIABETES_NONE: 4;
    readonly DIABETES_TYPE1: 5;
    readonly DIABETES_TYPE2: 6;
    readonly SMOKER_TRUE: 0;
    readonly SMOKER_FALSE: 1;
    readonly BLOOD_PRESSURE_MEDICATION_TRUE: 1;
    readonly BLOOD_PRESSURE_MEDICATION_FALSE: 0;
};
/**
 * Face tracker states
 * @enum
 */
declare const faceTrackerState: {
    readonly ASSETS_NOT_DOWNLOADED: "ASSETS_NOT_DOWNLOADED";
    readonly NOT_LOADED: "NOT_LOADED";
    readonly LOADING: "LOADING";
    readonly LOADED: "LOADED";
    readonly READY: "READY";
};
/**
 * Face Tracker State
 *
 * `ASSETS_NOT_DOWNLOADED`: Assets required for face tracking have not been downloaded.
 *
 * `NOT_LOADED`: Face tracker is not loaded.
 *
 * `LOADING`: Face tracker is currently loading.
 *
 * `LOADED`: Face tracker has been loaded but is not yet ready.
 *
 * `READY`: Face tracker is ready to use.
 */
type FaceTrackerState = typeof faceTrackerState[keyof typeof faceTrackerState];
/**
 * Error categories enum
 * @enum
 */
declare const errorCategories: {
    readonly COLLECTOR: "COLLECTOR";
    readonly ASSET_DOWNLOAD: "ASSET_DOWNLOAD";
    readonly WEB_SOCKET: "WEB_SOCKET";
};
/**
 * Error Categories
 *
 * `COLLECTOR`: Errors related to the collector, such as issues with data collection or processing.
 *
 * `ASSET_DOWNLOAD`: Errors related to downloading assets, such as face tracking models or other required files.
 *
 * `WEB_SOCKET`: WebSocket Errors.
 */
type ErrorCategories = typeof errorCategories[keyof typeof errorCategories];
/**
 * Constraint Feedback enum
 * @enum
 */
declare const constraintFeedback: {
    readonly FACE_NONE: "FaceNone";
    readonly FACE_OFF_TARGET: "FaceOffTarget";
    readonly FACE_DIRECTION: "FaceDirection";
    readonly FACE_FAR: "FaceFar";
    readonly FACE_MOVEMENT: "FaceMovement";
    readonly IMAGE_BRIGHT: "ImageBright";
    readonly IMAGE_DARK: "ImageDark";
    readonly IMAGE_QUALITY: "ImageQuality";
    readonly IMAGE_BACKLIT: "ImageBackLit";
    readonly LOW_FPS: "LowFps";
};
/**
 * Constraint Feedback
 *
 * `FaceNone`: No face detected, move face into target region.
 *
 * `FaceOffTarget`: Face not in target region, move face into target region.
 *
 * `FaceDirection`: Not looking at camera, look straight at the camera.
 *
 * `FaceFar`: Too far from camera, move closer to the camera.
 *
 * `FaceMovement`: Moving too much, hold still.
 *
 * `ImageBright`: Image too bright, try a darker room.
 *
 * `ImageDark`: Image too dark, try a brighter room.
 *
 * `ImageQuality`: Bad image quality, improve image quality - try alternate webcam.
 *
 * `ImageBackLit`: Backlit face, remove backlight behind face.
 *
 * `LowFps`: Framerate too low, try alternate webcam or a brighter room.
 *
 */
type ConstraintFeedback = typeof constraintFeedback[keyof typeof constraintFeedback];
/**
 * Constraint Status enum
 * @enum
 */
declare const constraintStatus: {
    readonly GOOD: "Good";
    readonly WARN: "Warn";
    readonly ERROR: "Error";
};
/**
 * Constraint Feedback
 *
 * `Good`: indicates there is nothing presently detected in constraints
 *
 * `Warn`: indicates a problem that needs to be corrected
 *
 * `Error`: indicates a problem that has failed the measurement
 */
type ConstraintStatus = typeof constraintStatus[keyof typeof constraintStatus];
/**
 * Real-time Result Errors enum
 * @enum
 */
declare const realtimeResultErrors: {
    readonly WORKER_ERROR: "WORKER_ERROR";
    readonly LIVENESS_ERROR: "LIVENESS_ERROR";
    readonly ANALYSIS_ERROR: "ANALYSIS_ERROR";
};
/**
 * A measurement may have one of the following errors received from the DeepAffex® backend:
 *
 * `WORKER_ERROR`: It is an unrecoverable internal error at the DeepAffex® backend.
 *
 * `LIVENESS_ERROR`: The SNR (Signal to Noise Ratio) of the entire measurement was
 * too low to meet our minimum threshold (0.5 dB). If this error is received then
 * the measurement will only return one point i.e. SNR with -100 as the value.
 *
 * `ANALYSIS_ERROR`: indicates a problem that has failed the measurement.
 * There was a failure while computing a signal. The returned JSON will have a
 * `signal_id` key and a value string indicating the reason behind failure.
 */
type RealtimeResultErrors = typeof realtimeResultErrors[keyof typeof realtimeResultErrors];
/**
 * Notes in real-time results
 * @enum
 */
declare const realtimeResultNotes: {
    readonly NOTE_USED_PRED_DEMOG: "NOTE_USED_PRED_DEMOG";
    readonly NOTE_SNR_BELOW_THRESHOLD: "NOTE_SNR_BELOW_THRESHOLD";
    readonly NOTE_FT_LIVENSSS_FAILED: "NOTE_FT_LIVENSSS_FAILED";
    readonly NOTE_MODEL_LIVENSSS_FAILED: "NOTE_MODEL_LIVENSSS_FAILED";
    readonly NOTE_MISSING_MEDICAL_INFO: "NOTE_MISSING_MEDICAL_INFO";
    readonly NOTE_DEGRADED_ACCURACY: "NOTE_DEGRADED_ACCURACY";
};
/**
 * Real-time results may also contain notes for each Point. They provide additional
 * information about the computation of the signal on the Cloud. If present for a
 * specific DFX Point, notes will be as a value to the "Notes" key in that point.
 * (e.g., for ABSI they will be at result/"Channels/"ABSI"/"Notes")."Notes" is an
 * enum; multiple notes may be present against a single Point.
 * They are described below:
 *
 * `NOTE_USED_PRED_DEMOG`: 	User profile data was predicted for computations since
 * user-entered data was missing
 *
 * `NOTE_SNR_BELOW_THRESHOLD`: SNR was below 0.5 db; no additional signals were computed
 *
 * `NOTE_FT_LIVENSSS_FAILED`: First liveness test failed
 *
 * `NOTE_MODEL_LIVENSSS_FAILED`: Second liveness test failed
 *
 * `NOTE_MISSING_MEDICAL_INFO`: Medical history questionnaire information was not sent
 *
 * `NOTE_DEGRADED_ACCURACY`: Signal computation suffered from degraded accuracy
 */
type RealtimeResultNotes = typeof realtimeResultNotes[keyof typeof realtimeResultNotes];

declare const pointGroup: {
    readonly METADATA: "metadata";
    readonly PHYSICAL: "physical";
    readonly GENERAL_RISKS: "generalRisks";
    readonly VITALS: "vitals";
    readonly PHYSIOLOGICAL: "physiological";
    readonly METABOLIC_RISKS: "metabolicRisks";
    readonly BLOOD_BIOMARKERS: "bloodBiomarkers";
    readonly OVERALL: "overall";
    readonly MENTAL: "mental";
    readonly SURVEYS: "surveys";
};
declare const DFX_POINTS: {
    readonly SNR: {
        readonly meta: {
            readonly availableAfterSec: 5;
            readonly group: "metadata";
            readonly range: {
                readonly min: -10;
                readonly max: 20;
            };
            readonly requirements: {
                readonly profileInfo: false;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [];
            };
            readonly dialBandColors: {
                readonly global: [];
            };
        };
    };
    readonly HR_BPM: {
        readonly meta: {
            readonly availableAfterSec: 5;
            readonly group: "vitals";
            readonly range: {
                readonly min: 0;
                readonly max: 140;
            };
            readonly requirements: {
                readonly profileInfo: false;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 20], [20, 24.44], [24.44, 28.88], [28.88, 33.32], [33.32, 37.76], [37.76, 42.2], [42.2, 46.64], [46.64, 51.08], [51.08, 55.52], [55.52, 60]], [[60, 61.33], [61.33, 62.67], [62.67, 64], [64, 65.33], [65.33, 66.67], [66.67, 68], [68, 69.33], [69.33, 70.67], [70.67, 72], [72, 73.33], [73.33, 74.67], [74.67, 76], [76, 77.33], [77.33, 78.67], [78.67, 80], [80, 81.33], [81.33, 82.67], [82.67, 84], [84, 85.33], [85.33, 86.67], [86.67, 88], [88, 89.33], [89.33, 90.67], [90.67, 92], [92, 93.33], [93.33, 94.67], [94.67, 96], [96, 97.33], [97.33, 98.67], [98.67, 100]], [[100, 104], [104, 108], [108, 112], [112, 116], [116, 120], [120, 124], [124, 128], [128, 132], [132, 136], [136, 140], [140, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["YELLOW", "GREEN", "YELLOW"];
            };
        };
    };
    readonly BP_SYSTOLIC: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "vitals";
            readonly range: {
                readonly min: 45;
                readonly max: 180;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 45], [45, 50], [50, 55], [55, 60], [60, 65], [65, 70], [70, 75], [75, 80], [80, 85], [85, 90]], [[90, 93], [93, 96], [96, 99], [99, 102], [102, 105], [105, 108], [108, 111], [111, 114], [114, 117], [117, 120]], [[120, 121], [121, 122], [122, 123], [123, 124], [124, 125], [125, 126], [126, 127], [127, 128], [128, 129], [129, 130]], [[130, 131], [131, 132], [132, 133], [133, 134], [134, 135], [135, 136], [136, 137], [137, 138], [138, 139], [139, 140]], [[140, 144], [144, 148], [148, 152], [152, 156], [156, 160], [160, 164], [164, 168], [168, 172], [172, 176], [176, 180], [180, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["YELLOW", "GREEN", "LIGHT_GREEN", "YELLOW", "RED"];
            };
        };
    };
    readonly BP_DIASTOLIC: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "vitals";
            readonly range: {
                readonly min: 30;
                readonly max: 120;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 30], [30, 33.34], [33.34, 36.67], [36.67, 40], [40, 43.34], [43.34, 46.67], [46.67, 50], [50, 53.33], [53.33, 56.67], [56.67, 60]], [[60, 61], [61, 62], [62, 63], [63, 64], [64, 65], [65, 66], [66, 67], [67, 68], [68, 69], [69, 70]], [[70, 71], [71, 72], [72, 73], [73, 74], [74, 75], [75, 76], [76, 77], [77, 78], [78, 79], [79, 80]], [[80, 81], [81, 82], [82, 83], [83, 84], [84, 85], [85, 86], [86, 87], [87, 88], [88, 89], [89, 90]], [[90, 93], [93, 96], [96, 99], [99, 102], [102, 105], [105, 108], [108, 111], [111, 114], [114, 117], [117, 120], [120, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["YELLOW", "GREEN", "LIGHT_GREEN", "YELLOW", "RED"];
            };
        };
    };
    readonly BR_BPM: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "vitals";
            readonly range: {
                readonly min: 1.2;
                readonly max: 35;
            };
            readonly requirements: {
                readonly profileInfo: false;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 1.2], [1.2, 2.4], [2.4, 3.6], [3.6, 4.8], [4.8, 6], [6, 7.2], [7.2, 8.4], [8.4, 9.6], [9.6, 10.8], [10.8, 12]], [[12, 12.4], [12.4, 12.8], [12.8, 13.2], [13.2, 13.6], [13.6, 14], [14, 14.4], [14.4, 14.8], [14.8, 15.2], [15.2, 15.6], [15.6, 16], [16, 16.5], [16.5, 17], [17, 17.5], [17.5, 18], [18, 18.5], [18.5, 19], [19, 19.5], [19.5, 20], [20, 20.5], [20.5, 21], [21, 21.4], [21.4, 21.8], [21.8, 22.2], [22.2, 22.6], [22.6, 23], [23, 23.4], [23.4, 23.8], [23.8, 24.2], [24.2, 24.6], [24.6, 25]], [[25, 26], [26, 27], [27, 28], [28, 29], [29, 30], [30, 31], [31, 32], [32, 33], [33, 34], [34, 35], [35, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["YELLOW", "GREEN", "YELLOW"];
            };
        };
    };
    readonly HRV_SDNN: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "physiological";
            readonly range: {
                readonly min: 1;
                readonly max: 80;
            };
            readonly requirements: {
                readonly profileInfo: false;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 1.1], [1.1, 2.2], [2.2, 3.2], [3.2, 4.3], [4.3, 5.4], [5.4, 6.5], [6.5, 7.6], [7.6, 8.6], [8.6, 9.7], [9.7, 10.8]], [[10.8, 11.4], [11.4, 11.9], [11.9, 12.5], [12.5, 13], [13, 13.6], [13.6, 14.2], [14.2, 14.7], [14.7, 15.3], [15.3, 15.8], [15.8, 16.4]], [[16.4, 18.3], [18.3, 20.2], [20.2, 22.1], [22.1, 24], [24, 26], [26, 27.9], [27.9, 29.8], [29.8, 31.7], [31.7, 33.6], [33.6, 35.5]], [[35.5, 37.1], [37.1, 38.7], [38.7, 40.3], [40.3, 41.9], [41.9, 43.5], [43.5, 45.1], [45.1, 46.7], [46.7, 48.3], [48.3, 49.9], [49.9, 51.5]], [[51.5, 54.4], [54.4, 57.2], [57.2, 60.1], [60.1, 62.9], [62.9, 65.8], [65.8, 68.6], [68.6, 71.5], [71.5, 74.3], [74.3, 77.2], [77.2, 80], [80, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["RED", "LIGHT_RED", "YELLOW", "LIGHT_GREEN", "GREEN"];
            };
        };
    };
    readonly ABSI: {
        readonly meta: {
            readonly availableAfterSec: 5;
            readonly group: "physical";
            readonly range: {
                readonly min: 6.19;
                readonly max: 8.83;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly globalMale: [[[0, 6.6], [6.6, 6.66], [6.66, 6.71], [6.71, 6.77], [6.77, 6.82], [6.82, 6.88], [6.88, 6.93], [6.93, 6.99], [6.99, 7.04], [7.04, 7.1]], [[7.1, 7.15], [7.15, 7.2], [7.2, 7.25], [7.25, 7.3], [7.3, 7.35], [7.35, 7.4], [7.4, 7.45], [7.45, 7.5], [7.5, 7.55], [7.55, 7.6]], [[7.6, 7.7], [7.7, 7.8], [7.8, 7.9], [7.9, 8], [8, 8.1], [8.1, 8.2], [8.2, 8.3], [8.3, 8.4], [8.4, 8.5], [8.5, 8.6]], [[8.6, 8.65], [8.65, 8.7], [8.7, 8.75], [8.75, 8.8], [8.8, 8.85], [8.85, 8.9], [8.9, 8.95], [8.95, 9], [9, 9.05], [9.05, 9.1]], [[9.1, 9.15], [9.15, 9.2], [9.2, 9.25], [9.25, 9.3], [9.3, 9.35], [9.35, 9.4], [9.4, 9.45], [9.45, 9.5], [9.5, 9.55], [9.55, 9.6], [9.6, number]]];
                readonly globalFemale: [[[0, 6.2], [6.2, 6.27], [6.27, 6.33], [6.33, 6.4], [6.4, 6.47], [6.47, 6.53], [6.53, 6.6], [6.6, 6.67], [6.67, 6.73], [6.73, 6.8]], [[6.8, 6.86], [6.86, 6.92], [6.92, 6.98], [6.98, 7.04], [7.04, 7.1], [7.1, 7.16], [7.16, 7.22], [7.22, 7.28], [7.28, 7.34], [7.34, 7.4]], [[7.4, 7.52], [7.52, 7.64], [7.64, 7.76], [7.76, 7.88], [7.88, 8], [8, 8.12], [8.12, 8.24], [8.24, 8.36], [8.36, 8.48], [8.48, 8.6]], [[8.6, 8.66], [8.66, 8.72], [8.72, 8.78], [8.78, 8.84], [8.84, 8.9], [8.9, 8.96], [8.96, 9.02], [9.02, 9.08], [9.08, 9.14], [9.14, 9.2]], [[9.2, 9.26], [9.26, 9.32], [9.32, 9.38], [9.38, 9.44], [9.44, 9.5], [9.5, 9.56], [9.56, 9.62], [9.62, 9.68], [9.68, 9.74], [9.74, 9.8], [9.8, number]]];
                readonly eastAsiaMale: [[[0, 6.75], [6.75, 6.79], [6.79, 6.83], [6.83, 6.87], [6.87, 6.92], [6.92, 6.96], [6.96, 7], [7, 7.04], [7.04, 7.08], [7.08, 7.12]], [[7.12, 7.16], [7.16, 7.2], [7.2, 7.23], [7.23, 7.27], [7.27, 7.31], [7.31, 7.34], [7.34, 7.38], [7.38, 7.42], [7.42, 7.46], [7.46, 7.49]], [[7.49, 7.57], [7.57, 7.64], [7.64, 7.71], [7.71, 7.79], [7.79, 7.86], [7.86, 7.94], [7.94, 8.01], [8.01, 8.08], [8.08, 8.16], [8.16, 8.23]], [[8.23, 8.27], [8.27, 8.31], [8.31, 8.34], [8.34, 8.38], [8.38, 8.42], [8.42, 8.45], [8.45, 8.49], [8.49, 8.53], [8.53, 8.56], [8.56, 8.6]], [[8.6, 8.64], [8.64, 8.67], [8.67, 8.71], [8.71, 8.75], [8.75, 8.79], [8.79, 8.82], [8.82, 8.86], [8.86, 8.9], [8.9, 8.93], [8.93, 8.97], [8.97, number]]];
                readonly eastAsiaFemale: [[[0, 6.19], [6.19, 6.24], [6.24, 6.29], [6.29, 6.33], [6.33, 6.38], [6.38, 6.43], [6.43, 6.48], [6.48, 6.53], [6.53, 6.58], [6.58, 6.63]], [[6.63, 6.67], [6.67, 6.71], [6.71, 6.76], [6.76, 6.8], [6.8, 6.85], [6.85, 6.89], [6.89, 6.93], [6.93, 6.98], [6.98, 7.02], [7.02, 7.07]], [[7.07, 7.16], [7.16, 7.24], [7.24, 7.33], [7.33, 7.42], [7.42, 7.51], [7.51, 7.6], [7.6, 7.68], [7.68, 7.77], [7.77, 7.86], [7.86, 7.95]], [[7.95, 7.99], [7.99, 8.04], [8.04, 8.08], [8.08, 8.13], [8.13, 8.17], [8.17, 8.21], [8.21, 8.26], [8.26, 8.3], [8.3, 8.35], [8.35, 8.39]], [[8.39, 8.43], [8.43, 8.48], [8.48, 8.52], [8.52, 8.57], [8.57, 8.61], [8.61, 8.65], [8.65, 8.7], [8.7, 8.74], [8.74, 8.79], [8.79, 8.83], [8.83, number]]];
            };
            readonly dialBandColors: {
                readonly globalMale: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
                readonly globalFemale: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
                readonly eastAsiaMale: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
                readonly eastAsiaFemale: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly BMI_CALC: {
        readonly meta: {
            readonly availableAfterSec: 5;
            readonly group: "physical";
            readonly range: {
                readonly min: 10;
                readonly max: 60;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 10], [10, 10.9], [10.9, 11.9], [11.9, 12.8], [12.8, 13.8], [13.8, 14.7], [14.7, 15.7], [15.7, 16.6], [16.6, 17.6], [17.6, 18.5]], [[18.5, 19.2], [19.2, 19.8], [19.8, 20.5], [20.5, 21.1], [21.1, 21.8], [21.8, 22.4], [22.4, 23.1], [23.1, 23.7], [23.7, 24.4], [24.4, 25]], [[25, 25.5], [25.5, 26], [26, 26.5], [26.5, 27], [27, 27.5], [27.5, 28], [28, 28.5], [28.5, 29], [29, 29.5], [29.5, 30]], [[30, 30.5], [30.5, 31], [31, 31.5], [31.5, 32], [32, 32.5], [32.5, 33], [33, 33.5], [33.5, 34], [34, 34.5], [34.5, 35]], [[35, 37.5], [37.5, 40], [40, 42.5], [42.5, 45], [45, 47.5], [47.5, 50], [50, 52.5], [52.5, 55], [55, 57.5], [57.5, 60], [60, number]]];
                readonly eastAsiaMale: [[[0, 10], [10, 10.9], [10.9, 11.9], [11.9, 12.8], [12.8, 13.8], [13.8, 14.7], [14.7, 15.7], [15.7, 16.6], [16.6, 17.6], [17.6, 18.5]], [[18.5, 19.1], [19.1, 19.6], [19.6, 20.2], [20.2, 20.7], [20.7, 21.3], [21.3, 21.8], [21.8, 22.4], [22.4, 22.9], [22.9, 23.5], [23.5, 24]], [[24, 24.4], [24.4, 24.8], [24.8, 25.2], [25.2, 25.6], [25.6, 26], [26, 26.4], [26.4, 26.8], [26.8, 27.2], [27.2, 27.6], [27.6, 28]], [[28, 28.7], [28.7, 29.4], [29.4, 30.1], [30.1, 30.8], [30.8, 31.5], [31.5, 32.2], [32.2, 32.9], [32.9, 33.6], [33.6, 34.3], [34.3, 35], [35, number]]];
                readonly eastAsiaFemale: [[[0, 10], [10, 10.9], [10.9, 11.9], [11.9, 12.8], [12.8, 13.8], [13.8, 14.7], [14.7, 15.7], [15.7, 16.6], [16.6, 17.6], [17.6, 18.5]], [[18.5, 19.1], [19.1, 19.6], [19.6, 20.2], [20.2, 20.7], [20.7, 21.3], [21.3, 21.8], [21.8, 22.4], [22.4, 22.9], [22.9, 23.5], [23.5, 24]], [[24, 24.4], [24.4, 24.8], [24.8, 25.2], [25.2, 25.6], [25.6, 26], [26, 26.4], [26.4, 26.8], [26.8, 27.2], [27.2, 27.6], [27.6, 28]], [[28, 28.7], [28.7, 29.4], [29.4, 30.1], [30.1, 30.8], [30.8, 31.5], [31.5, 32.2], [32.2, 32.9], [32.9, 33.6], [33.6, 34.3], [34.3, 35], [35, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["YELLOW", "GREEN", "YELLOW", "LIGHT_RED", "RED"];
                readonly eastAsiaMale: ["YELLOW", "GREEN", "YELLOW", "RED"];
                readonly eastAsiaFemale: ["YELLOW", "GREEN", "YELLOW", "RED"];
            };
        };
    };
    readonly BP_RPP: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "physiological";
            readonly range: {
                readonly min: 3.71;
                readonly max: 4.28;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 3.71], [3.71, 3.72], [3.72, 3.73], [3.73, 3.74], [3.74, 3.75], [3.75, 3.76], [3.76, 3.77], [3.77, 3.78], [3.78, 3.79], [3.79, 3.8]], [[3.8, 3.81], [3.81, 3.82], [3.82, 3.83], [3.83, 3.84], [3.84, 3.85], [3.85, 3.86], [3.86, 3.87], [3.87, 3.88], [3.88, 3.89], [3.89, 3.9]], [[3.9, 3.91], [3.91, 3.93], [3.93, 3.95], [3.95, 3.97], [3.97, 3.99], [3.99, 4.01], [4.01, 4.03], [4.03, 4.05], [4.05, 4.06], [4.06, 4.08]], [[4.08, 4.09], [4.09, 4.1], [4.1, 4.11], [4.11, 4.12], [4.12, 4.13], [4.13, 4.14], [4.14, 4.15], [4.15, 4.16], [4.16, 4.17], [4.17, 4.18]], [[4.18, 4.19], [4.19, 4.2], [4.2, 4.21], [4.21, 4.22], [4.22, 4.23], [4.23, 4.24], [4.24, 4.25], [4.25, 4.26], [4.26, 4.27], [4.27, 4.28], [4.28, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly BP_CVD: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "generalRisks";
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: true;
            };
            readonly ranges: {
                readonly global: [[[0, 0.5], [0.5, 1], [1, 1.5], [1.5, 2], [2, 2.5], [2.5, 3], [3, 3.5], [3.5, 4], [4, 4.5], [4.5, 5]], [[5, 5.25], [5.25, 5.5], [5.5, 5.75], [5.75, 6], [6, 6.25], [6.25, 6.5], [6.5, 6.75], [6.75, 7], [7, 7.25]], [[7.25, 7.5], [7.5, 7.75], [7.75, 8], [8, 8.25], [8.25, 8.5], [8.5, 8.75], [8.75, 9], [9, 9.25], [9.25, 9.5], [9.5, 9.75], [9.75, 10]], [[10, 11], [11, 12], [12, 13], [13, 14], [14, 15], [15, 16], [16, 17], [17, 18], [18, 19], [19, 20]], [[20, 28], [28, 36], [36, 44], [44, 52], [52, 60], [60, 68], [68, 76], [76, 84], [84, 92], [92, 100], [100, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly HEALTH_SCORE: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "overall";
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: true;
            };
            readonly ranges: {
                readonly global: [[[0, 2], [2, 4], [4, 6], [6, 8], [8, 10], [10, 12], [12, 14], [14, 16], [16, 18], [18, 20]], [[20, 22], [22, 24], [24, 26], [26, 28], [28, 30], [30, 32], [32, 34], [34, 36], [36, 38], [38, 40]], [[40, 42], [42, 44], [44, 46], [46, 48], [48, 50], [50, 52], [52, 54], [54, 56], [56, 58], [58, 60]], [[60, 62], [62, 64], [64, 66], [66, 68], [68, 70], [70, 72], [72, 74], [74, 76], [76, 78], [78, 80]], [[80, 82], [82, 84], [84, 86], [86, 88], [88, 90], [90, 92], [92, 94], [94, 96], [96, 98], [98, 100], [100, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["RED", "LIGHT_RED", "YELLOW", "LIGHT_GREEN", "GREEN"];
            };
        };
    };
    readonly BP_HEART_ATTACK: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "generalRisks";
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: true;
            };
            readonly ranges: {
                readonly global: [[[0, 0.17], [0.17, 0.33], [0.33, 0.5], [0.5, 0.66], [0.66, 0.83], [0.83, 0.99], [0.99, 1.16], [1.16, 1.32], [1.32, 1.49], [1.49, 1.65]], [[1.65, 1.73], [1.73, 1.82], [1.82, 1.9], [1.9, 1.98], [1.98, 2.06], [2.06, 2.15], [2.15, 2.23], [2.23, 2.31], [2.31, 2.39]], [[2.39, 2.48], [2.48, 2.56], [2.56, 2.64], [2.64, 2.72], [2.72, 2.81], [2.81, 2.89], [2.89, 2.97], [2.97, 3.05], [3.05, 3.14], [3.14, 3.22], [3.22, 3.3]], [[3.3, 3.63], [3.63, 3.96], [3.96, 4.29], [4.29, 4.62], [4.62, 4.95], [4.95, 5.28], [5.28, 5.61], [5.61, 5.94], [5.94, 6.27], [6.27, 6.6]], [[6.6, 9.24], [9.24, 11.88], [11.88, 14.52], [14.52, 17.16], [17.16, 19.8], [19.8, 22.44], [22.4, 25.08], [25.08, 27.72], [27.72, 30.36], [30.36, 33], [33, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly IHB_COUNT: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "vitals";
            readonly range: {
                readonly min: 0;
                readonly max: 4;
            };
            readonly requirements: {
                readonly profileInfo: false;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 4], [4, number]]];
            };
            readonly dialBandColors: {
                readonly global: [];
            };
        };
    };
    readonly MSI: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "mental";
            readonly range: {
                readonly min: 1;
                readonly max: 5.9;
            };
            readonly requirements: {
                readonly profileInfo: false;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[1, 1.1], [1.1, 1.2], [1.2, 1.3], [1.3, 1.4], [1.4, 1.5], [1.5, 1.6], [1.6, 1.7], [1.7, 1.8], [1.8, 1.9], [1.9, 2]], [[2, 2.1], [2.1, 2.2], [2.2, 2.3], [2.3, 2.4], [2.4, 2.5], [2.5, 2.6], [2.6, 2.7], [2.7, 2.8], [2.8, 2.9], [2.9, 3]], [[3, 3.1], [3.1, 3.2], [3.2, 3.3], [3.3, 3.4], [3.4, 3.5], [3.5, 3.6], [3.6, 3.7], [3.7, 3.8], [3.8, 3.9], [3.9, 4]], [[4, 4.1], [4.1, 4.2], [4.2, 4.3], [4.3, 4.4], [4.4, 4.5], [4.5, 4.6], [4.6, 4.7], [4.7, 4.8], [4.8, 4.9], [4.9, 5]], [[5, 5.1], [5.1, 5.2], [5.2, 5.3], [5.3, 5.4], [5.4, 5.5], [5.5, 5.6], [5.6, 5.7], [5.7, 5.8], [5.8, 5.9], [5.9, 6], [6, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly BP_STROKE: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "generalRisks";
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: true;
            };
            readonly ranges: {
                readonly global: [[[0, 0.33], [0.33, 0.66], [0.66, 0.99], [0.99, 1.32], [1.32, 1.65], [1.65, 1.98], [1.98, 2.31], [2.31, 2.64], [2.64, 2.97], [2.97, 3.3]], [[3.3, 3.47], [3.47, 3.63], [3.63, 3.8], [3.8, 3.96], [3.96, 4.13], [4.13, 4.29], [4.29, 4.46], [4.46, 4.62], [4.62, 4.79]], [[4.79, 4.95], [4.95, 5.12], [5.12, 5.28], [5.28, 5.45], [5.45, 5.61], [5.61, 5.78], [5.78, 5.94], [5.94, 6.11], [6.11, 6.27], [6.27, 6.44], [6.44, 6.6]], [[6.6, 7.26], [7.26, 7.92], [7.92, 8.58], [8.58, 9.24], [9.24, 9.9], [9.9, 10.56], [10.56, 11.22], [11.22, 11.88], [11.88, 12.54], [12.54, 13.2]], [[13.2, 18.48], [18.48, 23.76], [23.76, 29.04], [29.04, 34.32], [34.32, 39.6], [39.6, 44.88], [44.88, 50.16], [50.16, 55.44], [55.44, 60.72], [60.72, 66], [66, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly BP_TAU: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "physiological";
            readonly range: {
                readonly min: 0.3;
                readonly max: 3;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 0.3], [0.3, 0.35], [0.35, 0.41], [0.41, 0.46], [0.46, 0.52], [0.52, 0.57], [0.57, 0.62], [0.62, 0.68], [0.68, 0.73], [0.73, 0.79]], [[0.79, 0.82], [0.82, 0.86], [0.86, 0.89], [0.89, 0.92], [0.92, 0.96], [0.96, 0.99], [0.99, 1.02], [1.02, 1.05], [1.05, 1.09], [1.09, 1.12]], [[1.12, 1.19], [1.19, 1.25], [1.25, 1.32], [1.32, 1.38], [1.38, 1.45], [1.45, 1.52], [1.52, 1.58], [1.58, 1.65], [1.65, 1.71], [1.71, 1.78]], [[1.78, 1.81], [1.81, 1.85], [1.85, 1.88], [1.88, 1.91], [1.91, 1.95], [1.95, 1.98], [1.98, 2.01], [2.01, 2.04], [2.04, 2.08], [2.08, 2.11]], [[2.11, 2.2], [2.2, 2.29], [2.29, 2.38], [2.38, 2.47], [2.47, 2.56], [2.56, 2.64], [2.64, 2.73], [2.73, 2.82], [2.82, 2.91], [2.91, 3], [3, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["RED", "LIGHT_RED", "YELLOW", "LIGHT_GREEN", "GREEN"];
            };
        };
    };
    readonly HBA1C_RISK_PROB: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "bloodBiomarkers";
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 2.5], [2.5, 5], [5, 7.5], [7.5, 10], [10, 12.5], [12.5, 15], [15, 17.5], [17.5, 20], [20, 22.5], [22.5, 25]], [[25, 27.5], [27.5, 30], [30, 32.5], [32.5, 35], [35, 37.5], [37.5, 40], [40, 42.5], [42.5, 45]], [[45, 47.5], [47.5, 50], [50, 52.5], [52.5, 55]], [[55, 57.5], [57.5, 60], [60, 62.5], [62.5, 65], [65, 67.5], [67.5, 70], [70, 72.5], [72.5, 75], [75, 77.5]], [[77.5, 80], [80, 82.5], [82.5, 85], [85, 87.5], [87.5, 90], [90, 92.5], [92.5, 95], [95, 97.5], [97.5, 100], [100, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly MFBG_RISK_PROB: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "bloodBiomarkers";
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 2.5], [2.5, 5], [5, 7.5], [7.5, 10], [10, 12.5], [12.5, 15], [15, 17.5], [17.5, 20], [20, 22.5], [22.5, 25]], [[25, 27.5], [27.5, 30], [30, 32.5], [32.5, 35], [35, 37.5], [37.5, 40], [40, 42.5], [42.5, 45]], [[45, 47.5], [47.5, 50], [50, 52.5], [52.5, 55]], [[55, 57.5], [57.5, 60], [60, 62.5], [62.5, 65], [65, 67.5], [67.5, 70], [70, 72.5], [72.5, 75], [75, 77.5]], [[77.5, 80], [80, 82.5], [82.5, 85], [85, 87.5], [87.5, 90], [90, 92.5], [92.5, 95], [95, 97.5], [97.5, 100], [100, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly HPT_RISK_PROB: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "metabolicRisks";
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 2.5], [2.5, 5], [5, 7.5], [7.5, 10], [10, 12.5], [12.5, 15], [15, 17.5], [17.5, 20], [20, 22.5], [22.5, 25]], [[25, 27.5], [27.5, 30], [30, 32.5], [32.5, 35], [35, 37.5], [37.5, 40], [40, 42.5], [42.5, 45]], [[45, 47.5], [47.5, 50], [50, 52.5], [52.5, 55]], [[55, 57.5], [57.5, 60], [60, 62.5], [62.5, 65], [65, 67.5], [67.5, 70], [70, 72.5], [72.5, 75], [75, 77.5]], [[77.5, 80], [80, 82.5], [82.5, 85], [85, 87.5], [87.5, 90], [90, 92.5], [92.5, 95], [95, 97.5], [97.5, 100], [100, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly DBT_RISK_PROB: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "metabolicRisks";
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 2.5], [2.5, 5], [5, 7.5], [7.5, 10], [10, 12.5], [12.5, 15], [15, 17.5], [17.5, 20], [20, 22.5], [22.5, 25]], [[25, 27.5], [27.5, 30], [30, 32.5], [32.5, 35], [35, 37.5], [37.5, 40], [40, 42.5], [42.5, 45]], [[45, 47.5], [47.5, 50], [50, 52.5], [52.5, 55]], [[55, 57.5], [57.5, 60], [60, 62.5], [62.5, 65], [65, 67.5], [67.5, 70], [70, 72.5], [72.5, 75], [75, 77.5]], [[77.5, 80], [80, 82.5], [82.5, 85], [85, 87.5], [87.5, 90], [90, 92.5], [92.5, 95], [95, 97.5], [97.5, 100], [100, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly HDLTC_RISK_PROB: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "metabolicRisks";
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 2.5], [2.5, 5], [5, 7.5], [7.5, 10], [10, 12.5], [12.5, 15], [15, 17.5], [17.5, 20], [20, 22.5], [22.5, 25]], [[25, 27.5], [27.5, 30], [30, 32.5], [32.5, 35], [35, 37.5], [37.5, 40], [40, 42.5], [42.5, 45]], [[45, 47.5], [47.5, 50], [50, 52.5], [52.5, 55]], [[55, 57.5], [57.5, 60], [60, 62.5], [62.5, 65], [65, 67.5], [67.5, 70], [70, 72.5], [72.5, 75], [75, 77.5]], [[77.5, 80], [80, 82.5], [82.5, 85], [85, 87.5], [87.5, 90], [90, 92.5], [92.5, 95], [95, 97.5], [97.5, 100], [100, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly TG_RISK_PROB: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly group: "metabolicRisks";
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly ranges: {
                readonly global: [[[0, 2.5], [2.5, 5], [5, 7.5], [7.5, 10], [10, 12.5], [12.5, 15], [15, 17.5], [17.5, 20], [20, 22.5], [22.5, 25]], [[25, 27.5], [27.5, 30], [30, 32.5], [32.5, 35], [35, 37.5], [37.5, 40], [40, 42.5], [42.5, 45]], [[45, 47.5], [47.5, 50], [50, 52.5], [52.5, 55]], [[55, 57.5], [57.5, 60], [60, 62.5], [62.5, 65], [65, 67.5], [67.5, 70], [70, 72.5], [72.5, 75], [75, 77.5]], [[77.5, 80], [80, 82.5], [82.5, 85], [85, 87.5], [87.5, 90], [90, 92.5], [92.5, 95], [95, 97.5], [97.5, 100], [100, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly AGE: {
        readonly meta: {
            readonly availableAfterSec: 5;
            readonly range: {
                readonly min: 13;
                readonly max: 120;
            };
            readonly requirements: {
                readonly profileInfo: false;
                readonly medicalHistory: false;
            };
            readonly group: "physical";
            readonly ranges: {
                readonly global: [];
            };
            readonly dialBandColors: {
                readonly global: [];
            };
        };
    };
    readonly FLD_RISK_PROB: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly group: "metabolicRisks";
            readonly ranges: {
                readonly global: [[[0, 2.5], [2.5, 5], [5, 7.5], [7.5, 10], [10, 12.5], [12.5, 15], [15, 17.5], [17.5, 20], [20, 22.5], [22.5, 25]], [[25, 27.5], [27.5, 30], [30, 32.5], [32.5, 35], [35, 37.5], [37.5, 40], [40, 42.5], [42.5, 45]], [[45, 47.5], [47.5, 50], [50, 52.5], [52.5, 55]], [[55, 57.5], [57.5, 60], [60, 62.5], [62.5, 65], [65, 67.5], [67.5, 70], [70, 72.5], [72.5, 75], [75, 77.5]], [[77.5, 80], [80, 82.5], [82.5, 85], [85, 87.5], [87.5, 90], [90, 92.5], [92.5, 95], [95, 97.5], [97.5, 100], [100, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly HEIGHT: {
        readonly meta: {
            readonly availableAfterSec: 5;
            readonly range: {
                readonly min: 120;
                readonly max: 220;
            };
            readonly requirements: {
                readonly profileInfo: false;
                readonly medicalHistory: false;
            };
            readonly group: "physical";
            readonly ranges: {
                readonly global: [];
            };
            readonly dialBandColors: {
                readonly global: [];
            };
        };
    };
    readonly MENTAL_SCORE: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly range: {
                readonly min: 1;
                readonly max: 5;
            };
            readonly requirements: {
                readonly profileInfo: false;
                readonly medicalHistory: false;
            };
            readonly group: "overall";
            readonly ranges: {
                readonly global: [[[0, 1.5], [1.5, 2.5], [2.5, 3.5], [3.5, 4.5], [4.5, number]]];
            };
            readonly dialBandColors: {
                readonly global: [];
            };
        };
    };
    readonly OVERALL_METABOLIC_RISK_PROB: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly group: "metabolicRisks";
            readonly ranges: {
                readonly global: [[[0, 2.5], [2.5, 5], [5, 7.5], [7.5, 10], [10, 12.5], [12.5, 15], [15, 17.5], [17.5, 20], [20, 22.5], [22.5, 25]], [[25, 27.5], [27.5, 30], [30, 32.5], [32.5, 35], [35, 37.5], [37.5, 40], [40, 42.5], [42.5, 45]], [[45, 47.5], [47.5, 50], [50, 52.5], [52.5, 55]], [[55, 57.5], [57.5, 60], [60, 62.5], [62.5, 65], [65, 67.5], [67.5, 70], [70, 72.5], [72.5, 75], [75, 77.5]], [[77.5, 80], [80, 82.5], [82.5, 85], [85, 87.5], [87.5, 90], [90, 92.5], [92.5, 95], [95, 97.5], [97.5, 100], [100, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly PHYSICAL_SCORE: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly range: {
                readonly min: 1;
                readonly max: 5;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly group: "overall";
            readonly ranges: {
                readonly global: [[[0, 1.5], [1.5, 2.5], [2.5, 3.5], [3.5, 4.5], [4.5, number]]];
            };
            readonly dialBandColors: {
                readonly global: [];
            };
        };
    };
    readonly PHYSIO_SCORE: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly range: {
                readonly min: 1;
                readonly max: 5;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly group: "overall";
            readonly ranges: {
                readonly global: [[[0, 1.5], [1.5, 2.5], [2.5, 3.5], [3.5, 4.5], [4.5, number]]];
            };
            readonly dialBandColors: {
                readonly global: [];
            };
        };
    };
    readonly RISKS_SCORE: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly range: {
                readonly min: 1;
                readonly max: 5;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: true;
            };
            readonly group: "overall";
            readonly ranges: {
                readonly global: [[[0, 1.5], [1.5, 2.5], [2.5, 3.5], [3.5, 4.5], [4.5, number]]];
            };
            readonly dialBandColors: {
                readonly global: [];
            };
        };
    };
    readonly SURVEY_ANXIETY_MODERATE: {
        readonly meta: {
            readonly availableAfterSec: 0;
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly group: "surveys";
            readonly ranges: {
                readonly global: [[[0, 20], [20, 40], [40, 60], [60, 80], [80, 100]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly SURVEY_DEPRESSION_MODERATE: {
        readonly meta: {
            readonly availableAfterSec: 0;
            readonly range: {
                readonly min: 0;
                readonly max: 100;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly group: "surveys";
            readonly ranges: {
                readonly global: [[[0, 20], [20, 40], [40, 60], [60, 80], [80, 100]]];
            };
            readonly dialBandColors: {
                readonly global: ["GREEN", "LIGHT_GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly VITAL_SCORE: {
        readonly meta: {
            readonly availableAfterSec: 30;
            readonly range: {
                readonly min: 1;
                readonly max: 5;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly group: "overall";
            readonly ranges: {
                readonly global: [[[0, 1.5], [1.5, 2.5], [2.5, 3.5], [3.5, 4.5], [4.5, number]]];
            };
            readonly dialBandColors: {
                readonly global: [];
            };
        };
    };
    readonly WAIST_CIRCUM: {
        readonly meta: {
            readonly availableAfterSec: 5;
            readonly range: {
                readonly min: 0;
                readonly max: number;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly group: "physical";
            readonly ranges: {
                readonly global: [];
            };
            readonly dialBandColors: {
                readonly global: [];
            };
        };
    };
    readonly WAIST_TO_HEIGHT: {
        readonly meta: {
            readonly availableAfterSec: 5;
            readonly range: {
                readonly min: 25;
                readonly max: 70;
            };
            readonly requirements: {
                readonly profileInfo: true;
                readonly medicalHistory: false;
            };
            readonly group: "physical";
            readonly ranges: {
                readonly global: [[[0, 25], [25, 27], [27, 29], [29, 31], [31, 33], [33, 35], [35, 37], [37, 39], [39, 41], [41, 43]], [[43, 44], [44, 45], [45, 46], [46, 47], [47, 48], [48, 49], [49, 50], [50, 51], [51, 52], [52, 53]], [[53, 53.5], [53.5, 54], [54, 54.5], [54.5, 55], [55, 55.5], [55.5, 56], [56, 56.5], [56.5, 57], [57, 57.5], [57.5, 58]], [[58, 58.5], [58.5, 59], [59, 59.5], [59.5, 60], [60, 60.5], [60.5, 61], [61, 61.5], [61.5, 62], [62, 62.5], [62.5, 63]], [[63, 64.2], [64.2, 65.4], [65.4, 66.6], [66.6, 67.8], [67.8, 69], [69, 70.2], [70.2, 71.4], [71.4, 72.6], [72.6, 73.8], [73.8, 75], [75, number]]];
                readonly globalMale: [[[0, 25], [25, 27], [27, 29], [29, 31], [31, 33], [33, 35], [35, 37], [37, 39], [39, 41], [41, 43]], [[43, 44], [44, 45], [45, 46], [46, 47], [47, 48], [48, 49], [49, 50], [50, 51], [51, 52], [52, 53]], [[53, 53.5], [53.5, 54], [54, 54.5], [54.5, 55], [55, 55.5], [55.5, 56], [56, 56.5], [56.5, 57], [57, 57.5], [57.5, 58]], [[58, 58.5], [58.5, 59], [59, 59.5], [59.5, 60], [60, 60.5], [60.5, 61], [61, 61.5], [61.5, 62], [62, 62.5], [62.5, 63]], [[63, 64.2], [64.2, 65.4], [65.4, 66.6], [66.6, 67.8], [67.8, 69], [69, 70.2], [70.2, 71.4], [71.4, 72.6], [72.6, 73.8], [73.8, 75], [75, number]]];
                readonly globalFemale: [[[0, 25], [25, 26.9], [26.9, 28.8], [28.8, 30.6], [30.6, 32.5], [32.5, 34.4], [34.4, 36.3], [36.3, 38.2], [38.2, 40], [40, 42]], [[42, 42.7], [42.7, 43.4], [43.4, 44.1], [44.1, 44.8], [44.8, 45.5], [45.5, 46.2], [46.2, 46.9], [46.9, 47.6], [47.6, 48.3], [48.3, 49]], [[49, 49.5], [49.5, 50], [50, 50.5], [50.5, 51], [51, 51.5], [51.5, 52], [52, 52.5], [52.5, 53], [53, 53.5], [53.5, 54]], [[54, 54.4], [54.4, 54.8], [54.8, 55.2], [55.2, 55.6], [55.6, 56], [56, 56.4], [56.4, 56.8], [56.8, 57.2], [57.2, 57.6], [57.6, 58]], [[58, 59.2], [59.2, 60.4], [60.4, 61.6], [61.6, 62.8], [62.8, 64], [64, 65.2], [65.2, 66.4], [66.4, 67.6], [67.6, 68.8], [68.8, 70], [70, number]]];
                readonly eastAsiaMale: [[[0, 25], [25, 27], [27, 29], [29, 31], [31, 33], [33, 35], [35, 37], [37, 39], [39, 41], [41, 43]], [[43, 44], [44, 45], [45, 46], [46, 47], [47, 48], [48, 49], [49, 50], [50, 51], [51, 52], [52, 53]], [[53, 53.5], [53.5, 54], [54, 54.5], [54.5, 55], [55, 55.5], [55.5, 56], [56, 56.5], [56.5, 57], [57, 57.5], [57.5, 58]], [[58, 58.5], [58.5, 59], [59, 59.5], [59.5, 60], [60, 60.5], [60.5, 61], [61, 61.5], [61.5, 62], [62, 62.5], [62.5, 63]], [[63, 64.2], [64.2, 65.4], [65.4, 66.6], [66.6, 67.8], [67.8, 69], [69, 70.2], [70.2, 71.4], [71.4, 72.6], [72.6, 73.8], [73.8, 75], [75, number]]];
                readonly eastAsiaFemale: [[[0, 25], [25, 26.9], [26.9, 28.8], [28.8, 30.6], [30.6, 32.5], [32.5, 34.4], [34.4, 36.3], [36.3, 38.2], [38.2, 40], [40, 42]], [[42, 42.7], [42.7, 43.4], [43.4, 44.1], [44.1, 44.8], [44.8, 45.5], [45.5, 46.2], [46.2, 46.9], [46.9, 47.6], [47.6, 48.3], [48.3, 49]], [[49, 49.5], [49.5, 50], [50, 50.5], [50.5, 51], [51, 51.5], [51.5, 52], [52, 52.5], [52.5, 53], [53, 53.5], [53.5, 54]], [[54, 54.4], [54.4, 54.8], [54.8, 55.2], [55.2, 55.6], [55.6, 56], [56, 56.4], [56.4, 56.8], [56.8, 57.2], [57.2, 57.6], [57.6, 58]], [[58, 59.2], [59.2, 60.4], [60.4, 61.6], [61.6, 62.8], [62.8, 64], [64, 65.2], [65.2, 66.4], [66.4, 67.6], [67.6, 68.8], [68.8, 70], [70, number]]];
            };
            readonly dialBandColors: {
                readonly global: ["YELLOW", "GREEN", "YELLOW", "LIGHT_RED", "RED"];
                readonly globalMale: ["YELLOW", "GREEN", "YELLOW", "LIGHT_RED", "RED"];
                readonly globalFemale: ["YELLOW", "GREEN", "YELLOW", "LIGHT_RED", "RED"];
                readonly eastAsiaMale: ["YELLOW", "GREEN", "YELLOW", "LIGHT_RED", "RED"];
                readonly eastAsiaFemale: ["YELLOW", "GREEN", "YELLOW", "LIGHT_RED", "RED"];
            };
        };
    };
    readonly WEIGHT: {
        readonly meta: {
            readonly availableAfterSec: 5;
            readonly range: {
                readonly min: 30;
                readonly max: 300;
            };
            readonly requirements: {
                readonly profileInfo: false;
                readonly medicalHistory: false;
            };
            readonly group: "physical";
            readonly ranges: {
                readonly global: [];
            };
            readonly dialBandColors: {
                readonly global: [];
            };
        };
    };
};
type DfxPointId = keyof typeof DFX_POINTS;

interface MeasurementOptions {
    userProfileId?: string;
    partnerId?: string;
}
interface LoggerSettings {
    mediaPipe?: boolean;
    beforeRESTCall?: boolean;
    afterRESTCall?: boolean;
    extractionLibWasm?: boolean;
    apiClient?: boolean;
    webSocket?: boolean;
    extractionWorker?: boolean;
    faceTrackerWorkers?: boolean;
    sdk?: boolean;
}
interface Settings {
    mediaElement: HTMLDivElement;
    assetFolder: string;
    apiUrl?: string;
    logger?: LoggerSettings;
    metrics?: boolean;
    mirrorVideo?: boolean;
    displayMediaStream?: boolean;
    constraintOverrides?: Partial<ConstraintsConfig>;
}
interface Demographics {
    /** age: 13-120 years */
    age: number;
    /** height: 120-220 cm */
    height: number;
    /** weight: 30-300 kg */
    weight: number;
    /** sex: 0 (not provided), 2 (male), 3 (female) */
    sex: number;
    /** smoking: 1 (non-smoker), 0 (smoker) */
    smoking: number;
    /** bloodPressureMedication: 0 (not on medication), 1 (on medication) */
    bloodPressureMedication: number;
    /** diabetes: 4 (none), 5 (type 1), 6 (type 2) */
    diabetes: number;
}
interface ResultsError {
    code: RealtimeResultErrors | 'OK';
    errors: {
        [x in DfxPointId]?: {
            messages: string[];
        };
    };
}
/**
 * "metadata" |
 * "physical" |
 * "generalRisks" |
 * "vitals" |
 * "physiological" |
 * "metabolicRisks" |
 * "bloodBiomarkers" |
 * "overall" |
 * "mental" |
 * "surveys"
 */
type PointGroupType = typeof pointGroup[keyof typeof pointGroup];
type BandColors = ('YELLOW' | 'LIGHT_GREEN' | 'GREEN' | 'LIGHT_RED' | 'RED')[];
interface IMeta {
    availableAfterSec: number;
    range: {
        min: number;
        max: number;
    };
    requirements: {
        profileInfo: boolean;
        medicalHistory: boolean;
    };
    group: PointGroupType;
    ranges: {
        [x: string]: number[][][];
    };
    dialBandColors: {
        [x: string]: BandColors;
    };
}
interface DialSection {
    groupSize: number;
    bandColor: 'YELLOW' | 'LIGHT_GREEN' | 'GREEN' | 'LIGHT_RED' | 'RED';
    range: number[];
}
interface Point {
    channel: string;
    notes: RealtimeResultNotes[];
    value: string;
    dial: {
        sections: DialSection[];
        group: number;
        subGroup: number;
    };
    meta: IMeta;
    info: {
        name: string;
        unit: string;
    };
}
type Points = {
    [x in DfxPointId]?: Point;
};
interface Results {
    measurementId: string;
    measurementResultId: string;
    resultsOrder: number;
    finalChunkNumber: number;
    points: Points;
    errors: ResultsError;
    statusId: string;
}
type IsoDate = `${number}-${number}-${number}T${number}:${number}:${number}.${number}Z`;
interface SDKVersion {
    webSDK: string;
    extractionLib: {
        version: string;
        sdkId: string;
    };
    faceTracker: string;
}
interface Drawables {
    face: DfxFace;
    annotations: Annotations;
    starRating: number;
    percentCompleted: number;
}
interface IMediaElementSize {
    width: number;
    height: number;
    x: number;
    y: number;
}
interface IFrameInfo {
    mediaStreamWidth: number;
    mediaStreamHeight: number;
    faceTrackerWidth: number;
    faceTrackerHeight: number;
}
interface IMaskResize {
    mediaElementSize: IMediaElementSize;
    videoElementSize: VideoElementSize;
    frameInfo: IFrameInfo;
    isPortrait: boolean;
    aspectRatio: number;
}
interface MediaElementResizeEvent extends CustomEvent {
    detail: IMaskResize;
}
type WebSocketError = {
    type: 'DISCONNECTED';
    code: number;
    reason: string;
    wasClean: boolean;
} | {
    type: 'ERROR';
    event: Event;
};

declare class Measurement {
    #private;
    readonly on: {
        /**
         * before REST call
         * @param {IsoDate} timestamp - timestamp of the event
         */
        beforeRESTCall: ((timestamp: IsoDate, actionId: number) => void) | null;
        /**
         * after REST call
         * @param {IsoDate} timestamp - timestamp of the event
         * @param {string} status - HTTP status code
         * @param {unknown} error - error object
         */
        afterRESTCall: ((timestamp: IsoDate, actionId: number, status: string, error: unknown) => void) | null;
        /**
         * bytes downloaded
         * @param {number} bytes - number of bytes downloaded
         * @param {number} uncompressedSize - uncompressed size of the file
         * @param {string} url - download URL
         * @param {boolean} done - true if download is complete
         *
         * Note: If server-side compression is enabled, then you're comparing the downloaded byte count
         * (from the network stream) to the uncompressed file size which is not reliable.
         */
        bytesDownloaded: ((bytes: number, uncompressedSize: number, url: string, done: boolean) => void) | null;
        /**
         * when face tracker state Changes
         * @param {faceTrackerState} state - face tracker state
         */
        faceTrackerStateChanged: ((state: FaceTrackerState) => void) | null;
        /**
         * when measurement results are received
         * @param {any} results - measurement results
         */
        resultsReceived: ((results: Results) => void) | null;
        /**
         * when measurement results are received
         * @param {any} results - measurement results
         */
        constraintsUpdated: ((feedback: ConstraintFeedback, status: ConstraintStatus) => void) | null;
        /**
         * When media element size changes
         * @param {event} MediaElementResizeEvent
         */
        mediaElementResize: ((event: MediaElementResizeEvent) => void) | null;
        /**
         * When facial landmarks are updated
         * @param {drawables} Drawables
         */
        facialLandmarksUpdated: ((drawables: Drawables) => void) | null;
        /**
         * When a chunk is sent to DeepAffex
         * @param {chunkSent} ChunkSent
         */
        chunkSent: ((chunkSent: ChunkSent) => void) | null;
        /**
         * When an error occurs
         * @param {ErrorCategories} category - error category
         * @param {unknown} data - error data
         */
        error: ((category: ErrorCategories, data: unknown | WebSocketError) => void) | null;
    };
    /**
     * Initialize the Measurement SDK
     * @param {object} settings - Initialization settings
     * @returns Promise<Measurement>
     */
    static init(settings: Settings): Promise<Measurement>;
    private constructor();
    loadMask(element: SVGSVGElement): void;
    /**
     * Set settings
     * @param {Settings} newSettings
     * @returns {boolean} true if success
     */
    setSettings(newSettings: Partial<Settings>): boolean;
    /**
     * Returns version number
     * @returns {SDKVersion} version - [Web SDK, DFX Extraction Lib, Face Tracker]
     */
    getVersion(): SDKVersion;
    /**
     * Check if SIMD is supported and then download the supported MediaPipe
     * face traker assets for the runtime environment
     * It also downloads the extraction lib assets
     * @returns true if successfully download all files
     */
    downloadAssets(): Promise<boolean | undefined>;
    /**
     * Set extraction library settings
     * @param {number} numberofChunks Number of chunks for extraction library collector
     * @param {number} targetFPS Target FPS for extraction library collector
     * @param {number} chunkDurationSeconds Chunk duration in seconds for extraction library collector
     */
    setExtractionLibSettings(numberofChunks?: number, targetFPS?: number, chunkDurationSeconds?: number): void;
    /**
     * Set the action for the next chunk to LAST::PROCESS
    */
    setNextChunkAsFinal(): Promise<void>;
    startTracking(): Promise<void>;
    /**
     * Stop Face Tracker tracking frames and DFX extraction library collection
     * If the measurement is started, it will disconnect from the Web Socket as well.
     */
    stopTracking(): Promise<void>;
    destroy(): Promise<void>;
    /**
     * Reset only if the face tracker is ready and tracking
     * @returns {boolean} true if the reset was successful, false otherwise
     */
    reset(): Promise<boolean>;
    setMediaStream(mediaStream: MediaStream): Promise<void>;
    prepare(token: string, refreshToken: string, studyId: string, sdkId?: string): Promise<boolean>;
    setConstraintsConfig(override: boolean): Promise<void>;
    startMeasurement(overrideConstraints?: boolean, measurementOptions?: MeasurementOptions): Promise<void>;
    setDemographics(demographics: Demographics): void;
    setObjectFit(fit: ObjectFit): boolean;
}

export { type ChunkSent, type ConstraintFeedback, type ConstraintStatus, type ConstraintsConfig, type Demographics, type DfxPointId, type DialSection, type Drawables, type ErrorCategories, type FaceTrackerState, type IMeta, type IsoDate, type LoggerSettings, Measurement, type MeasurementOptions, type MediaElementResizeEvent, type Point, type PointGroupType, type RealtimeResultErrors, type RealtimeResultNotes, type Results, type Settings, type WebSocketError, constraintFeedback, constraintStatus, errorCategories, faceAttributeValue, faceTrackerState, realtimeResultErrors, realtimeResultNotes };
